如何使用sql查询计算一组地理点的距离

时间:2014-07-14 10:25:20

标签: sql oracle google-maps geo

我有一组保存在数据库中的经度和纬度,现在我想计算一段时间内的行程距离。我想在oracle 11g中写这个查询。

我的表格字段是

GeoData Table fields:

Latitude : FLOAT
Longitude: FLOAT
insert_time: TIMESTAMP(6)

我想从日期和日期传递到此查询并选择计算的距离。

提前致谢

2 个答案:

答案 0 :(得分:2)

试试吧。我认为它会对你有帮助。

"SELECT ((ACOS(SIN($latitude * PI() / 180) * SIN(Latitude * PI() / 180) + COS($latitude * PI() / 180) * COS(Latitude * PI() / 180) * COS(($longitude - Longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance`  FROM `table_name` "

其中$ latitude =>当前纬度和$经度=>目前的经度

答案 1 :(得分:0)

Atanu Mondal的解决方案几乎完美无缺。

然而我遇到了同样的问题用户1738224,我也需要以公里为单位的距离,而不是英里,所以我将公式改为

SELECT ((ACOS(ROUND(SIN($latitude * PI() / 180) * SIN(Latitude * PI() / 180) + COS($latitude * PI() / 180) * COS(Latitude * PI() / 180) * COS(($longitude - Longitude) * PI() / 180), 35)) * 180 / 3.141592653 ) * 60 * 1.8531) AS Distance FROM `table_name` 

希望这有帮助。