WGS84ポリゴンの面積を平方メートルで取得するにはどうすればよいですか?


10

次の例では、ポリゴンの面積を平方度で示しています。

SELECT ST_Area(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326)) As sqm;

結果:16586.2319335938

面積を平方メートルで取得するにはどうすればよいですか?私は以下を試しました:

SELECT ST_Area(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326)),31467) As sqm;

しかし、ST_Transformが機能しないようです。次のエラーメッセージが表示されます。

ERROR:  function st_transform(geometry) does not exist
LINE 1: SELECT ST_Area(ST_Transform(ST_GeomFromText('POLYGON((871325...
                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
 ERROR: function st_transform(geometry) does not exist
SQL Status:42883
Hint:No function matches the given name and argument types. You might need to add explicit type casts.

欠落しているProjサポートは問題ではないはずです。SELECTPostGIS_full_version()を使用すると、

"POSTGIS="1.5.3" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" LIBXML="2.8.0" USE_STATS"

回答:


7

クエリの終わり近くの間違った場所に閉じかっこがあります。私はこれを試して、NaNリターンを得ました、

SELECT ST_AREA(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326),31467)) As sqm;

NaNの結果は、ポリゴンが投影の範囲外にあるためです。


それでおしまい!ありがとうございました!別に突起が900913および31467であることを持っているから:SELECT ST_AREA(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',900913),31467)) As sqm;
マーク・


2

どちらのクエリもポリゴンのSRIDを4326として定義しますが、データに基づいて、これは確かにそうではありません。SRID 4326(WGS84)は、緯度の場合は[-90,90]、経度の場合は[-180,180]に制限されています。

4326にポリゴンデータがある場合は、ST_GeogFromTextを使用する方が良い方法です。これは、データが4326にあり、地理フィーチャの測定値がメートルであることを前提としています。

有効なクエリは次のとおりです。

SELECT
ST_Area(
ST_Transform(
ST_SetSRID(
ST_GeomFromText(
'POLYGON((-98.4854749658124 29.3495134003054,-97.4374094977531 29.4150174920591,-97.2408972224919 28.4979602075071,-98.354466782305 28.4324561157534,-98.4854749658124 29.3495134003054))'
)
, 4326)
, 900913)
)

SRIDがサンプルデータの領域をカバーしていないため、31467ではなく900913に変換しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.