Ich möchte die Entfernung zwischen zwei Punkten auf der Karte berechnen. Die Punkte liegen als EPSG:4326 vor, wie z.B. POINT(1171111.416615699 6848937.47984754). Gibt es einen einfachen Weg die Entfernung zwischen zwei solchen Punkten zu berechnen?
Wenn es um eine kleine Region geht, sagen wir mal 100km breit und hoch, ruf Herrn Pythagoras zur Hilfe und multiplizier das Ergebnis mit dem Kosinus der mittleren Breite, und Du hast die Entfernung in Metern.
Wenn Du mit OpenLayers arbeitest, kannst Du die getGeodesicLength()-Methode benutzen, die auf Linienobjekten definiert ist:
function distance (p1, p2) {
return new OpenLayers.Geometry.LineString ([p1, p2]).
getGeodesicLength(new OpenLayers.Projection('EPSG:900913'));
}
var koeln = new OpenLayers.Geometry.Point( 774483, 6610295);
var braunschweig = new OpenLayers.Geometry.Point(1171111, 6848937);
var d = distance(koeln, braunschweig);
Die angegebenen Koordinaten sind nicht EPSG:4326 (dafür sind sie zu groß). Wenn Dein Punkt in Braunschweig sein soll, hast du EPSG:3857-Koordinaten.
Falls Du eine GIS-Bibliothek verwendest, kannst Du dort üblicherweise eine Funktion namens “geodesicLength” oder sowas finden, die das gewünschte Ergebnis berechnet; in PostGIS geht das auch, mit ST_LENGTH zwischen zwei GEOGRAPHY-Punkten.
Für Programmierbeispiele in verschieden Programmiersprachen google einfach nach “Haversine Formula”. Die erfordert allerdings eine vorherige Umprojektion Deiner Koordinaten in EPSG:4326.