ST_Distance()で使用される単位は何ですか?


24

ユニットが何から返されているフロートののかしらST_Distance

ドキュメントには次のように書かれています:

...投影された単位の2つのジオメトリ間のデカルト最小距離(空間参照に基づく)。

これらの予測単位は何ですか?

ジオメトリは次のフィールドに保存されますgeometry(Point,4326)

回答:


36

これは時間の経過とともにPostGISリストで最もよくある質問だと思います:-)

データがSRID 4326にあり、geometrytype を使用する場合、結果には意味がありません。度単位です。

結果をメートル単位で取得するには、geography入力してキャストするだけでST_Distance、代わりに大円に沿って距離を計算し、メートル単位で返します。

geometry(Point,4326)::geography

別のオプションは、適切な単位に基づいてデータをローカル投影に投影することです。その後、答えはそのユニットになります。


2
次に、テーブル内の2つの行の間の距離を検索する例を示します。SELECT ST_Distance(a.geom :: geography、b.geom :: geography)FROM pure_gis a、pure_gis b WHERE a.id = '1' AND b.id = '2';
ブライアンマッコール

4

http://postgis.net/docs/ST_Distance.htmlから

-ジオメトリの例-平面度4326の単位はWGS 84 long lat unit = degrees

ST_Distance2つのジオメトリが指定されている場合、それらのジオメトリは実際にはデカルト(または平面)座標にあると想定されます。したがって、単位は座標の単位と同じです。通常はメートルまたはフィートです。

あなたの問題は、空間参照システム4326が実際に(角度の)地理座標(経度と緯度)を使用しているため、結果が(やや意味のない)度になっているようです。


1
結果はまったく意味がなく、多少でもあります。
ポールラムジー

@PaulRamsey。それらは、PlateCaree投影で「測定」距離を取得するものと同じではないでしょうか?
マーティンF

PCでは、リニアユニットが返され、少なくとも「OK、これらのユニットは深刻な歪みの影響を受けやすいことを知っています」と言うことができます。「度」を取り戻すと、人々は「ああ、私はここに角の距離があるので、2Rを掛けるだけで直線距離になります」と考えたくなるかもしれません。ユニットは、潜在的にさらにひどく誤解を招くような悪い測定を行います。そしてPCは、距離を維持、方向性を保存しないdoes't ...それは投影名を取得し、なぜ私にはわからないので恐ろしいですエリアを保存しません...
ポール・ラムジー

PCは、赤道に沿って、赤道に垂直な距離を保持します。必要なラジアンと半径の変換(確かに、非常に大きな不便)を除いて、4326ジオメトリでST_Distanceを使用した結果には、投影ジオメトリでST_Distanceを使用するときに考慮しなければならない欠点と利点の一般的な混合があります。おそらく、より良い議論は(「やや」対「完全に」無意味ではない)「ST_DistanceとST_Areaが4326のジオメトリを与えられた結果を返すことさえ許されるべきですか?」
マーティンF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.