sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan konverteres polygondata til linjesegmenter ved hjælp af PostGIS

Generelt er det måske ikke ligetil at konvertere polygon til linje, fordi der er ingen en-til-en kortlægning og forskellige elementer af polygon kort til forskellige linjestrenge (ydre ring, indvendige ringe osv.).

I betragtning af det bliver du nødt til at opdele hver af dem separat ved at følge en mulig tilgang som denne:

SELECT ST_AsText( ST_MakeLine(sp,ep) )
FROM
   -- extract the endpoints for every 2-point line segment for each linestring
   (SELECT
      ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,
      ST_PointN(geom, generate_series(2, ST_NPoints(geom)  )) as ep
    FROM
       -- extract the individual linestrings
      (SELECT (ST_Dump(ST_Boundary(geom))).geom
       FROM mypolygontable
       ) AS linestrings
    ) AS segments;

afhængigt af hvilke polygondata der er gemt i mypolygontable , vil du måske ikke kun dumpe grænsen (som ovenfor ved at bruge ST_Boundary ), men også andre elementer. Ovenstående kode med mere detaljeret oversigt er taget fra postgis-brugerlisten:Opdel en polygon til N linjestrenge

Der er også en generisk tilgang til problemet forklaret i Eksplosion af en linjestreng eller polygon i individuelle vektorer i PostGIS



  1. Flere datatyper array i PostgreSQL

  2. Sådan fungerer SHOW COLLATION i MariaDB

  3. Linux shell script til database backup

  4. Hvordan ekko tilfældige rækker fra databasen?