Hier ist mein Versuch, es ist nur ein Ausschnitt aus meinem Code:
final double RADIUS = 6371.01;
double temp = Math.cos(Math.toRadians(latA))
* Math.cos(Math.toRadians(latB))
* Math.cos(Math.toRadians((latB) - (latA)))
+ Math.sin(Math.toRadians(latA))
* Math.sin(Math.toRadians(latB));
return temp * RADIUS * Math.PI / 180;
Ich benutze diese Formeln, um den Breiten- und Längengrad zu ermitteln:
x = Deg + (Min + Sec / 60) / 60)
java
math
latitude-longitude
m4design
quelle
quelle
a
undc
? Sind das die Seiten eines rechtwinkligen Dreiecks mit traditionellen Etikettena
,b
undc
?Hier ist eine Java-Funktion, die den Abstand zwischen zwei Lat / Long-Punkten berechnet (siehe unten), für den Fall, dass er wieder verschwindet.
quelle
Hinweis: Diese Lösung funktioniert nur für kurze Entfernungen.
Ich habe versucht, die von dommer veröffentlichte Formel für eine Anwendung zu verwenden, und festgestellt, dass sie für große Entfernungen gut funktioniert, aber in meinen Daten habe ich alle sehr kurzen Entfernungen verwendet, und die von dommer veröffentlichte Formel hat sich sehr schlecht bewährt. Ich brauchte Geschwindigkeit und die komplexeren Geo-Berechnungen funktionierten gut, waren aber zu langsam. Für den Fall, dass Sie Geschwindigkeit benötigen und alle Berechnungen, die Sie durchführen, kurz sind (vielleicht <100 m oder so). Ich fand diese kleine Annäherung großartig. Es wird davon ausgegangen, dass die Welt flach ist. Verwenden Sie sie also nicht für große Entfernungen. Sie approximiert die Entfernung eines einzelnen Breiten- und Längengrads bei der angegebenen Breite und gibt die pythagoreische Entfernung in Metern zurück.
quelle
Zukünftige Leser, die über diesen SOF-Artikel stolpern.
Offensichtlich wurde die Frage im Jahr 2010 und jetzt im Jahr 2019 gestellt. Aber sie taucht früh in einer Internetsuche auf. Die ursprüngliche Frage schließt die Verwendung von Drittanbieter-Bibliotheken nicht aus (als ich diese Antwort schrieb).
und
https://mvnrepository.com/artifact/org.apache.lucene/lucene-spatial/8.2.0
Bitte lesen Sie die Dokumentation zu "SloppyMath", bevor Sie eintauchen!
https://lucene.apache.org/core/8_2_0/core/org/apache/lucene/util/SloppyMath.html
quelle
Hier ist eine Seite mit Javascript-Beispielen für verschiedene sphärische Berechnungen. Der allererste auf der Seite sollte Ihnen das geben, was Sie brauchen.
http://www.movable-type.co.uk/scripts/latlong.html
Hier ist der Javascript-Code
Wo 'd' den Abstand halten wird.
quelle
quelle
Es wurden viele gute Antworten gegeben, aber ich habe einige Leistungsmängel festgestellt. Lassen Sie mich daher eine Version anbieten, die die Leistung berücksichtigt. Jede Konstante wird vorberechnet und x, y-Variablen werden eingeführt, um zu vermeiden, dass derselbe Wert zweimal berechnet wird. Ich hoffe es hilft
quelle
Leicht verbesserte Antwort von @David George:
Die Entfernungsfunktion ist dieselbe, aber ich habe eine kleine Wrapper-Funktion erstellt, die 2 Standortobjekte akzeptiert. Aus diesem Grund verwende ich die Entfernungsfunktion nur, wenn beide Standorte tatsächlich eine Höhe haben, da dies manchmal nicht der Fall ist. Und es kann zu seltsamen Ergebnissen führen (wenn der Standort nicht weiß, dass seine Höhe 0 zurückgegeben wird). In diesem Fall greife ich auf die klassische Funktion distanceTo zurück .
quelle
Dieser Wikipedia- Artikel enthält die Formeln und ein Beispiel. Der Text ist in deutscher Sprache, aber die Berechnungen sprechen für sich.
quelle