Entfernungslegende

Hallo,

bei der Karte von Cloudmade (http://maps.cloudmade.com/) gibts ja links unten eine Darstellung, wieviel Meter oder Kilometer eine dargestellte Linie ist. Gibts dafür eine Formel (Zoom/Latitude)
Thx

Gab’s eigentlich bei der Slippy Map mal nen Maßstab?
Das ist ein absolutes Manko.

Ja sicher gibts dafür 'ne Formel.

Man benötigt die Formeln für die Mercatorprojection und die “Kachelformeln”.

http://de.wikipedia.org/wiki/Mercator-Projektion

Chris

Wenn man es weiss, ist es mit OpenLayer sehr einfach:

	map = new OpenLayers.Map('map',
                { 
			controls:[
				new OpenLayers.Control.Navigation(),
				new OpenLayers.Control.PanZoomBar(),
				new OpenLayers.Control.LayerSwitcher(),
				new OpenLayers.Control.Attribution(),
				new OpenLayers.Control.ScaleLine()],
		    maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), ....

das Entscheidende ist: new OpenLayers.Control.ScaleLine()

siehe z.B. http://hwri.hw.funpic.de/OSM_circle/RW-BB_cookie.htm

Es sollte aber mit
map.addControl(new OpenLayers.Control.ScaleLine());
gehen.

Wenn denn funpic irgendwann mal wieder erreichbar ist… Ich denke ich werde mich nach einem anderen (kommerziellen) Anbieter umschauen.
Georg

Openlayers unterstützt die Anzeige einer geodätischen oder einrr projektionsabhängigen Maßstabsleiste (jedenfalls in der Version, die ich verwende). Es kommt sowieso immer darauf an, was man will und was man braucht.

“Unsere” Mercator-Projektion ist weder flächen-, noch längentreu, sondern winkeltreu. Dies heißt: nur die Winkel stimmen - keine Entfernungen. Auf der OpenStreetMap-Website wurde daher schon lange die Maßstabsleiste entfernt => sie war ungenau und hat verwirrt.

Da “unsere” Projektion auf einer Kugel basiert, kann man die Verzerrung mit sphärischen Geometrie etwas herausrechnen, jedoch erreicht man nicht die geodätische Genauigkeit, die man mit Zurhilfename von WGS84 erreichen würde. Wer nicht mit Integralen rechnen möchte, kann auf die Gleichung von Vincenty zurückgreifen. Der Fehler liegt irgendwo im Millimeterbereich - weltweit.

Dennoch wollen viele wieder eine Maßstabs-Leiste: http://osm.uservoice.com/forums/41047-general

Tag zusammen,

kann es ein, dass die Maßstabsleiste entfernt worden ist, bevor Openlayers die geodesic-Option für OpenLayers.Control.ScaleLine eingeführt hat (m.W. ist das erst mit OL 2.9 also sei ein paar Monaten eingebaut)?

Davor war der Maßstab fest für einen bestimmten Zoomlevel. Hat man die Karte in Nord-Südrichtung verschoben, blieb die Skala gleich.

Jetzt mit “map.addControl(new OpenLayers.Control.ScaleLine({geodesic:true}))” verändert sich auch der Maßstab beim schieben. Soweit ich weiss, errechnet sich der aus der gesamten Höhe des abgebildeten Kartenausschnitts. Für Weltkarten schrecklich ungenau (aber das ist da jeder Maßstab), für einen Stadtplan sollte es gehn.

Wer sich das mal ansehen will: http://geo.dianacht.de/tests/scalebar.html

Grüße, Max

Wenn man die Karte in Zoomstufe 4 in N-S Richtung verschiebt, dann erkennt man, dass der 2000km Strich dann am Kürzesten wird, wenn
der Äquator in der Mitte der Karte ist. Daraus schließe ich, dass sich der Maßstabsbalken auf die Mitte der Karte bezieht.

Für zoomstufen > 12 ist das aber sicher kein Problem, da gilt er näherungsweise auch da wo er sich befindet.

Hab nachgeschaut, OL 2.9.1 nimmt den unteren und oberen Kartenrand (diese Distanz ist auch maximal, wenn der Äquator in der Mitte ist), projeziert diese Breitengrade in die Ausgabeprojektion, berechnet deren Distanz und bastelt daraus den Maßstab. Wird die Karte auf den Äquator zentriert und man wechselt von Zoomstufe 3 auf 4, springt die Beschriftung von 2000km auf 1000km und der Strich wird etwas kürzer. Das dürfte nicht passieren, wenn der Balken auf die Mitte bezogen wird.

Für die Berechnung nimmt OL eine Funktion “OpenLayers.Util.distVincenty()”. Die verstehe ich nicht, aber dort wimmelt es von Winkelfunktionen und sie soll der oben erwähnten “Gleichung von Vincenty” entsprechen und Projektion und Ellipsoid berücksichtigen…

Auf http://khtml.org kann man Entfernungen messen.

Einfach mal ganz im Norden oder Süden messen und dann am Äquator.
Die Unterschiede sind nicht zu gerade gering.

Da muß ich zum Teil widersprechen.

Ob ein Maßstab bei einer Merkatorprojektion Sinn macht, oder nicht, hängt natürlich von der Vergrößerung ab. Dazu braucht man gerade im Falle der Merkatorprojektion auch keine komplizierten Formeln. Im Folgenden gehe ich von einer Kugel aus, die Korrekturen zu einem Ellipsoiden sind so klein, daß sie dafür vernachlässigbar sind.

Ein Kreisbogen mit Winkel w hat eine Länge L von L = R * w, wobei R der Radius des Kreises ist, w der Winkel des Kreisbogens in Radiant. Dies gilt damit auch für die Länge eines Weges auf dem Äquator.

Die Merkatorprojektion hat die Eigenschaft, Breitengrade auf waagerechte Linien und Längengerade auf senkrechte Linien abzubilden. Betrachtet man also die kleinste Vergrößerung, d.h. die Welt ist auf einer Kachel. Dann ist die Länge in der Mitte der Kachel L_M = 2 * PI * R_Erde. Der obere und der untere Rand der Kachel entsprechen einem Breitengrad B_Rand von etwa 85 Grad – genau arctan(sinh(PI)). Der Radius des Breitengrades bei diesem Winkel ist R_Erde * cos(B_Rand). Die Länge des oberen / unteren Randes ist also L_R = 2 * PI * R_Erde * cos(B_Rand). Das Verhältnis der Längen zwischen Mitte und oberem Rand dieser Kachel ist also cos(B_Rand), also etwa 0,09 = 1/11 – gewaltig.

Wenn man aber in die Karte hineinzoomed, wird der Winkel zwischen Rand und Mitte einer Kachel entsprechend kleiner. Bei einem Zoomfaktor Z ist die Vergrößerung 2 ^ Z, der Winkel also B_R_Z = B_R * 2 ^ (-Z). Das Verhältnis cos(B_R_Z). Beim Zoomfaktor 18 ist das etwa 0,999999999984 – also praktisch 1. Man kann also schnell abschätzen, ab welchem Zoomlevel ein Maßstab sehr viel Sinn macht, da die Verzerrung vernachlässigbar ist.

Ich hätte auch gerne einen Maßstab. Am besten sollte dieser nur bei Zoomleveln eingeblendet werden, ab denen die Verzerrung vernachlässigbar ist. Wenn das nicht geht, dann immer. Denn die Entfernungen will man wohl sowieso eher im “Kleinen” wissen.

Kannst du haben. lade dir
http://bahnradwandern.bplaced.net/osmviewer.zip
entpacke alles in ein Verzeichnis und starte die htm.

Gruß,
ajoessen

Eine ähnliche Rechnung hatte ich hier ja auch schon mal gepostet und kam glaube ich auf Z10, wobei sich das auf die
einzelne 256pix Kachel bezog. Bezogen auf eine am Bildschirm angezeigte Karte also Z12 oder so.

Chris

Wer nicht selber rechnen will:
http://www.netzwolf.info/kartografie/osm/tilebrowser?lat=51.157800&lon=6.865500&zoom=14

gruß,
ajoessen