web-dev-qa-db-fra.com

Comment transformer une distance en degrés en mètres?

J'utilise OpenLayers avec une carte de mercator ordinaire et j'essaie d'échantillonner une boîte englobante en trouvant une grille de points dans la seconde. La bbox est exprimée en latlon, par ex.

48.1388,-15.3616,55.2057,-3.9359

Je peux définir une distance en degrés (par exemple x: 2.5, y: 2.4) et calculer les points à partir de là. Mais je voudrais exprimer cette distance en mètres (par exemple 50000) afin de la relier à la mentalité de l’utilisateur (les gens comprennent les mètres, pas les degrés). Comment puis-je convertir cette distance? Je sais comment reprojeter un point, mais pas une distance.

Merci pour toutes les astuces! Mulone

13
Mulone

Utilisez la formule haversine pour obtenir la distance entre deux points lat/long. Cela suppose que la Terre est une sphère (qui, dans la plupart des cas, est "assez bonne").

Une implémentation Javascript de celle-ci (volée sans vergogne de ici ) ressemble à ceci:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;
14
blindauer

Sans tenir compte de la forme légèrement non sphérique de la terre, 

Une minute de latitude du nord au sud = 1 mille nautique = 6075 pieds Donc Un degré = 60 minutes = 60 * 6075 pieds Il y a 3,28 pieds dans un mètre donc Un degré = 60 * 6075/3,28 mètres = 111 128 mètres

Alternativement, une minute de latitude = 1 852 mètres . Ainsi, un degré = 60 * 1852 mètres = 111 120 mètres

Je ne sais pas ce qui est plus précis ...

Pour un degré de longitude, faites la même chose, mais multipliez par le cosinus (latitude) car les lignes de longitude se rapprochent à mesure que vous vous déplacez vers le nord. 

6
Charles Bretana

La transformation entre degrés et mètres varie sur la surface de la Terre.

En supposant une Terre sphérique, degrés de latitude = distance * 360/(2 * PI * 6400000)

Notez que la longitude varie en fonction de la latitude:

Degrés longitude = distance * 360 */(2 * PI * cos (latitude))

Ce qui précède concerne la surface de la Terre et n’utilise pas la projection de Mercator. Si vous souhaitez utiliser une distance linéaire projetée, vous devez utiliser la projection de Mercator.

0
winwaed