2017-03-25 11 views
0

Ich möchte den Abstand zwischen zwei Standorten mit ihren Koordinaten berechnen. Ich habe dieses question gesehen und es hat Implementierungen in verschiedenen Sprachen. Da ich ein Anfänger im Prolog bin, wäre es sehr hilfreich, wenn jemand eine Prolog-Klausel erstellen könnte, die solche Operationen ausführen kann.Prolog: Berechnen der Entfernung zwischen zwei Koordinaten

Ich habe diese Python-Funktion einfacher gefunden:

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

Antwort

1

Ich habe das Prädikat selbst gemacht.

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))). 

Eine Probe Lauf für Koordinaten (23.700042,90.452103) und (23,767968, 90,425657): Es wird unten gegeben der Ausgang ist:

?- main. 
Distance is: 8.01840452822046 
true. 

ich ein Online-gegeben haben, unter dem zeigt Prologs Ergebnis ausreichend genau ist Entfernungsrechner Ergebnis koordinieren. Online coordinate distance calculator

Verwandte Themen