4

GIS クエリを作成するのはこれが初めてです。データベースの 1 つのテーブルに、ポイント タイプの列があります。各レコードは 1 台の ATM マシンです。私の場所から 1 km の範囲内にある ATM マシンを取得するためのクエリを書きたいのですが、SQL クエリで ST_DWithin を使用してレコードを検索するにはどうすればよいですか?

4

2 に答える 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 に答える