我想用它们的坐标计算两个位置之间的距离。我见过这个question,它有不同语言的实现。由于我是prolog的初学者,如果任何人都可以构建一个可以执行此类操作的prolog子句,那将非常有用。
我发现这个python函数更简单:
from math import cos, asin, sqrt
def distance(lat1, lon1, lat2, lon2):
p = 0.017453292519943295
a = 0.5 - cos((lat2 - lat1) * p)/2 + cos(lat1 * p) * cos(lat2 * p) * (1 - cos((lon2 - lon1) * p)) / 2
return 12742 * asin(sqrt(a))
答案 0 :(得分:1)
我自己制作了谓词。它在下面给出:
distance(Lat1, Lon1, Lat2, Lon2, Dis):-
P is 0.017453292519943295,
A is (0.5 - cos((Lat2 - Lat1) * P) / 2 + cos(Lat1 * P) * cos(Lat2 * P) * (1 - cos((Lon2 - Lon1) * P)) / 2),
Dis is (12742 * asin(sqrt(A))).
运行坐标的样本(23.700042,90.452103)和(23.767968,90.425657);输出是:
?- main.
Distance is: 8.01840452822046
true.