Obtenir lat/long, compte tenu des point, la distance et le relèvement

Donné un point existant en lat/long, la distance (en KM) et le palier (en degrés converti en radians), je voudrais calculer la nouvelle lat/long. Cette site les cultures en place, encore et encore, mais j'ai juste ne peut pas obtenir la formule de travailler pour moi.

Les formules que de prendre le lien ci-dessus sont:

lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(θ))

lon2 = lon1 + atan2(sin(θ)*sin(d/R)*cos(lat1), cos(d/R)−sin(lat1)*sin(lat2))

La formule ci-dessus est pour MSExcel où-

asin          = arc sin()   
d             = distance (in any unit)   
R             = Radius of the earth (in the same unit as above)  
and hence d/r = is the angular distance (in radians)  
atan2(a,b)    = arc tan(b/a)  
θ is the bearing (in radians, clockwise from north);  

Voici le code que j'ai obtenu en Python.

import math

R = 6378.1 #Radius of the Earth
brng = 1.57 #Bearing is 90 degrees converted to radians.
d = 15 #Distance in km

#lat2  52.20444 - the lat result I'm hoping for
#lon2  0.36056 - the long result I'm hoping for.

lat1 = 52.20472 * (math.pi * 180) #Current lat point converted to radians
lon1 = 0.14056 * (math.pi * 180) #Current long point converted to radians

lat2 = math.asin( math.sin(lat1)*math.cos(d/R) +
             math.cos(lat1)*math.sin(d/R)*math.cos(brng))

lon2 = lon1 + math.atan2(math.sin(brng)*math.sin(d/R)*math.cos(lat1),
                     math.cos(d/R)-math.sin(lat1)*math.sin(lat2))

print(lat2)
print(lon2)

- Je obtenir

lat2 = 0.472492248844 
lon2 = 79.4821662373
  • Quel est le problème?
  • Je recevais une réponse qui n'a aucun sens. La raison pour laquelle il n'a pas de sens parce que je n'étais pas la conversion de l'réponses degrés. Le Code a changé et inclus dans le post original comme une modification.
  • Il vous suffit de soumettre votre modifier, à titre de réponse, et d'accepter cette réponse, pour le rendre plus clair le fait que vous avez résolu votre problème. Sinon, il en sera de vous pénaliser pour laisser une question en suspens, le rendant légèrement plus susceptibles que les futurs utilisateurs ne sera pas la peine de répondre à vos questions.
  • Vous obtiendrez une meilleure précision et des résultats si vous utilisez numpy objets.
  • merci pour les conseils.
InformationsquelleAutor David M | 2011-08-28