1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

interaktive Landkarten (Koordinaten umwandeln?)

Discussion in 'Web-Know-how für die Homepage' started by Chups, Oct 16, 2005.

Thread Status:
Not open for further replies.
  1. Chups

    Chups Byte

    Ich versuche gerade herauszufinden wie solche interaktiven Landkarten funktionieren, also Karten auf denen irgendwelche Punkte markiert sind (z.B. Points of Interest).

    Momentan hänge ich bei einem Grundproblem:

    Angenommen diese Points of Interest stehen in irgendeiner DB, und zwar mit ihren geographischen Koordinaten. Also Längengrade und Breitengrade.
    Ich habe jetzt irgendeine Landkarte von z.B. Österreich, in der Größe von sagen wir 600x400 Pixel.
    Wie kann ich nun diese geographischen Koordinaten der verschiedenen Punkte auf Pixelkoordinaten umrechnen, um die Punkte richtig auf der Karte positionieren zu können?

    Danke,
    Chups
     
  2. kalweit

    kalweit Hüter der Glaskugel

    Mal so als Idee:

    (1) Koordinaten für 600,400 ermitteln
    (2) 600,400/Koordinaten für (600,400) = x,y/Koordinaten für (Zielpunkt) (natürlich nach x und y getrennt)
    (3) das Ganze runden und in die Grafik pappen
     
  3. Eljot

    Eljot Halbes Gigabyte

    Die Koordinaten der Pixel des Desktop-Bildes, also z.B. der Landkarte von Österreich, sind über Breite und Höhe linear. Eine Kugeloberfläche, auch in Ausschnitten, ist aber auf einer ebenen Fläche nicht linear darstellbar. Ich verwende hier die Darstellung von Landkarten mit Programmen, welche auch die geographischen Koordinaten preisgeben, z.B. Routenplaner. Es ist auch möglich, dass ich deine Frage falsch verstanden habe.
    Gruß Eljot
     
  4. kalweit

    kalweit Hüter der Glaskugel

    > Eine Kugeloberfläche, auch in Ausschnitten, ist aber auf einer ebenen Fläche nicht linear darstellbar

    Für den vorliegenden Fall sollte es aber näherungsweise hinreichend genau sein - andernfalls müsste man mal in einer Formelsammlung blättern (das kann der TO aber dann allein ;) )
     
  5. Chups

    Chups Byte

    Das dachte ich mir nämlich auch.. daß es für so eine kleine Fläche wie z.B. Österreich ungefähr passen müsste, ohne dieses Problem mit der Kugel berücksichtigen zu müssen.

    Es gibt z.B. Formeln für die Umrechnung aus dem Polarkoordinatensystem ins Kartesische.
    Hier ein Link zu Wikipedia

    Allerdings bin ich mir nicht sicher, ob das für mich das richtige wäre, ich möchte ja Koordinaten verwenden können, die z.B. so aussehen: N 48° 14.679 E 016° 22.019

    Zur näheren Erklärung:
    Am Ende möchte ich eine "Imagemap" erstellen. Da gibt es dann Tags die so aussehen:
    <area href="name.htm" alt="Text" coords="3,15,7" shape="circle">
    Und unter "coords" stehen dann eben die Pixelkoordinaten und der radius des Kreises (Punktes) der auf der Landkarte eingezeichnet werden soll.
    Da diese Punkte in meiner Datenbank aber mit Längen- und Breitengrade gespeichert werden, müsste ich das eben irgendwie zumindest annähernd auf die Pixelkoordinaten umrechnen können.
     
  6. kalweit

    kalweit Hüter der Glaskugel

    Achso, dir fehlt nur die Umrechnung von Grad-Dezimalminute in Dezimalgrad... - wenn ich mich recht erinnere werden die Dezimalminuten durch 60 geteilt und an die Grad angehängt:
    48° 14.679 ergibt dann 48.24465
     
  7. Eljot

    Eljot Halbes Gigabyte

    So einfach ist das nicht. Die metrische Länge eines Meridiangrades beträgt 111,11 km. Die einer Minute dann 1852m gleich eine nautischen Meile. Das heißt, eine Minute von genau Nord nach Süd sind 1852 Meter. Von Ost nach genau West muss dieser Betrag noch mit dem Cosinus der jeweiligen nördlichen oder südlichen Breite des betreffenden Breitenkreises multipliziert werden. Bei Kartenausschnitten verwendet man den mittleren Breitengrad, also das arithmetische Mittel aus den Breitengraden der oberen und unteren Kartenbegrenzung. Sind nun die geographischen Eckpunkte eines Kartenausschnittes bekannt und ist dieser genau nach Norden ausgerichtet, kann die Ausdehnung dieses Kartenausschnittes berechnet werden. Sowohl in Grad-Minuten als auch in Kilometer für die Kartenhöhe und -breite.
    Wenn nun gleichfalls die Pixelgrößen des Bildes dieser oder einer anderen Karte bekannt sind und es gelingt die Übertragung der oder eines der Eckpunkte als Bezugspunkt(e) in diese, dürfte mittels Dreisatzrechnung recht einfach eine Umrechnung möglich sein.
    Dieses sei als Denkanstoß zu verstehen, da ich mit den englischen Fachbegriffen des TO wenig anfangen kann.
    Gruß Eljot
     
  8. Chups

    Chups Byte

    Nein, da hast du was falsch verstanden, diese Umrechnung ist mir schon klar, ich brauche aber die Umrechnung dieser Koordinaten auf Pixelkoordinaten für meine Landkarte.
     
  9. Chups

    Chups Byte

    Hi Eljot, danke erstmal für die Antwort.

    Das mit der nautischen Meile hab ich mittlerweile schon herausgefunden und versucht zu verwenden. Auch daß die Längengrade zum Pol hin immer enger werden und man dadurch die Längenminuten für einen bestimmten Ort mit cos des jeweiligen Breitengrades ausrechnen kann.

    Ich hab diese km - Berechnung aber mal weggelassen und folgenden Ansatz versucht.

    Ich ermittle die geografischen Koordinaten zweier Punkte, die auf meiner Karte vorhanden sind (findet man u.a. auf Wikipedia). z.B. Innsbruck und Wien
    Außerdem ermittle ich mit einem Grafikprogramm die Pixelkoordinaten für die zwei Punkte auf der Karte.
    Dann errechne ich mir jeweils die horizontalen und vertikalen Abstände. Die Ergebnisse verwende ich dann, um mir auszurechnen wieviel Sekunden einem Pixel bei den Längengraden entsprechen und wieviel bei den Breitengraden. Ich dividiere also einfach den horizontalen Grad-Abstand durch den horizontalen Pixelabstand und den vertikalen Grad-Abstand durch den vertikalen Pixelabstand. Danach sollte man sich mit diesen Ergebnissen z.B. die geographischen Koordinaten des Nullpunktes der Karte ausrechnen können und dann z.B. ausgehend von diesem Nullpunkt die richtige Position auf der Karte für alle möglichen anderen Koordinaten ausrechnen können. Ich hoffe das war soweit verständlich erklärt.
    Ich habe irgendwo im Internet eine Beschreibung gefunden, wo das so gemacht wird.

    Allerdings will das bei mir einfach nicht klappen - mein errechneter Nullpunkt scheint irgendwie nicht ganz zu passen (hab auf mapquest.com meine errechneten Koord. eingegeben, und wenn ich diese map dann mit meiner Karte vergleiche passt der Nullpunkt nicht), auch wenn ich mir ausgehend von z.B. den Innsbruck-Koordinaten einen neuen Punkt berechnen will, ist der dann nicht ganz an der richtigen Stelle. Es kommt alles nur ungefähr hin, aber viel zu ungenau um damit was anfangen zu können.
    Darum frag ich mich jetzt doch: Kann die Krümmung der Erdkugel selbst bei so einer "kleinen" Fläche wie Österreich doch schon soviel ausmachen, daß ich die Punkte so nicht genau berechnen kann? Oder mach ich einfach irgendwas falsch?
    Irgendwie muss es ja jedenfalls gehen, schließlich gibts ja viele Karten im Internet, die z.B. nach Eingabe von Koordinaten den Punkt auf einer Karte darstellen können. :-(
     
  10. NickNack

    NickNack Megabyte

  11. Eljot

    Eljot Halbes Gigabyte

    Es wird wohl auch nie stimmen. Es ginge wohl für einen Stadtplan. Dazu eine Geschichte:
    Ein Zar im alten Russland wollte eine Eisenbahnverbindung im Norden des Landes zwischen zwei bedeutenden Städten schaffen. Seine Vermessungsingenieure stritten sich nun fürchterlich, wie die Trassenführung zu wählen wäre. Bis der Zar die Schnauze voll hatte, ein Lineal nahm und beide Städte auf der Landkarte mit einer geraden Linie verband. So und nicht anders werden die Schienen verlegt, sonst rollen Köpfe. Die Vermesser nahmen nun die genauen Punkte der Linie auf und ließen bauen. Dieser Schienenstrang macht noch heute einen satten Bogen durch die Landschaft.
    Es geht eben nicht so einfach, zumal für die Darstellung der Erdoberfläche 6 verschiedene Projektions-Methoden zur Anwendung kommen können. Die Mercator-Projektion ist wohl die gebräuchlichste.
    Ich würde wie folgt vorgehen:
    Ich schaffe mir eine Kartenausschnitt aus einem Weltatlas oder Routenplaner. Dieses Rechteck hat eine linke Begrenzung, welche auch eine mittlere - z.B. östl. Länge - darstellt. Gleiches gilt für die rechte Begrenzung. Die obere Begrenzungslinie hat eine mittlere -z.B. nördliche - Breite. Die untere ebenfalls. Man muss immer die Mittelwerte nehmen. Aus den Differenzen links-rechts bzw. oben-unten errechnet sich die Ausdehnung der Karte in Grad-Minuten sowohl in der Höhe als in der Breite. Die linke Kante setze ich als relative Nulllinie für die Längenposition, die obere Kante als relative Nulllinie für die Breitenposition. Aus den Differenzen der tatsächlichen Positionsangaben eines Punktes auf der Karte zu den beiden tatsächlichen Längen/Breiten der Nullinien deiner Karte errechnet sich die relative Kartenposition in dieser Karte. Die x-y Koordinaten eines Bildpunktes sind zB. 0 - 0 im linken oberen Eckpunkt, gleichfalls die geographischen mit 0 -0. Je nach Pixelgröße des Bildes entsprechen nun ein Grad oder eine Minute einer bestimmten Pixelzahl, jedoch für Höhe oder Breite unterschiedlich. So etwa hast du es wohl auch gemacht. Durch den Ansatz der Mittelwerte der Randlinien wird der Fehler minimiert, aber nicht beseitigt. Kugel ist Kugel und Fläche bleibt Fläche.
    Gruß Eljot
     
  12. Jadawin

    Jadawin Byte

    Beim Problem, Kugekoordinaten in Flächenkoordinaten umzuwandeln, kommt es auf den Maßstab an. Wenn ich sehr kleine Maßstäbe habe (1:500, 1:1000, 1:5000 usw.), kann ich ohne große Fehler eine Umwandlung vornehmen. Im Vermessungswesen arbeiten wir dabei mit dem sogenannten Gauß-Krüger-System. Dabei wird mit 3° breiten Streifen gearbeitet, die jeweils für sich eine örtliches Koordinatensystem darstellen. Am Äquator beträgt die Streifenbreite 333km, im Bereich des Ruhrgebietes (51,5° nördlicher Breite) ca. 207km.

    Je größer der Maßstab, desto mehr wird allerdings der dann entstehende Fehler durch die dann relativ geringe Auflösung (Anzahl der Pixel) kompensiert. Ein Beispiel: Auflösung 1024x768 = 786432 Bildpunkte, darzustellende Fläche 300x300km² = 90000km². Wenn ich die Fläche ganz auf dem Bildschirm darstellen will, steht ein Pixel für (768/300)²=6,55km². Für die Ermittlung des entsprechenden Maßstabs bräuchte ich noch die Größe des Monitors. Bei einem 17"-Monitor wäre der Maßstab ungefähr 1:1157400 (17"=43,18cm; (4x)²+(3x)²=43,18²; x=8,64; 3x=25,92cm; 30000000cm:25,92cm=1157407). Daraus wird auch ersichtlich: Je größer die Auflösung, desto größer der Fehler.
     
  13. Chups

    Chups Byte

    Hallo ihr!

    Ok, ich habe eingesehen, daß es wohl doch nicht so einfach ist, als ich zuerst dachte.

    Darum informiere ich mich momentan gerade über das UTM-Koordinatensystem, welches soweit ich nun erfahren hab ähnlich dem Gauß-Krüger-System ist, aber "internationaler".
    Mit diesem Koordinatensystem sollte es ja möglich sein, einen Punkt halbwegs genau auf der Karte einzuzeichnen, oder?

    Ich habe festgestellt, daß ich neben den geographischen Koordinaten auch die UTM-Koordinaten für meine Punkte zur Verfügung hätte. Somit müsste ich mir erstmals über die komplizierte Umrechnung keine Gedanken machen.

    Was ich aber momentan überhaupt noch nicht durchblicke:
    Wie schaff ich es, das UTM-Gitter mit meiner Karte zu verknüpfen, damit ich überhaupt die Basis habe, um einen Punkt mit bestimmten UTM-Koordinaten auf dieser korrekt eintragen zu können?
    Alles was ich bisher herausgefunden habe, ist wie das UTM-System prinzipiell funktioniert, und daß Österreich in den Zonen 32T, 33T und 33U liegt. Aber wie ich das jetzt praktisch anwenden können soll ist mir leider noch ein Rätsel. :confused:
     
  14. Eljot

    Eljot Halbes Gigabyte

    Noch ein kleiner Hinweis. Du könntest dir eine GPS-Antenne(nmaus) kaufen und an den PC anschließen. Die mitgelieferte Software sowie ein installierter GPS-tauglicher Routenplaner schaffen es nun, aus den bereitgestellten Koordinaten deines Standortes durch die GPS-Antenne über den Routenplaner genau per Grafikkarte und Monitor diesen auf dem Display als Pixel-Position zu markieren. Und zwar recht genau und relativ unabhängig vom aktuellen Kartenmaßstab. Es geht also doch. Das Kartenmaterial muss jedoch GPS-tauglich sein. Nur wie das dort rechnerisch intern abläuft, vermag ich nicht zu sagen.
    Gruß Eljot
     
  15. Chups

    Chups Byte

    Hallo nochmal!

    Schaut euch bitte mal die Karte auf dieser Seite an.

    Die verwenden eine Karte (jpg) welche man im Internet finden kann, d.h. sie verwenden offenbar wirklich ein ganz normales jpg, und keine speziell präparierten Karten, wie ich eventuell vermutet hätte.

    Da die Seite geocaching.de eine privat betriebene Seite, und kein kommerzielles Produkt ist, behaupte ich jetzt einfach mal, daß diese interaktive Karte nicht so schwer sein kann. :(

    Jedenfalls braucht man dafür bestimmt keine teuren Programme, und wahrscheinlich auch keinen arg komplizierten Code.
    Ich schätze, und hoffe ;) , daß das wahrscheinlich recht einfach umzusetzen ist, und mir nur der richtige Hinweis fehlt. :heul:

    Hat wer eine Idee zu diesem konkreten Beispiel?
     
  16. hallo
    ja ich hab da ne idee!
    Einen tabel mit vielen zellen anlegen und das bild als hintergrund wahlen. Die zell rahmen auf 0 dicke einstellen und jeder zelle einen gewuenschten link zuordnen.
    Einfach und funzt.
     
Thread Status:
Not open for further replies.

Share This Page