Domanda

sto usando OpenLayers con una mappa mercator ordinaria e sto cercando di assaggiare un rettangolo di selezione trovando una griglia di punti in LatLong. La Bbox è espresso in LatLon, per es.

48.1388,-15.3616,55.2057,-3.9359

I può definire una distanza gradi (per esempio x: 2,5, y: 2.4) e lavorare i punti da lì. Ma vorrei esprimere questa distanza in metri (ad esempio 50000), al fine di mettere in relazione alla mentalità utente (la gente capisce metri, non in gradi). Come posso convertire questa distanza? So come riproiettare un punto, ma non a distanza.

Grazie per eventuali suggerimenti! Mulone

È stato utile?

Soluzione

Utilizza la haversine formula per ottenere la distanza tra due punti di latitudine / longitudine. Questo presuppone la terra è una sfera (che è, per la maggior parte dei casi, "abbastanza buono").

Un'implementazione JavaScript di esso (spudoratamente rubato da qui ) assomiglia a questo:

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;

Altri suggerimenti

senza ammettere la forma leggermente non sferica della terra,

Un minuto di latitudine nord a sud = 1 miglia nautiche = 6075 piedi Così uno di laurea = 60 minuti = 60 * 6075 piedi Ci sono 3,28 piedi in un metro così Una laurea = 60 * 6075 / 3,28 metri = 111,128 metri

In alternativa, un minuto di Latitudine = 1.852 Metri Così Un grado = 60 * 1852 metri = 111,120 metri

Non sono sicuro che è più preciso ...

Per un grado di longitudine, fare la stessa cosa, ma Moltiplicare per il coseno (latitudine) in quanto le linee di longitudine si avvicinano insieme come si sposta a nord.

La trasformazione tra gradi e metri di varia attraverso la superficie della Terra.

Supponendo una Terra sferica, gradi di latitudine = distanza * 360 / (2 * PI * 6400000)

Si noti che la longitudine varierà a seconda della latitudine:

gradi di longitudine = distanza * 360 * / (2 * PI * cos (latitudine))

È possibile che questo è per la superficie della Terra, e non usa la proiezione di Mercatore. Se si desidera lavorare con la distanza lineare proiettato, allora si avrà bisogno di utilizzare la proiezione di Mercatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top