webentwicklung-frage-antwort-db.com.de

Wie wandelt man einen Abstand von Grad in Meter um?

Ich verwende OpenLayers mit einer gewöhnlichen Mercator-Karte und versuche, einen Begrenzungsrahmen abzutasten, indem ich ein Punktegitter in latlong finde. Die bbox wird in Latlon ausgedrückt, z.

48.1388,-15.3616,55.2057,-3.9359

Ich kann einen Abstand in Grad definieren (z. B. x: 2,5, y: 2,4) und die Punkte von dort aus berechnen. Aber ich möchte diese Distanz in Metern (z. B. 50000) ausdrücken, um sie mit der Denkweise des Benutzers in Beziehung zu setzen (die Leute verstehen Meter, nicht Grad). Wie kann ich diese Distanz umrechnen? Ich kann einen Punkt neu projizieren, aber keine Distanz.

Vielen Dank für alle Hinweise! Mulone

13
Mulone

Verwenden Sie die Haversine-Formel , um den Abstand zwischen zwei Lat/Long-Punkten zu ermitteln. Dies setzt voraus, dass die Erde eine Kugel ist (was in den meisten Fällen "gut genug" ist).

Eine Javascript-Implementierung davon (schamlos gestohlen von hier ) sieht so 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;
14
blindauer

Ohne die leicht unkugelförmige Form der Erde zu berücksichtigen,

Eine Minute von Norden nach Süden = 1 Seemeile = 6075 Fuß. Ein Grad = 60 Minuten = 60 * 6075 Fuß. Ein Meter enthält 3,28 Fuß. Ein Grad = 60 * 6075/3,28 Meter = 111.128 Meter

Alternativ ist eine Minute Breite = 1.852 Meter, also ein Grad = 60 * 1852 Meter = 111.120 Meter

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

Tun Sie für einen Längengrad dasselbe, aber multiplizieren Sie mit dem Kosinus (Breitengrad), da die Längengradlinien näher zusammenrücken, wenn Sie sich nach Norden bewegen.

6
Charles Bretana

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

Angenommen, eine kugelförmige Erde, Breitengrad = Entfernung * 360/(2 * PI * 6400000)

Beachten Sie, dass der Längengrad je nach Breitengrad variiert:

Längengrad = Entfernung * 360 */(2 * PI * cos (Breite))

Das Obige gilt für die Erdoberfläche und verwendet nicht die Mercator-Projektion. Wenn Sie mit dem projizierten linearen Abstand arbeiten möchten, müssen Sie die Mercator-Projektion verwenden.

0
winwaed