Calcul de la nouvelle longitude, latitude à partir de l'ancien + n mètres
Je veux créer 2 nouveaux longitude et 2 nouvelles latitudes à partir d'une coordonnée et une distance en mètres, je veux créer une belle boîte englobante d'un certain point. Sa petite échelle et Max 1500meters + et 1500meter -. Donc c'est pour une partie d'une ville, Je ne pense pas que la courbe de la terre doit être prise en compte.
J'ai Donc 50.0452345(x) et 4.3242234(y) et je veux savoir x+500meter, x-500meter, y-500meter, y+500meter
J'ai trouvé beaucoup d'algorithmes mais presque tous semblent traiter avec la distance entre les points.
4 réponses
, Le nombre de kilomètres par degré de longitude est d'environ
(2*pi/360) * r_earth * cos(theta)
Où theta
est la latitude en degrés et r_earth
est d'environ 6378 km.
Le nombre de kilomètres par degré de latitude est approximativement le même à tous les endroits, environ
(2*pi/360) * r_earth = 111 km / degree
Donc vous pouvez faire:
new_latitude = latitude + (dy / r_earth) * (180 / pi);
new_longitude = longitude + (dx / r_earth) * (180 / pi) / cos(latitude * pi/180);
Tant Que dx
et dy
sont petits par rapport au rayon de la terre et que vous ne soyez pas trop près des pôles.
La réponse acceptée est parfaitement correcte et fonctionne. J'ai fait quelques réglages et transformé en ceci:
double meters = 50;
// number of km per degree = ~111km (111.32 in google maps, but range varies
between 110.567km at the equator and 111.699km at the poles)
// 1km in degree = 1 / 111.32km = 0.0089
// 1m in degree = 0.0089 / 1000 = 0.0000089
double coef = meters * 0.0000089;
double new_lat = my_lat + coef;
// pi / 180 = 0.018
double new_long = my_long + coef / Math.cos(my_lat * 0.018);
J'espère que cela aide aussi.
Avez-vous vérifié: Comment puis-je trouver le lat/long qui est X km au nord d'un lat/long donné ?
Ces calculs sont ennuyeux au mieux, j'en ai fait beaucoup. La formule haversine sera votre amie.
Certains de référence: http://www.movable-type.co.uk/scripts/latlong.html
Pour la latitude faire:
var earth = 6378.137, //radius of the earth in kilometer
pi = Math.PI,
m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree
var new_latitude = latitude + (your_meters * m);
Pour la longitude faire:
var earth = 6378.137, //radius of the earth in kilometer
pi = Math.PI,
cos = Math.cos,
m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree
var new_longitude = longitude + (your_meters * m) / cos(latitude * (pi / 180));
La variable {[2] } peut contenir une valeur positive ou négative.