Maßstab setzen

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:

http://img695.imageshack.us/img695/3337/vergleichy.jpg

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 ?

1 Breitengrad hat 111,12 km. Hier kannst Du also ganz einfach den Maßstab ausrechnen.

Bei den Längengeraden wird komplizierter. Da Du jedoch die Karte mittels Merkator berechnet darstellst, kannst du das ignorieren.

715 Pixel ist das Bild hoch. Welche Koordinaten deckt Deine Karte ganz genau ab? Dann rechne ich Dir gerne ein Beispiel für die Karte aus.

Grüße
Dennis

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.

berechnung :

2,54cm / 320 pixel = 0,00794 cm/pixel
2,54cm / 240 pixel = 0,01058 cm/pixel

wieviele pixel passen nun in einen cm ?

1 cm / 0,00794 cm/pixel = 125,94 pixel
1 cm / 0,01058 cm/pixel = 94,52 pixel

auf der icao karte sind 1cm = 0,000002 cm (1:500000)

125,94 pixel / 500000 = 0,00025188 pixel
94,52 pixel / 500000 = 0,00018904 pixel

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.

danke im vorraus

mfg marvel

Ok, du willst den Screen mit in die Rechnung einbeziehen. Das macht prinzipiell natürlich Sinn, funktioniert aber nicht mehr, etwas verstellt hat.

  1. 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.

  2. 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.

  3. 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.

  4. 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

hier ne nette info dazu http://praegnanz.de/essays/137/72dpi72dpi

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.