hallo,
ich habe eine applikation geschrieben die einer osm datei die geographischen koordinaten entnimmt und diese dann via mercatorprojektion umrechnet. die daraus resultierenden koordinaten bilde ich dann in einem koordinatensystem ab. das klappt soweit ganz gut.
hier ein vergleich zwischen der openstreetmapkarte und meiner karte:
ich habe die von mir erzeugte karte um den faktor 10 skaliert und mit augenmaß der openstreetmapkarte angepasst.
Da bei der Mercatorprojektion zunächst die errechneten Koordinaten dimensionslos sind, habe ich diese mit dem Erdradius multipliziert. als ergebnis erhalte ich koordinaten in meter. mein koordinatensystem geht von
x = -29009m bis 29009m
y = 6975656m bis 7018876m
nach meinem verständnis ist also 1 pixel = 1 meter. als vorgabe dient der maßstab der ICAO Karte. diese hat einen maßstab von 1:500000, was bedeuted das 1cm = 500000 cm = 5000 m sind. wie bringe ich jetzt meine bildschirmpixel ins verhältnis zu dem kartenmaßstab der ICAO Karte ?
hallo nochmal,
ich möchte den maßstab 1:500.000 einer icao karte ins verhältnis zu meiner digitalen vektorkarte am pc bringen. die icao karte liegt im cm maßstab vor, meine digitale karte in pixel. mein bildschirm hat eine auflösung von 320x240 (smartphone). das bedeuted ich habe horizontal 320 pixel und vertikal 240 pixel.
1 ppi sind 1 pixel pro zoll, wobei 1 zoll = 2,54 cm sind.
nach meinem verständnis würde ich also bei einem maßstab von 1:500000 für die x-achse ca. 0,0003 pixel und für die y-achse ca 0,0002 pixel nutzen um den maßstab darzustellen. da die kleinste darstellbare einheit am pc aber 1 pixel ist, habe ich hier ein problem xD. ich bin mir sicher ich werfe da was total durcheinander, aber ich komme leider von alleine nicht drauf. hoffe ihr könnt mir weiterhelfen.
Ok, du willst den Screen mit in die Rechnung einbeziehen. Das macht prinzipiell natürlich Sinn, funktioniert aber nicht mehr, etwas verstellt hat.
Effektiv mußt Du die Breite des Bildschirmes in Pixeln durch die Auflösung teilen. Dann hast Du du die Breite des Bildschirmes in Zoll. Beide Zahlen muss Dir das Betriebssystem liefern, da jeder Computer anders ist.
Das ganze nimmst Du mit einem Umrechnungsfaktor mal (Inch/cm) um eine Zahl in Zentimetern zu haben. So breit ist der Screen dann in Zentimetern.
Wenn Du die Zahl dann durch den Maßstab teilst erhältst Du die breite der Fläche, die Du darstellen mußt damit der Maßstab stimmt. Jedoch ist die Zahl noch in cm.
Das nimmst Du nochmal mit dem Umrechnungsfaktor mal (cm/km) und schon hast Du eine Zahl in Kilometern. So viel Fläche mußt du dann anzeigen.
Gegeben:
========
Breite: 320 Pixel
Auslösung: 95 Pixel/Inch
Maßstab: 1:500.000
Umrechnungsfaktor 1: 2,54 cm/Inch
Umrechnungsfaktor 2: 0,00001 km/cm
Komplettformel
===========
Breite * Umrechnungsfaktor 1 * Umrechnungsfaktor 2
----------------------------------------------------------------------------
Auflösung * Maßstab
Gesamtformel:
===========
320 Pixel * Inch * 2,54 cm * 500.000 * 0,00001 km
--------------------------------------------------------------------------
95 Pixel * Inch * 1 cm
Kürzen um die Einheiten:
==================
320 * 2,54 * 500.000 * 0,00001 km
--------------------------------------------------------------------------
95
Ergebnis:
=======
42,78 Kilometer
Jetzt weißt Du, daß Du auf einem Screen von 320 Pixeln breite bei einer Auflösung von 95 DPI und einem Wunschmaßstab von 1:500.000 insgesamt 42,78 Kilometer anzeigen mußt. Alles auf die Breite berechnet. Das ganze macht man nochmal für die Höhe, wenn man möchte. Oder man stellt das Bild unverzerrt dar so wie man es vorliegen hat. Das “sollte” dann ja stimmen, besser ist, man rechnet aber auch aus, ob alles korrekt ist.
hast mir super geholfen. dennoch bin ich der überzeugung das die vom os vorgegebene dpi zahl nicht mit der realität übereinstimmt. deshalb auch mein versuch anders an die sache zu gehen. habs aber jetzt so wie du vorgeschlagen hast gelöst und passt xD
Naja, der Text auf der Internetseite ist recht lang gehalten, hat aber nur ein einziges Faktum. Jeder Monitor hat unterschiedlich viele DPI. Und deshalb kann man diese Zahl von Windows auslesen lassen. Immerhin meldet sich der Monitor ja bei Windows mit dem, was er kann und was er hat. Und da sind auch die DPI dabei. Natürlich ist damit nicht sichergestellt, daß dabei Fehler auftreten können. Um das zu testen, malt eine 5 cm lange Linie. Der User soll dann nachmessen, ob das stimmt oder nicht und hat Zoombuttons. Idealerweise macht man das in beide Achsen, man malt also ein Quadrat.