ポリゴンのLAT / LONGを表示するにはどうすればよいですか?

Aug 19 2020

I GEOMフィールド(タイプ:を持つテーブルがありますgeometry

polygonin lat / longの値を表示したい。

どうすればいいですか?

私はこの投稿を見ました:

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

ただし、関数はST_XST_Yのみ機能し、では機能POINTしませんPOLYGON

ジオメトリフィールド(ポリゴンを含む)を緯度/経度形式で表示するにはどうすればよいですか?

回答

3 RubenHelsloot Aug 19 2020 at 17:15

必要な出力によっては、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