【发布时间】:2016-01-04 14:52:34
【问题描述】:
我试图在给定经度和纬度的情况下,返回半径为 1 英里的表(具有 lon 和 lat 属性)中的所有记录。 我在想我应该用 ST_Dwithin 和 ST_MakePoint 做点什么,但不知道如何使用它。
这是我到目前为止所拥有的:
def get_nearby(longitude, latitude)
Device.where(ST_DWithin(ST_MakePoint(longitude, latitude, 1.60934)))
end
[更新] 所以,我的最终功能是:
scope :nearby_devices, ->(lon,lan) { where(
<<-SQL,
ST_DWithin(
ST_SetSRID(ST_MakePoint(longitude,latitude), 4326),
ST_SetSRID(ST_MakePoint(?, ?), 4326),
1.60934
)
SQL
lon,lan)}
我的模型有两个浮点属性:longitude 和 latitude。
【问题讨论】:
标签: ruby-on-rails postgis