Como exibir LAT / LONG do polígono?
Eu tenho uma tabela com o campo geom (tipo: geometry)
Desejo exibir os valores de polygonem latitude / longitude.
Como eu posso fazer isso ?
Eu vi esta postagem:
https://gis.stackexchange.com/questions/95373/convert-geometry-to-latitude-longitude-using-postgis-st-transform/95376
mas as funções ST_X, ST_Ysó funciona em POINTe não sobre POLYGON.
Como posso exibir o campo geom (que contém o polígono) no formato lat / long?
Respostas
Dependendo da saída que você deseja, pode muito bem ser que ST_ASGEOJSON já faça tudo o que você deseja, mas caso contrário, você pode usar ST_DUMPPOINTS para obter todos os pontos individuais do polígono.
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
retornaria listas ordenadas de latitudes e longitudes por polígono. Se você quiser combiná-los, use 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