Comment afficher LAT / LONG du polygone?
J'ai une table avec le champ geom (type: geometry
)
Je veux afficher les valeurs de polygon
en 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_Y
ne fonctionnent que sur POINT
et pas sur POLYGON
.
Comment puis-je afficher le champ geom (qui contient un polygone) au format lat / long?
Réponses
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