如何显示多边形的纬度/经度?

问题描述

我有一个带有geom字段的表格(类型:geometry

我想以经/长显示polygon的值。

我该怎么办?

我看到了这篇文章

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

但是功能ST_XST_Y仅在POINT上有效,而在polyGON上无效。

如何以经/长格式显示geom字段(包含多边形)?

解决方法

取决于您想要的输出,很可能ST_ASGEOJSON已经完成了您想要的一切,但是否则,您可以使用ST_DUMPPOINTS来获取多边形的所有单个点。

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

将返回每个多边形的经度和纬度的有序列表。 如果要合并,请使用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