Mathematische Frage zur Umrechnung

Hallo,

habe eine Frage, welche nicht direkt etwas mit OpenStreetMap zu tun hab. Habe eine Deutschlandkarte und diverse Koordinaten die aus longitude und latitude bestehen.
Diese Koordinaten möchte ich auf die Deutschlandkarte (Bild) abbilden.

Dafür muss ich long und lat erstmal in X und Y umwandeln und dann die Startkoordinaten von Deutschland subtrahieren, ist das richtig?
kann mir da jmd. helfen?

Hallo und willkommen im OSM-Forum!

Du schriebst etwas von einem Bild - leider ist hier keines zu sehen. Vielleicht fehlt der Link?

Moin moin,

es stellt sich die Frage, in welcher Projektion Deine Koordinaten vorliegen und in welcher Projektion
Deine Deutschlandkarte. Danach kann man eine Tranformation anschubsen.
:slight_smile:

genau so ist es. Also her mit den Infos, bin ganz heiß :wink:

Das Problem was kellerma hier anspricht, ist dass es für Koordinaten verschiedenen Koordinatensysteme gibt. Mit x y meinst du wahrscheinlich ein einfaches kartesisches Koosdinatensystem.
Dies wird einem oft in der Schule beigebracht. Allerdings eigenet sich das System nur sehr beschränkt um die Position auf einer Kugel zu bestimmen. Daher haben sich verschiedene schlaue Leute verschiedene Möglichkeiten ausgedacht, welche je nach Anwendungsgebiet verschiedene vor und Nachteile haben. Ein Koordinatensystem beispielsweise achtet darauf, dass die Längen alle gleich sind, andere System achten darauf, dass die Winkel exakt sind, usw.
Wenn man also jetzt von dem einen System in das andere umrechenen möchte, dann sollte man sich Gedanken darüber machen welche Projketion oder Koordinatensysteme zum Einsatz kommen.
Karten in Deutschland haben im übrigen meist Gauss-Krüger-Koordinaten. Allerdings ist das Land so groß, dass um die Fehler auch immer größer werden. Daher gibt es verschiedene “Zonen” der Gaus-Krüger-Koodinaten.
Sehr verbreitet ist auch die Mercatorprojektion: http://de.wikipedia.org/wiki/Mercator-Projektion.

So wenn du dann also geklärt hast, welche Grundlagen du hast, kann man nach der Formel für die Umrechnung suchen. Schlaue Menschen haben vor uns schon viel gehirnschmalz darin investiert und daher fertige Dateien und Programme zur Verfügung gestellt. Sicher kann dir der ein oder andere dann beim suchen helfen.

Übrigens wenn es nur darum geht eine Karte im Internet mit bestimmten Dingen(Fetuares) anzeigt, schau dir doch mal das Framework openlayers (openlayers.org) an. Vielleicht ist ja dort schon eine Lösung für dich dabei.

Hallo pixelmash, ich habe ein ja und und nein auf Deine Frage, ob das richtig ist.

Ein Klares JA gibt es für den groben Rechenweg. Wenn Deine Karte von Nord-47° bis Nord-49° geht und Du einen Punkt bei Nord-48° einzeichnen möchtest, ist der genau in der Mitte.

Ein Klares NEIN gibt es jedoch für die Genauigkeit. Möchtest Du nur ein paar große Kreise oder ähnliches haben kannst Du das vernachlässigen. Möchtest Du das ganze ganze aber auf einer Karte machen die Du nachher auf Din-A0-Papier ausdruckst, wirst Du feststellen, daß Deine Punkte total verschoben sind. Der Grund ist ganz einfach, stelle Dich mal 5 Meter vor einen Globus. Wenn Du jetzt Deutschland anschaust, ist es fast breiter als hoch, weil es so weit oben auf der Kugel liegt und daher weit nach hinten weg geklappt ist. Stehst Du vor dem Globus und drehst ihn, wird Deutschland immer schmaler, bis es nur noch ein Strich ist und dann auf der Rückseite verschwindet. Du hast Deutschland aber auf einer Ebene und nicht auf einem Globus. Somit ist Deine Karte zwangsweise verzerrt dargestellt. Und diese Verzerrung musst Du in Deinen Rechnungen beachten. Wenn Du eine Markartor-Projektion (Mapnik nutzt die z.B.) hast, hast Du es sehr einfach. Rechne folgendes: 1/cos(Nord). Jetzt hast Du eine Zahl die ca. 1,5 bis 1,7 ist. Das ist der Faktor um den die Karte an dieser Position nach Ost und West gestreckt wurde. Ein Grad sind 60 Seemeilen. Eine Seemeile sind 1,85533 Kilometer. 1° sind also 111,32 Kilometer. Mit dem Faktor Dividiert sind 1° dann nur noch z.B. 70 Kilometer. Je weiter Du nach Norden kommst, desto weniger werden es.

