Je développe actuellement un site de cartographie OpenLayers. Les mesures peuvent être effectuées à l'aide d'un outil de ligne et d'un outil de zone. Ces deux paramètres sont actuellement définis pour calculer les mesures géodésiques comme indiqué dans l' API OpenLayers .
J'utilise des mesures géodésiques plutôt que des mesures planes car lors des tests utilisateurs, les gens ont remis en question les mesures de l'outil pour des distances qu'ils connaissaient déjà (comme la conduite entre les villes).
Une nouvelle fonctionnalité du site est de permettre à un utilisateur de dessiner un cercle sur la carte d'un rayon défini. OpenLayers permet uniquement de dessiner des cercles en utilisant des distances planes. Ainsi, lorsqu'un utilisateur mesure le cercle avec l'outil de mesure géodésique, les valeurs ne correspondent pas. Dans l'image ci-dessous, le rayon plan du cercle est de 10 km, mais la mesure de la ligne géodésique pour le diamètre est de 12 km.
De toute évidence, cela laissera un utilisateur (et moi-même) se demander ce qui est correct.
En regardant cette réponse, il semble que la plupart des systèmes SIG de bureau "ignorent" ce problème et renvoient des mesures et des distances planes. Quelle est donc la meilleure pratique en termes d'interface utilisateur et de précision pour gérer les mesures planaires et géodésiques?
Mise à jour
J'ai trouvé cet exemple Google qui illustre le problème des rayons et de la projection Mercator:
http://maps.forum.nu/gm_sensitive_circle2.html
Le code JavaScript pour dessiner le cercle est le suivant:
var lat1 = (PI/180)* center.lat(); // radians
var lng1 = (PI/180)* center.lng(); // radians
for (var a = 0 ; a < 361 ; a++ ) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
circlePoints.push(point);
bounds.extend(point);
}
Ce cercle tient-il compte de la courbure de la terre?
Mise à jour finale
Code de travail publié sur http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers