Hallo Forum,
ich habe eine OSM Welt-Karte aus PNG-Tiles erstellt und möchte gerne zur geographischen Ortsbestimmung eine Position mittels Breitengrad und Längengrad auf der Karte anzeigen.
Die OSM Karten liegen ja in der Mercator-Projektion vor. Laut meinem Verständniss und meinen Berechnungen müssten somit die Längengrade “normalisiert” sein bzw. Am Equator UND Nord-/Südpol jeweils einen Abstand von ~112,09 km haben.
Mein Problem ist nun die Berechnung der Breitengrade. Die OSM-Karten (bzw. meine Tiles) sind quadratisch. Eine Weltkarte aus 4x4 Tiles ergibt beispielsweise eine Weltkarte von 1024*1024 Pixeln wobei “links-oben” der Geo-Position +85,0 -180,0 und “rechts-unten” der Position -85,0 +180.0 entspricht.
Um nun eine Geo-Position auf solch einer Karte anzuzeigen, möchte ich die Position in Prozent von 0% bis 100% (links->rechts, oben->unten) umrechnen.
Die Normalisierung der Längengrade macht es einfach:
% Horizontal = (longitude+180.0) / 360.0
Bei dem Breitengrad beiße ich mir aber die Zähne aus…Spitzbergen sollte demnach auf ca. ~12,5% der Karte liegen…Schweden ~25%…Italien ~37,5%…Equator ~50%…und so weiter.
Falsch (ist nur linear):
% Vertikal = (latitude - 85.0)/-170.0
Falsch:
% Vertikal = cos(latitude * PI / 180) / 2.0
Falsch:
% Vertikal = cos(latitude * PI / 180) - cos(85 * PI / 180)) / (cos(0 * PI / 180) - cos(85 * PI / 180))