Как отобразить LAT / LONG многоугольника?

Aug 19 2020

У меня есть таблица с геом поля (тип: geometry)

Я хочу отображать значения polygonв широте и долготе.

Как мне это сделать ?

Я видел этот пост:

https://gis.stackexchange.com/questions/95373/convert-geometry-to-latitude-longitude-using-postgis-st-transform/95376

но функции ST_X, ST_Yтолько работает, POINTа не включены POLYGON.

Как я могу отобразить поле geom (которое содержит многоугольник) в формате широты / долготы?

Ответы

3 RubenHelsloot Aug 19 2020 at 17:15

В зависимости от желаемого результата, вполне возможно, что ST_ASGEOJSON уже делает все, что вы хотите, но в противном случае вы можете использовать ST_DUMPPOINTS для получения всех отдельных точек многоугольника.

SELECT polygon.id,
       ( SELECT ARRAY_AGG(ST_Y(geom ORDER BY path))
         FROM ST_DUMPPOINTS(polygon) AS points ) as latitudes,
       ( SELECT ARRAY_AGG(ST_X(geom ORDER BY path))
         FROM ST_DUMPPOINTS(polygon) AS points ) as longitudes
FROM polygons

вернет упорядоченные списки широт и долгот на многоугольник. Если вы хотите их объединить, используйте JSON :

SELECT polygon.id,
       ( SELECT ARRAY_AGG(
             JSON_BUILD_OBJECT(
                 'latitude', ST_Y(geom),
                 'longitude', ST_X(geom)
             ) ORDER BY path)
         )
         FROM ST_DUMPPOINTS(polygon) AS points )
FROM polygons