PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да конвертирате полигонални данни в линейни сегменти с помощта на PostGIS

Като цяло преобразуването на многоъгълник в линия може да не е лесно, защото има без съпоставяне един към един и различни елементи от многоъгълника се преобразуват в различни линейни низове (външен пръстен, вътрешни пръстени и т.н.).

Имайки предвид това, ще трябва да разделите всяко от тях поотделно, като следвате възможен подход по следния начин:

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;

в зависимост от това какви многоъгълни данни се съхраняват в mypolygontable , може да искате да изхвърлите не само границата (както по-горе, използвайки ST_Boundary ), но и други елементи. Кодът по-горе с по-подробен преглед е взет от списъка на postgis-users:Разделяне на многоъгълник на N реда

Съществува и общ подход към проблема, обяснен в Разглобяване на линия или многоъгълник в отделни вектори в 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. Съхраняване и сравняване на уникални комбинации

  2. heroku Postgres грешка - операторът не съществува клеймо за време без часова зона =цяло число

  3. Свързване с Heroku Postgres от Spring Boot

  4. Pandas - write_frame към sqlite - datetime64[ns]

  5. PostgreSQL:как да инсталирате разширение plpythonu