Projekt Kartendarstellung

Städte eingeblendet in Wikipedia-Karte[1]
Die terra-Datenbank speichert für die Orte auch die Geokoordinaten (also Längen- und Breitengrad). Es wäre doch schön, wenn Python gesuchte Orte auf einer Karte anzeigen würde, so wie das im Einstiegsbeispiel für eine Webseite gezeigt wurde.

In einem kleinen Programmierprojekt kannst du hier die wesentlichen Schritte nachvollziehen.

Ein wesentlicher Punkt für die korrekte Anzeige von Längen- und Breitengrad ist deren Umrechnung in Bildschirmkoordinaten. Um diese zu vereinfachen, verwenden wir in diesem Beispiel nur sogenannte rechteckige Plattkarten. Bei diesen haben Breiten- und Längenkreise konstante Abstände - statt variabel wie dies ja in Wirklichkeit ist.

Für diese Karten kann man folgende Python-Funktionen verwenden, um die Koordinaten umzurechnen:

# Konstanten: Grenzen der Karte in Grad
cNord = 55.1
cSued = 47.2
cWest = 5.5
cOst  = 15.5

def InPixelNS(bild, grad):
  """ Umrechnung Geokoordinate in Bildkoordinate. Übergabe: Bild (für dessen Höhe) und Breitengrad """
  erg = bild.height()-round((grad-cSued)*bild.height()/(cNord-cSued))
  return erg

def InPixelWO(bild, grad):
  """ Umrechnung Geokoordinate in Bildkoordinate. Übergabe: Bild (für dessen Breite) und Längengrad """
  erg = round((grad-cWest)* bild.width()/(cOst-cWest))
  return erg

Aufgabe 1

  1. Versuche, die Umrechnung der Koordinaten nachzuvollziehen. Warum muss für die y-Koordinate (Breitengrad) der Wert von der Bildhöhe bild.height() abgezogen werden?
  2. In der Datei karte1.zip findest du einen Ausgangspunkt für die Programmierung (Python-Datei und passende Karten). Auch wenn du noch nicht mit der Programmierung von grafischen Benutzeroberflächen vertraut bist, kannst du bestimmt das Programm so ergänzen, dass alle Millionenstädte in Deutschland in der Karte markiert werden.
  3. Verändere das Programm so, dass du statt der Deutschlandkarte die Europakarte verwendest.

Aufgabe 2

Die Koordinaten der Karten müssen noch "von Hand" im Programm jeweils angepasst werden. Ergänze eine Tabelle karte in der terra-Datenbank (z.B. mit phpMyAdmin, in der du die Koordinaten der unterschiedlichen Karten speichern kannst. Dein Programm soll dann für die jeweilige Karte deren Eck-Koordinaten aus der Datenbank lesen.

KlickenHilfe - Klicke auf den Pfeil!

Quellen

X

Fehler melden

X

Suche