Postgis ST_DIstance查询返回不准确的结果

时间:2015-04-16 08:16:18

标签: database postgresql google-maps geospatial postgis

我使用以下查询从postgresql DB中检索记录

@services = Service.select("*, ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lat lon)', 4326)) as st_distance").order("st_distance").limit(10)
  • services.lon_lat是一种地理类型

在我的应用实施“获取路线”方面后,我注意到上述查询返回的距离不准确以及Google地图中的路线。

重要的是要注意我确实期望稍微出现差异,考虑到目的地的道路可能不是一条直线,但似乎不准确是另一种方式,例如此查询中的第一个返回项目表示其 216km 离开谷歌地图说 181km ,第10次说 247km 与谷歌地图相比 203km ...距离越远不准确度越大......如果我选择返回那么多人说 424km 298km 相比,则返回第46项。

非常感谢任何有关此主题的指导或帮助......

正在使用的坐标示例Lat:53.199426 Lon:-8.132368在DB中,我要求距离Lat:53.300929 Lon:-6.179949 ...这是查询216km,谷歌181km

1 个答案:

答案 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)