Je veux créer 2 nouvelles longitude et 2 nouvelles latitudes basées sur une coordonnée et une distance en mètres, je veux créer un joli cadre de délimitation autour d'un certain point. C'est pour une partie d'une ville et max ± 1500 mètres. Je ne pense donc pas que la courbure de la terre doive être prise en compte.
Donc j'ai 50.0452345
(x) et 4.3242234
(y) et je veux savoir x + 500 mètres, x - 500 mètres, y - 500 mètres, y + 500 mètres
J'ai trouvé de nombreux algorithmes mais presque tous semblent gérer la distance entre les points.
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
Vous pouvez donc 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 vous approchez pas trop des pôles.
La réponse acceptée est parfaitement correcte et fonctionne. J'ai fait quelques ajustements et je me suis 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.
Pour la latitude, faites:
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:
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 your_meters
peut contenir une valeur positive ou négative.
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 au mieux ennuyeux, j'en ai fait beaucoup. La formule haversine sera votre amie.
Quelques références: http://www.movable-type.co.uk/scripts/latlong.html