Comment afficher LAT / LONG du polygone?

Aug 19 2020

J'ai une table avec le champ geom (type: geometry)

Je veux afficher les valeurs de polygonen lat / long.

Comment puis-je le faire ?

J'ai vu ce post:

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

mais les fonctions ST_X, ST_Yne fonctionnent que sur POINTet pas sur POLYGON.

Comment puis-je afficher le champ geom (qui contient un polygone) au format lat / long?

Réponses

3 RubenHelsloot Aug 19 2020 at 17:15

En fonction de la sortie souhaitée, il se peut que ST_ASGEOJSON fasse déjà tout ce que vous voulez, mais sinon, vous pouvez utiliser ST_DUMPPOINTS pour obtenir tous les points individuels du polygone.

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

renverrait des listes ordonnées de latitudes et de longitudes par polygone. Si vous souhaitez les combiner, utilisez 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