我有一组保存在数据库中的经度和纬度,现在我想计算一段时间内的行程距离。我想在oracle 11g中写这个查询。
我的表格字段是
GeoData Table fields:
Latitude : FLOAT
Longitude: FLOAT
insert_time: TIMESTAMP(6)
我想从日期和日期传递到此查询并选择计算的距离。
提前致谢
答案 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`
希望这有帮助。