同じジオメトリテーブルの2つのポイントに対する単純なPostGIS ST_Distanceクエリ?


11

注:この質問は、最初にStackoverflowで公開されました。

ジオメトリテーブルpoints_tableSRID 4326いくつかのポイントがあります。

このテーブルから一対のポイント(フィーチャ)間の距離を見つける必要があります。

で1つのポイントを選択しid = X、別のポイントでを選択id = Yし、ST_Distance関数でそれらの間の距離を見つけたいと思います。

データベースからこれらの2つのポイントを照会する方法を知っています。

select * from points_table where id = X or id = Y;

しかし、このクエリは結果を返します。2つのパラメータを取るST_Distanceため、に渡す方法がわかりませんST_Distance

私が試してみました Select ST_Distance(select the_geom from points_table where id = X or id = Y);

しかし、明らかに間違っています。

テーブルから2つのジオメトリポイント(フィーチャ)間の距離を見つけるにはどうすればよいですか?

PSこれまでに見つけたすべての例は、ST_Distance関数の引数にハードコードされたポイントを使用したST_Distanceの使用法を示しています。ST_Distanceを使用して同じテーブルの2つのポイント間の距離を計算する例は見つかりませんでした。

回答:


27

別のエイリアスを指定して、テーブルを2回参照する必要があります。

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.