这是我第一次创建GIS查询。在我的数据库的一个表中,有一个点类型的列。每条记录都是一台ATM机。我想编写一个查询来获取靠近我位置1公里范围内的ATM机。如何在SQL查询中使用ST_DWithin查找记录?
答案 0 :(得分:4)
SELECT *
FROM atm_finder
WHERE ST_Distance(ST_Transform(ST_GeomFromText('POINT([Lon] [Lat])',4326),26986),ST_Transform(location,26986)) <= 1000
[Lon]&amp; [Lat] - 点的GPS坐标。但是,只要您在第一次使用时使用POINT类型:
SELECT AddGeometryColumn('atm_finder', 'location', 4326, 'POINT', 2);
当然在此之前你应该重命名字段'location'(为了不丢失数据)并用这些数据填充新字段。
答案 1 :(得分: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
顺便说一下,创建表格的方式对我来说很奇怪......