2010-11-14 4 views
1

On suppose ces 4 valeurs:Comment puis-je calculer la distance et le relèvement en utilisant la latitude et la longitude?

 double lat1 = ToRadians(53.14722222222222); 
     double lon1 = ToRadians(-1.8494444444444447); 
     double lat2 = ToRadians(52.20444444444445); 
     double lon2 = ToRadians(-0.14055555555555554); 

Je calcule dans le sens Google map get, je me suis environ 181 km, mais sur ce site (http://www.movable-type.co.uk/scripts/latlong .html) il a environ 170 km.

Dans ma source, j'utilise java et C# pour implémenter cette fonction, quand je la calcule, j'ai environ 155 km.

pourquoi ils ne sont pas équivalents?

Avez-vous une fonction qui peut calculer ces 2 valeurs avec précision?

Répondre

1

La formule de Haversine sur le site Web est raisonnablement précise "à vol d'oiseau". Vous ne dites pas comment vous avez utilisé Google Maps pour calculer la distance, mais si vous avez simplement mis dans les valeurs et lui a demandé de calculer un itinéraire, il utiliserait la distance de conduite (suivant les routes) qui serait plus longue. Si votre implémentation de la formule de Haversine trouve une réponse différente de celle du site Web, alors vous ou ils l'avez implémentée de manière incorrecte. Vous pourriez trouver another web site pour vérifier votre réponse contre pour voir lequel.

Vous pouvez trouver une implémentation dans C# here.

0

Sur Google Earth, la valeur est de 155,92 km. Donc, il est d'accord avec votre résultat.

Google Earth utilise un calcul Great Circle Distance, qui prend en compte le fait que la Terre est une Sphère. Je ne connais pas les deux autres sources.

Je conserverais votre implémentation actuelle.

Questions connexes