Voici mon essai, c'est juste un extrait de mon 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;
J'utilise ces formules pour obtenir la latitude et la longitude:
x = Deg + (Min + Sec / 60) / 60)
java
math
latitude-longitude
m4design
la source
la source
a
etc
? S'agit-il des côtés d'un triangle rectangle avec des étiquettes traditionnellesa
,b
etc
?Voici une fonction Java qui calcule la distance entre deux points lat / long , affichée ci-dessous, juste au cas où elle disparaîtrait à nouveau.
la source
Remarque: cette solution ne fonctionne que pour les courtes distances.
J'ai essayé d'utiliser la formule publiée de dommer pour une application et j'ai trouvé qu'elle fonctionnait bien sur de longues distances, mais dans mes données, j'utilisais toutes les très courtes distances, et le message de dommer a très mal fonctionné. J'avais besoin de vitesse, et les calculs géographiques plus complexes fonctionnaient bien mais étaient trop lents. Donc, dans le cas où vous avez besoin de vitesse et que tous les calculs que vous faites sont courts (peut-être <100 m environ). J'ai trouvé que cette petite approximation fonctionnait très bien. il suppose que le monde est plat avec vous, alors ne l'utilisez pas sur de longues distances, il fonctionne en approximant la distance d'une seule latitude et longitude à la latitude donnée et en renvoyant la distance de Pythagore en mètres.
la source
Futurs lecteurs qui tombent sur cet article SOF.
Évidemment, la question a été posée en 2010 et c'est maintenant 2019. Mais elle revient tôt dans une recherche sur Internet. La question originale n'écarte pas l'utilisation de la bibliothèque tierce (lorsque j'ai écrit cette réponse).
et
https://mvnrepository.com/artifact/org.apache.lucene/lucene-spatial/8.2.0
Veuillez lire la documentation sur "SloppyMath" avant de plonger!
https://lucene.apache.org/core/8_2_0/core/org/apache/lucene/util/SloppyMath.html
la source
Voici une page avec des exemples javascript pour différents calculs sphériques. Le tout premier sur la page devrait vous donner ce dont vous avez besoin.
http://www.movable-type.co.uk/scripts/latlong.html
Voici le code Javascript
Où «d» tiendra la distance.
la source
la source
Beaucoup de bonnes réponses ont été fournies, mais j'ai trouvé quelques lacunes en termes de performances, alors laissez-moi vous proposer une version avec les performances à l'esprit. Chaque constante est précalculée et des variables x, y sont introduites pour éviter de calculer deux fois la même valeur. J'espère que ça aide
la source
Réponse légèrement améliorée de @David George:
La fonction de distance est la même, mais j'ai créé une petite fonction wrapper, qui prend 2 objets Location . Grâce à cela, je n'utilise la fonction de distance que si les deux emplacements ont réellement de l'altitude, car parfois ils n'en ont pas. Et cela peut conduire à des résultats étranges (si l'emplacement ne connaît pas son altitude 0 sera renvoyée). Dans ce cas, je reviens à la fonction distanceTo classique .
la source
Cet article de wikipedia fournit les formules et un exemple. Le texte est en allemand, mais les calculs parlent d'eux-mêmes.
la source