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