Hallo und sorry für die späte Antwort, war aber leider nicht im Lande.

So, zum Problem:
Die Karte sieht so aus:
FluxBB bbcode test
Die Punkte sollen größer werden, je mehr Daten an einem Ort versammelt sind, das werd ich wahrscheinlich über die PLZ lösen.

Beim klick auf ein Bundesland soll man dann in eine Bundeslandansicht kommen. Die Punkte sind nicht sehr genau, werde es aber erstmal probieren wie “Dennis” geschrieben hat und dann dementsprechen auf die Maße der Karte runterrechnen. Bin trotzdem offen für weitere Ratschläge :slight_smile:

Edit:

Meine Daten sehen folgendermaßen aus:
PLZ ist beispielsweise 12163, daraus resultiert ein longitude und latitude von 13.4 / 52.5167 ( Südwest Berlin).

Wenn ich Dennis richtig verstehe nehme ich den nehme ich den longitude und rechne dementsprechend 1/cos(13.4)?

hi,

in openlayers macht man das mit der cluster-strategie, wobei man dann in einem weiteren Schritt die Größe/Art der Symbole von der Mächtigkeit des Cluster abhängig macht.

Hier http://openlayers.org/dev/examples/strategy-cluster-threshold.html ,
hier http://openlayers.org/dev/examples/strategy-cluster.html
und hier http://openlayers.org/dev/examples/strategy-cluster-extended.html ist das beim Rein-Zoomen zu erkennen.

Größe und Farbe von Clustern in Abhängigkeit der Anzahl und Eigenschaften.

Gruss
walter

Habe noch eine Bibliothek gefunden, welche das ganze vllt. etwas vereinfacht.

http://trac.osgeo.org/proj4js/

Hat jmd. damit schon erfahrungen gemacht? Die Frage ist nur, welche projection classes dafür in Frage kommt :slight_smile:

Ist das da oben auch die Größe Deiner fertigen Karte?

Weil wenns nur um “Deutschland auf 600x600 Pixel” geht, würde ich mich um Projektionen garnicht kümmern, sondern einfach eine gestauchte Plattkarte nehmen. Sowas wie die Positionskarten in der Wikipedia. Da kannst Du komplizierte Rechnerei vergessen und einfach linear interpolieren (Längengrad-5.5)/(15.5-5.5)*Bildbreite und (Breitengrad-47.2)/(55.1-47.2)*Bildhoehe (die 5.5,15.5,47.2.55.1 sind die Bildränder im Wikipedia-Beispiel)

Es ist nämlich nicht mit einfach durch cosinus(Brteitengrad) getan. Das gibt zwar die Verzerrung an einem Ort an, aber für die y-Koordinate musst Du vom Äquator aus alle südlich von Deinem Punkt liegenden Verzerrungen aufsummieren (oder so, ich kann das nicht so gut erklären :wink: ) und kommst dann auf ziemlich komplizierte Formeln.

Grüße, Max

Hey danke, hab das mal so umgesetzt und es funktioniert alles einwandfrei. Weißt du zufällig wie ich die Bildränder auch für die Bundesländer bekomme? Sprich Berlin, Bayern etc.? Gibt es da eine Quelle?

Für so einfache Karten würde ich auch die anderen Positionskarten aus der Kartenwerkstatt der Wikipedia nahmen. Die Begrenzung steht jeweils in der Bildbeschreibung.

klar, bei mir natürlich:

http://wnordmann.homeunix.com/index.php/downloads/cat_view/40-openstreetmap/41-grenzen

gruss
walter

p.s. wenn du auf einen Beitrag antwortest, wäre es ganz nett , erkennen zu können, worauf du dich beziehst b.z.w. an wen deine Antwort geht.