sql >> Database >  >> RDS >> PostgreSQL

Hoe polygoongegevens naar lijnsegmenten te converteren met PostGIS

Over het algemeen is het converteren van polygoon naar lijn niet eenvoudig omdat er is geen één-op-één mapping en verschillende elementen van polygoon worden toegewezen aan verschillende lijnen (buitenring, binnenringen, enz.).

Als u dat in overweging neemt, moet u elk van deze afzonderlijk splitsen volgens een mogelijke benadering als volgt:

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;

afhankelijk van welke polygoongegevens zijn opgeslagen in mypolygontable , wilt u misschien niet alleen de grens dumpen (zoals hierboven met behulp van ST_Boundary ) maar ook andere elementen. De bovenstaande code met meer gedetailleerd overzicht is afkomstig uit de postgis-users lijst:Een polygoon splitsen in N lijnstrings

Er is ook een algemene benadering van het probleem dat wordt uitgelegd in Een lijnstring of polygoon exploderen in individuele vectoren in PostGIS



  1. MYSQL/PHP vind het meest voorkomende item dat geassocieerd wordt met een bepaald item

  2. Postgres Volgende/Vorige rij SQL Query

  3. Hoe het weeknummer van een datum te extraheren in PostgreSQL

  4. Hoe twee kolommen in sql samen te voegen en weer te geven in een apart record