Frage

Ich bin mit Openlayers mit einer gewöhnlichen mercator Karte und ich versuche, in LatLong von der Suche nach einem Gitter von Punkten einen Begrenzungsrahmen zu probieren. Die bbox wird in LatLon ausgedrückt, z.

48.1388,-15.3616,55.2057,-3.9359
(: 2,5, y: 2,4 z x) und Arbeit aus den Punkten von dort

I kann in eine Entfernung Grad definieren. Aber ich möchte diese Strecke in Meter auszudrücken (zum Beispiel 50000), um es dem Benutzer Einstellung zu beziehen (Menschen Meter verstehen, nicht Grad). Wie kann ich diese Distanz konvertieren? Ich weiß, wie um einen Punkt zu projizieren, aber nicht zu erreichen.

Vielen Dank für alle Hinweise! Mulone

War es hilfreich?

Lösung

Mit der Haversine Formel den Abstand zwischen zwei Punkten von lat / long zu erhalten. Dies setzt voraus, die Erde eine Kugel ist (das ist für die meisten Fälle, „gut genug“).

Eine Javascript Implementierung davon (schamlos von gestohlen hier ) sieht wie folgt aus:

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;

Andere Tipps

Ohne Berücksichtigung der leicht nicht-sphärische Gestalt der Erde,

Eine Minute Breite Nord nach Süd = 1 Seemeile = 6075 Meter So Ein Grad = 60 Minuten = 60 * 6075 Fuß Es gibt 3,28 Feet in einem Meter so Ein Grad = 60 * 6075 / 3,28 Meter = 111.128 m

Alternativ, nur eine Minute von Latitude = 1.852 Metern So Ein Grad = 60 * 1.852 m = 111.120 m

Ich bin mir nicht sicher, welche genauer ist ...

Einen Längengrad, das gleiche tun, aber Multipliziert mit dem Cosinus (Breite), da die Länge Linien näher zusammenkommen, wie Sie nach Norden bewegen.

Die Umwandlung zwischen Grad und Metern variiert über die Erdoberfläche.

Unter der Annahme einer kugelförmigen Erde, Breitengrad = Abstand * 360 / (2 * PI * 6400000)

Beachten Sie, dass Länge entsprechend der Breite variieren:

Grad Länge = Abstand * 360 * / (2 * PI * cos (Breite))

Die oben ist für die Oberfläche der Erde, und verwendet nicht die Mercator-Projektion. Wenn Sie die Arbeit mit projizierten linearen Abstand wollen, dann müssen Sie die Mercator-Projektion verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top