¿Cómo mostrar LAT / LONG de polígono?

Aug 19 2020

Tengo una tabla con el campo geom (tipo: geometry)

Quiero mostrar los valores de polygonen lat / long.

Cómo puedo hacerlo ?

Vi esta publicación:

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

pero las funciones ST_X, ST_Ysolo funcionan POINTy no POLYGON.

¿Cómo puedo mostrar el campo geom (que contiene polígono) en formato lat / long?

Respuestas

3 RubenHelsloot Aug 19 2020 at 17:15

Dependiendo de la salida que desee, es muy posible que ST_ASGEOJSON ya haga todo lo que desea, pero de lo contrario, puede usar ST_DUMPPOINTS para obtener todos los puntos individuales del 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

devolvería listas ordenadas de latitudes y longitudes por polígono. Si desea combinarlos, 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