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.

54
demandé sur Cœur 2011-09-20 00:35:37

4 réponses

, Le nombre de kilomètres par degré de longitude est d'environ

(2*pi/360) * r_earth * cos(theta)

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.

84
répondu nibot 2014-07-04 22:15:51

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.

18
répondu Numan Karaaslan 2018-03-14 10:33:34

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

6
répondu Ryan Ternier 2017-05-23 12:34:29

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.

6
répondu ssten 2018-05-31 10:33:36