Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:daten:processing:maps [2022-06-13 13:13] – [Teil 3: Die generierte Datei in Google Maps importieren.] hofgf_informatik:daten:processing:maps [2023-06-26 07:23] (aktuell) hof
Zeile 5: Zeile 5:
 ### Teil 1: Gemeindedaten in einem Dictionary speichern: ### Teil 1: Gemeindedaten in einem Dictionary speichern:
  
-Die Gemeinde-Daten (Einwohner, Fläche) aus `gemeinden.csv` sollen über den Gemeindenamen als Schlüssel abrufbar sein.+Die Gemeinde-Daten (Einwohner, Fläche) aus `gemeinden.csv` sollen über den Gemeindenamen als Schlüssel abrufbar sein. Verwende den Code von [[gf_informatik:daten:processing:dictionaries#aufgabe_2csv_in_ein_dictionary_einlesen|Dictionaries: Aufgabe 2]] und ändere ihn so, dass die Gemeindedaten über Gemeindenamen erfragbar sind.
  
 Dazu gibt es zwei Möglichkeiten - welche gefällt dir besser? Dazu gibt es zwei Möglichkeiten - welche gefällt dir besser?
Zeile 26: Zeile 26:
  
 #### Ein einziges, verschachteltes Dictionary #### Ein einziges, verschachteltes Dictionary
 +
 Das einzige Dictionary enthält für jede Gemeinde ein kleines Dictionary mit zwei Einträgen:  Das einzige Dictionary enthält für jede Gemeinde ein kleines Dictionary mit zwei Einträgen: 
 +
 <code python> <code python>
 town_data = { town_data = {
Zeile 35: Zeile 37:
 </code> </code>
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 +
 <code python> <code python>
 def load_town_data(): def load_town_data():
Zeile 48: Zeile 51:
                 population = int(values[2])                 population = int(values[2])
                 area = float(values[3])                 area = float(values[3])
-                data[town] = {'name': town, 'canton': canton, 'population' : population, 'area': area}+                data[town] = {'canton': canton, 'population' : population, 'area': area}
             except ValueError:             except ValueError:
                 pass                 pass
Zeile 58: Zeile 61:
 ### Teil 2: Haltestellen-Daten einlesen und filtern ### Teil 2: Haltestellen-Daten einlesen und filtern
  
-Die Haltestellen-Daten der SBB sind in der Datei [[https://kantonsschuleromanshorn.sharepoint.com/:x:/r/sites/FSInformatik/Freigegebene%20Dokumente/OFI2/Daten/Processing/Beispieldaten/sbb.csv?download=1|sbb.csv]] verfügbar. Die Daten enthalten den Namen der Haltestelle sowie deren Koordinaten als geographische Breite (`Latitude`) und Länge (`Longitude`).+Die Haltestellen-Daten der SBB sind in der Datei [[https://kantonsschuleromanshorn.sharepoint.com/:x:/s/FSInformatik/Ee--2g8cf1FJqSwr9V-WVOMB4CiKukEqXjMQi7jhdojD3Q?download=1|sbb.csv]] verfügbar. Die Daten enthalten den Namen der Haltestelle sowie deren Koordinaten als geographische Breite (`Latitude`) und Länge (`Longitude`).
  
 **Achtung**: diese CSV-Datei benützt Semikolons als Separator, nicht Kommas (weil die Haltestellen oft mit Kommas getrennt sind: `Romanshorn, Bahnhof`): **Achtung**: diese CSV-Datei benützt Semikolons als Separator, nicht Kommas (weil die Haltestellen oft mit Kommas getrennt sind: `Romanshorn, Bahnhof`):
  
 ``` ```
-Name,Latitude,Longitude+Name;Latitude;Longitude
 Frauenfeld;47.55606;8.89795 Frauenfeld;47.55606;8.89795
 Romanshorn, Bahnhof;47.549999;9.300004 Romanshorn, Bahnhof;47.549999;9.300004
Zeile 70: Zeile 73:
 Wir filtern eine Anzahl Haltestellen heraus, und geben sie in einer neuen Datei im gleichen Format wieder aus. Damit Google Maps die Datei lesen kann, müssen wir wieder Kommas als Separator verwenden.  Wir filtern eine Anzahl Haltestellen heraus, und geben sie in einer neuen Datei im gleichen Format wieder aus. Damit Google Maps die Datei lesen kann, müssen wir wieder Kommas als Separator verwenden. 
  
-Damit Namen mit Kommas trotzdem richtig angezeigt werden, können sie in Anführungszeichen (`"`) eingefasst werden:+Damit Namen mit Kommas trotzdem richtig angezeigt werden, müssen sie in Anführungszeichen (`"`) eingefasst werden:
  
 ``` ```
Zeile 82: Zeile 85:
     * Ortschaften innerhalb eines geographischen Bereichs (Koordinaten innerhalb der unteren linken und der oberen rechten Ecke).     * Ortschaften innerhalb eines geographischen Bereichs (Koordinaten innerhalb der unteren linken und der oberen rechten Ecke).
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 +
 +Mit der Funktion `load_town_data` von [[gf_informatik:daten:processing:maps#ein_einziges_verschachteltes_dictionary|Teil 1]]:
  
 <code python haltestellen.py> <code python haltestellen.py>
Zeile 99: Zeile 104:
                     if town_data[name]['population'] >= min_pop:                     if town_data[name]['population'] >= min_pop:
                         name = '"' + name + '"'  # Namen in "" einpacken                         name = '"' + name + '"'  # Namen in "" einpacken
-                        filtered.write(','.join([name,str(lat),str(lng)]) + '\n')+                        filtered.write(name + "," + str(lat) + "," + str(lng) + '\n')
             except ValueError:             except ValueError:
                 pass                 pass
Zeile 135: Zeile 140:
  
 Teile deine Karte mit der Lehrperson! Teile deine Karte mit der Lehrperson!
 +
 +[[https://www.google.com/maps/d/edit?mid=1PY-1HifOIMr7-Z-VFHQs6CRNLmlFEvI&usp=sharing|Beispiel]]
  
 ### Teil 4: Optimieren ### Teil 4: Optimieren
Zeile 143: Zeile 150:
   * Es gibt keine Haltestelle "Zürich", nur "Zürich HB" - darum wird diese in den Gemeinden nie gefunden.   * Es gibt keine Haltestelle "Zürich", nur "Zürich HB" - darum wird diese in den Gemeinden nie gefunden.
   * Abhilfe: wir könnten jeweils nach dem ersten Wort des Haltestellennamens suchen (`name.split()[0]`)...   * Abhilfe: wir könnten jeweils nach dem ersten Wort des Haltestellennamens suchen (`name.split()[0]`)...
-    * ... und aufpassen, dass wir dann alle Tramhaltestellen Zürichs darstellen+    * ... und aufpassen, dass wir dann nicht alle Tramhaltestellen Zürichs darstellen
 ++++ ++++
  • gf_informatik/daten/processing/maps.1655126022.txt.gz
  • Zuletzt geändert: 2022-06-13 13:13
  • von hof