Attualmente sto sviluppando un sito di mappatura OpenLayers. Le misurazioni possono essere effettuate utilizzando uno strumento linea e uno strumento area. Entrambi sono attualmente impostati per calcolare le misurazioni geodetiche come indicato nell'API OpenLayers .
Uso misurazioni geodetiche piuttosto che misurazioni planari poiché durante i test degli utenti le persone hanno messo in dubbio le misurazioni dello strumento per le distanze che già conoscevano (come guidare tra le città).
Una nuova funzionalità del sito è che un utente sia in grado di disegnare un cerchio sulla mappa di un raggio impostato. OpenLayers consente solo di disegnare cerchi usando distanze planari, quindi quando un utente misura il cerchio con lo strumento di misurazione geodetica i valori non corrispondono. Nell'immagine sotto il raggio planare del cerchio è di 10 km, ma la misura della linea geodetica per il diametro è di 12 km.
Chiaramente questo lascerà un utente (e me stesso) a chiedersi quale sia corretto.
Guardando questa risposta sembra che la maggior parte dei sistemi GIS desktop "ignori" questo problema e restituisca misurazioni e distanze planari. Quindi qual è la migliore pratica in termini di interfaccia utente e accuratezza per gestire misurazioni planari e geodetiche?
Aggiornare
Ho trovato questo esempio di Google che illustra il problema dei raggi e la proiezione di Mercatore:
http://maps.forum.nu/gm_sensitive_circle2.html
Il codice JavaScript per disegnare il cerchio è il seguente:
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);
}
Questo cerchio tiene conto della curvatura della terra?
Aggiornamento finale
Codice di lavoro pubblicato su http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers