Laden...

Geo-Koordinaten für einen Kartenausschnitt ermitteln

Erstellt von User007 vor 8 Jahren Letzter Beitrag vor 8 Jahren 3.004 Views
U
User007 Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren
Geo-Koordinaten für einen Kartenausschnitt ermitteln

Hallo zusammen,

ich versuche geografische Koordinaten in einem Bild einer PictureBox darzustellen. Dieses Bild stellt einen Ausschnitt der Weltkarte dar.
Das bedeutet, man muss die Latitude und Longitude entsprechend auf den Kartenausschnitt berechnen. Ich teste das derzeit an einer Europakarte die den unten beschrieben Bereich darstellen soll. Die Kartenprojektion ist eine Flächentreue Azimutalprojektion, also dass die Längen- und Breitengrade senkrecht bzw. waagerecht verlaufen.

Ich habe die wichtigsten Daten zusammengefasst:

Europakarte:
imageWidth = 1134 Pixel
imageHeight = 883 Pixel
maxX = 70 //Grad (rechts)
minX = -25 //Grad (links)
maxY = 72 //Grad (oben)
minY = 30 //Grad (unten)

Gleichungen zur Berechnung des Pixels auf der Europakarte:
x_pixel = imageWidth / (maxX - minX) * (lon - minX)
y_pixel = imageHeight / (maxY - minY) * ((lat-minY)[

Beispiel Berlin:
x_pixel = 1134 / (maxX - minX) * (13 + 25)
y_pixel = 883 / (maxY - minY) * ((53-30)

Die Gleichung zur Berechnung der x_pixel scheint schon richtig zu sein.
Nur bei der Berechnung der y_pixel Position im Bild, komme ich nicht auf ein richtiges Ergebnis.Das Ergebnis dieser Rechnung(lat-minY) ist zwar schon annähernd an der richtigen Stelle auf der Karte, aber liegt trotzdem mit dem Wert 23 noch in Schweden. Außerdem ergibt dies auch keinen Sinn, da damit ja auch nur die Pixelposition von unten an angezeigt wird.Das in rot Markierte müsste einen Wert von circa 24 bis 25 ergeben, damit die Pixel auch wirklich bei Berlin liegen.
Hoffentlich konnte ich mein Problem verständlich erklären.
Kann mir jemand bei der Lösung des Problems helfen?

Besten Dank im Voraus!

16.842 Beiträge seit 2008
vor 8 Jahren
U
User007 Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren

Vielen Dank für die schnelle Antwort. Ich werde das gleich mal testen.
Ich hätte nicht gedacht, dass das auch bei dieser Kartenprojektion beachtet werden muss.

16.842 Beiträge seit 2008
vor 8 Jahren

Meines Wissens - und ich bin kein Genie in diesem Bereich - wird dies benötigt sobald Koordinaten auf Pixel umgerechnet werden sollen.

U
User007 Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren

Danke @Abt! Dein Link hat mir schon sehr geholfen. 👍

y_pixel = imageHeight / (maxY - minY) * LatitudeToY(lat-minY)

Ich vermute aber, dass ich bei dem lat-minY immer noch einen Fehler habe. Jetzt wird mir der Punkt in Mecklenburg-Vorpommern angezeigt. Ich werde das im Laufe des Tages nochmal durchdenken. Wenn einer eine Lösung findet, teste ich sie auch gerne.

**Edit:**Ich bin immer noch nicht auf eine Lösung gekommen. Habe ich die Mercator Projektion richtig angewendet?

U
User007 Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren

Kennt keiner eine Lösung für dieses Problem? 🙁

5.658 Beiträge seit 2006
vor 8 Jahren

Hi User007,

y_pixel = imageHeight / (maxY - minY) * LatitudeToY(lat-minY)

Wie kommst du denn überhaupt auf diese Gleichung? Schon der Term lat - minX ergibt aufgrund der Einheiten keinen richtigen Sinn, weil du Pixel von Grad subtrahierst. Hast du schonmal imageHeight / (maxY - minY) * (LatitudeToY(lat) - minY) ausprobiert?

Christian

Weeks of programming can save you hours of planning

U
User007 Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren

Danke Christian, auch dies hatte ich schon getestet und liefert auch falsche Ergebnisse. Dass diese Gleichung mir unlogisch erschien, hatte ich auch schon bereits geschrieben.
Ich habe eine Website gefunden, auf dieser ein ähnliches Vorhaben in JavaScript und PHP gelöst wurde. Diesen Code konnte ich erfolgreich in C# implementieren und gibt mir nun die gewünschten Ergebnisse zurück.

Danke für die Hilfe und dem Hinweis auf die Umrechnung bei einer Mercator-Projektion