Como exibir LAT / LONG do polígono?

Aug 19 2020

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

3 RubenHelsloot Aug 19 2020 at 17:15

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