Как отобразить LAT / LONG многоугольника?
У меня есть таблица с геом поля (тип: 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 (которое содержит многоугольник) в формате широты / долготы?
Ответы
В зависимости от желаемого результата, вполне возможно, что 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