sql >> Databáze >  >> RDS >> PostgreSQL

Jak převést polygonová data na čárové segmenty pomocí PostGIS

Obecně platí, že převod polygonu na čáru nemusí být přímočarý, protože existuje žádné individuální mapování a různé prvky mapy polygonů na různé čáry (vnější prstenec, vnitřní prstence atd.).

Vzhledem k tomu budete muset každou z nich rozdělit samostatně podle možného přístupu, jako je tento:

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;

v závislosti na tom, jaká data polygonu jsou uložena v mypolygontable , možná budete chtít vypsat nejen hranici (jako výše pomocí ST_Boundary ), ale i další prvky. Výše uvedený kód s podrobnějším přehledem je převzat ze seznamu uživatelů postgis:Rozdělit mnohoúhelník na N linestring

Existuje také obecný přístup k problému vysvětlený v Rozložení čárového řetězce nebo polygonu na jednotlivé vektory v PostGIS



  1. Získávání denních počtů událostí, které se nestávají každý den

  2. PHP Calculate Number of downline v binárním stromu

  3. Aplikace ve stylu průzkumu kolejí - Zobrazit všechny odpovědi na možnost

  4. MySQL:proč tento dotaz max. N členů na skupinu funguje?