我使用以下查询从postgresql DB中检索记录
@services = Service.select("*, ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lat lon)', 4326)) as st_distance").order("st_distance").limit(10)
在我的应用实施“获取路线”方面后,我注意到上述查询返回的距离不准确以及Google地图中的路线。
重要的是要注意我确实期望稍微出现差异,考虑到目的地的道路可能不是一条直线,但似乎不准确是另一种方式,例如此查询中的第一个返回项目表示其 216km 离开谷歌地图说 181km ,第10次说 247km 与谷歌地图相比 203km ...距离越远不准确度越大......如果我选择返回那么多人说 424km 与 298km 相比,则返回第46项。
非常感谢任何有关此主题的指导或帮助......
正在使用的坐标示例Lat:53.199426 Lon:-8.132368在DB中,我要求距离Lat:53.300929 Lon:-6.179949 ...这是查询216km,谷歌181km
答案 0 :(得分:2)
POINT坐标的顺序为经度,纬度。
此:
@services = Service.select("*, ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lat lon)', 4326)) as st_distance").order("st_distance").limit(10)
应该是:
@services = Service.select("*, ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lon lat)', 4326)) as st_distance").order("st_distance").limit(10)