PostGISの2つのジオメトリ間の距離計値を取得するにはどうすればよいですか?


13

PostGISでの距離の計算について簡単な質問があります。

2つのジオメトリ間の距離を取得したいと思います。私はこのsidを使用しています:4269メートルで私が今していることはこれです:ST_Distance((a.geom,b.geom)) FROM ...しかし、私は度で結果を得ています。地理を扱うべきだと思いますが、どのようにジオムを地理にキャストできますか?(a.geom :: geography)で試しましたが、エラーが発生しています。

結果をメートル単位で取得するにはどうすればよいですか?

ありがとうございました

回答:


20

ST_Distance_Sphereあなたはそれを達成することができます:

ST_Distance_Sphere(a.geom,b.geom)

エラー:la fonction st_distance_spheroid(geometry、geometry)n'existe pas ...私はちょうど追加しました(a.geom、b.geom、 'SPHEROID ["WGS 84"、6378137,298.257223563]')そして今はうまく機能していますあなたはとても!
-YassineGeoma

1
さて、別の関数st_distance_spheroidを使用しました。st_distance_spheroidは、st_distance_sphereよりも低速ですが、より正確です。
フランシスコバルデス

2つのジオメトリ間の最大距離はどうですか?
vasilakisfil

最大距離はearth_radius-minimum_distanceで、反対方向に移動します。(見出し+180º)
フランシスコバルデス

1
@ don-prog 3Dおよび2Dポイントで動作します:SELECT ST_Distance_Sphere(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'), ST_GeomFromEWKT('SRID=4326;POINT(-72.1260 42.45 15)'))
フランシスコバルデス

3

SRID 4269(NAD 83)の単位はメートルではありません。これは測地図法です。つまり、座標は度(地理座標)です。

pacofvfの答えはメートル単位の距離を示しますが、実際にメートル単位で指定された初期座標を持っている場合は、投影座標系を使用する必要があります。おそらく北米では、マップする地域に応じてさまざまな投影法を持つState Plane Coordinate Systemのようなものが必要です。

私はあなたが緯度/経度の値を使用しているだけだと思う​​ので、おそらくこの2番目の段落は関係ありません- ST_Distance_Sphere上記の関数を使用してください。

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