4

这是我第一次创建 GIS 查询。在我的数据库的一个表中,有一列带有点类型。每条记录是一台 ATM 机。我想编写一个查询来获取我所在位置附近 1 公里范围内的 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

其中 [Lon] & [Lat] - 点的 GPS 坐标。但就您第一次使用 POINT 类型而言:

SELECT AddGeometryColumn('atm_finder', 'location', 4326, 'POINT', 2);

当然,在此之前,您应该重命名字段“位置”(为了不丢失数据)并用这些数据填充新字段。

于 2012-04-12T21:44:02.900 回答
0

我不太清楚 ST_DWithin 如何与两点一起使用......

类似的东西。

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 回答