ポリゴンのLAT / LONGを表示するにはどうすればよいですか?
Aug 19 2020
I GEOMフィールド(タイプ:を持つテーブルがありますgeometry
)
polygon
in lat / longの値を表示したい。
どうすればいいですか?
私はこの投稿を見ました:
https://gis.stackexchange.com/questions/95373/convert-geometry-to-latitude-longitude-using-postgis-st-transform/95376
ただし、関数はST_X
でST_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