GIS クエリを作成するのはこれが初めてです。データベースの 1 つのテーブルに、ポイント タイプの列があります。各レコードは 1 台の ATM マシンです。私の場所から 1 km の範囲内にある ATM マシンを取得するためのクエリを書きたいのですが、SQL クエリで ST_DWithin を使用してレコードを検索するにはどうすればよいですか?
質問する
5336 次
2 に答える
4
SELECT *
FROM atm_finder
WHERE ST_Distance(ST_Transform(ST_GeomFromText('POINT([Lon] [Lat])',4326),26986),ST_Transform(location,26986)) <= 1000
Where [Lon] & [Lat] - ポイントの GPS 座標。しかし、最初に POINT タイプを使用した限り、次のように使用します。
SELECT AddGeometryColumn('atm_finder', 'location', 4326, 'POINT', 2);
もちろん、その前に、フィールド「場所」の名前を変更し (データを失わないようにするため)、新しいフィールドにこのデータを入力する必要があります。
于 2012-04-12T21:44:02.900 に答える
0
ST_DWithin を 2 点で使用する方法がよくわかりません...
そんな感じ 。
select atm.id
from atm_finder atm
where ST_Distance(<your location>, atm.location) <= 1000
//1000 = meters, works fine with geography types
//have to check your projection with geometry types
ちなみに、あなたのテーブルの作成方法は私には奇妙に見えます...
于 2012-04-12T16:58:24.077 に答える