Karte von Open Street Map runterladen.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
python_freak
User
Beiträge: 16
Registriert: Sonntag 22. August 2010, 09:06
Wohnort: Mein Zimmer
Kontaktdaten:

Hallo Pythonfreunde.
Freunde haben mich gefragt ob ich ihnen mal ein Programm machen könnte indem man eine Weltkarte zum Scrollen bzw. hin- und herschieben und zum Zoomen hat in der man dann Punkte anklicken kann und das Programm diesen Punkt als GPS Wert(also mit sechs dezimalstellen) in eine Datei schreibt. Das Programm soll den Punkt auch auf der Karte darstellen können (als Punkt o.ä.), wenn man dann auf der Karte scrollt darf der Punkt nich an seiner aktuellen Position stehen bleiben sondern muss sich mit der Karte mitbewegen.

Meine Fragen:
1. Wie kann ich eine Karte(z.B.: von Open Street Map) runterladen und dann so in Python einbetten, dass man auch Scrollen und Zoomen kann.
2. Wie kann ich die GPS-Daten auslesen von einem Punkt auf den man geklickt hat.
3. Wie kann ich den Punkt markieren.

Ich habe schon recherchiert und habe bei Wikipedia etwas über OsmApi.py gefunden. Die Beispiele funzen bei mir aber nicht. Außerdem habe ich noch tl.geodrawing entdeckt. Damit kann man ja anscheinend auf Karten zeichnen. Da ich dafür aber keinerlei anleitungen gefunden habe, habe ich auch dies aufgegeben.
Ich nutze Python Version 2.5 (Könnte daran liegen dass es nicht klappt. Ich hoffe aber nicht. Wenn doch weis vielleicht noch jemand etwas das auch bei Python 2.5 funzt.)

Sehr vielen Dank für eure Mühe schonmal im Voraus.

Vlg
Benito
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

python_freak hat geschrieben: 1. Wie kann ich eine Karte(z.B.: von Open Street Map) runterladen und dann so in Python einbetten, dass man auch Scrollen und Zoomen kann.
Das sind ja mehrere Fragen auf einmal ;-)
Das Runterladen ist ja vermutlich eher kein wirkliches Problem, viel interessanter wäre es, welche Grafikformate da angeboten werden (Pixel orientierte a la PNG oder vektorbasierte a la SVG)? Abhängig davon würden sich Fragen wie das Zoomen anders beantworten lassen.

Und für das "Einbetten" bieten sich GUI-Toolkist an. Die bekannteren sind Qt und Gtk, daneben gibt es noch Tk oder WxWidgets. Dafür existieren Python-Bindings. Da müsstest Du mal gucken, ob es ggf. für das ein oder andere bereits fertige Komponenten gibt, die das bereits können. Mir fiele da aus dem Qt-Umfeld spontan Marble ein.
Ansonsten ist eben Selbstbau angesagt. Wie das konkret aussieht, hängt dann vom Toolkit ab.
python_freak hat geschrieben: 2. Wie kann ich die GPS-Daten auslesen von einem Punkt auf den man geklickt hat.
Da müsstest Du wohl herausfinden, ob und inwiefern diese Daten mit den Bilddaten hinterlegt sind. OpenStreetMap wird da ja wohl ein Datenmodell haben, welches dokumentiert ist? Bezüglich der Darstellung muss man dann sicherlich ein Mapping zwischen Bildschirmkoordinate und GPS herstellen. Aber dafür wird es sicherlich Ansätze / Formeln geben.
python_freak hat geschrieben: 3. Wie kann ich den Punkt markieren.
Auch das hängt rein vom GUI-Toolkit ab - wenn Du die Darstellung meinst?!
python_freak hat geschrieben: Ich habe schon recherchiert und habe bei Wikipedia etwas über OsmApi.py gefunden. Die Beispiele funzen bei mir aber nicht. Außerdem habe ich noch tl.geodrawing entdeckt. Damit kann man ja anscheinend auf Karten zeichnen. Da ich dafür aber keinerlei anleitungen gefunden habe, habe ich auch dies aufgegeben.
Ich nutze Python Version 2.5 (Könnte daran liegen dass es nicht klappt. Ich hoffe aber nicht. Wenn doch weis vielleicht noch jemand etwas das auch bei Python 2.5 funzt.)
Da Du uns kein Beispiel inkl. Fehlermeldung postest, kann man schlecht darauf schließen, ob das mit Deiner (alten) Python-Version zusammen hängt. Gibt es denn keinerlei Doku zu diesen Frameworks, wo so etwas steht? Hast Du ggf. mal auf pypi gesucht? Das wäre immer meine erste Anlaufstelle auf der Suche nach Frameworks / Libs.
Aussagen wie "funzt net" sind jedenfalls ziemlich sinnlos, da wir uns darunter nichts vorstellen können ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@python_freak: Angesichts Deines Kenntnisstands, den Du in diesem und Deinen vorherigen Beiträgen offenbarst, glaube ich nicht, dass Du ein solches Programm in absehbarer Zeit "machen" kannst. Dir fehlt es ja bereits an Grundkenntnissen in der Programmierung graphischer Oberflächen, sonst müsstest Du nicht fragen, wie man "einen Punkt markiert".

Sage Deinen Freunden, sie sollen Google Earth nutzen. Nichts für ungut.
python_freak
User
Beiträge: 16
Registriert: Sonntag 22. August 2010, 09:06
Wohnort: Mein Zimmer
Kontaktdaten:

ok danke
Antworten