PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przekonwertować dane wielokątów na segmenty linii za pomocą PostGIS

Ogólnie rzecz biorąc, konwersja wielokąta na linię może nie być prosta, ponieważ jest brak mapowania jeden do jednego i różne elementy mapowania wielokątów na różne ciągi liniowe (pierścień zewnętrzny, pierścienie wewnętrzne itp.).

Biorąc to pod uwagę, musisz podzielić każdy z nich osobno, stosując możliwe podejście takie jak to:

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;

w zależności od tego, jakie dane wielokątów są przechowywane w mypolygontable , możesz chcieć zrzucić nie tylko granicę (jak powyżej, używając ST_Boundary ), ale także inne elementy. Powyższy kod z bardziej szczegółowym przeglądem pochodzi z listy postgis-users:Podziel wielokąt na N ciągów liniowych

Istnieje również ogólne podejście do problemu wyjaśnione w Rozbijanie ciągu linii lub wielokąta na pojedyncze wektory w PostGIS



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rekordy oparte na kursorach w PostgreSQL

  2. Grupuj SQL według zakresu dat

  3. Postgresql :Dołącz element w obiektach tablicy json

  4. SQL :Utwórz pełny rekord z 2 tabel

  5. Agreguj funkcje w wielu kolumnach w postgresie