Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:daten_sca:maps_python [2023-06-12 19:03] – [Lösungen] sca | gf_informatik:daten_sca:maps_python [2023-06-20 18:39] (aktuell) – [Aufgabe 6: Abstimmungsresultate] sca | ||
---|---|---|---|
Zeile 35: | Zeile 35: | ||
Ein geschlossenes **Polygon** (Vieleckt) notiert man so: | Ein geschlossenes **Polygon** (Vieleckt) notiert man so: | ||
< | < | ||
- | " | + | " |
</ | </ | ||
In diesem Falle erhält man natürlich ein Dreieck. Beachte hier die Verwendung von **doppelten Klammern**. | In diesem Falle erhält man natürlich ein Dreieck. Beachte hier die Verwendung von **doppelten Klammern**. | ||
Zeile 43: | Zeile 43: | ||
" | " | ||
" | " | ||
- | " | + | " |
</ | </ | ||
- | ==== WKR in Google Maps ==== | + | ==== WKT in Google Maps ==== |
Um Punkte, Linien und Polygone in Google Maps einzuzeichnen, | Um Punkte, Linien und Polygone in Google Maps einzuzeichnen, | ||
Zeile 74: | Zeile 74: | ||
===== Aufgaben ===== | ===== Aufgaben ===== | ||
+ | Arbeite *nicht* mit Excel / Google Sheets, sondern mit einem reinen **Texteditor** wie **Visual Studio Code**. | ||
=== Aufgabe 1: Big 4 im TG === | === Aufgabe 1: Big 4 im TG === | ||
- | Erstelle ein leeres CSV-File mit Header " | + | Erstelle ein leeres CSV-File mit Header " |
- | + | ||
- | * Vier Punkte für die Gemeinden Frauenfeld, Weinfelden, Romanshorn, Kreuzlingen | + | |
- | * Linie von Weinfelden nach Kreuzlingen | + | |
- | * Viereck, welches | + | |
Importiere das File dann in Google Maps und stelle sicher, dass alles stimmt. | Importiere das File dann in Google Maps und stelle sicher, dass alles stimmt. | ||
Zeile 116: | Zeile 113: | ||
++++ | ++++ | ||
- | === Aufgabe 4: Städte mit vielen Einwohnern === | + | === Aufgabe 4: Gemeinden mit Anfangsbuchstaben === |
+ | |||
+ | 1. Wähle einen Anfangsbuchstaben, | ||
+ | 1. Ermittle nun alle Bahnhöfe, die mit diesem Buchstaben beginnen ... | ||
+ | 1. und generiere das entsprechende CSV-File. | ||
+ | 1. Importiere es in Google Maps, um diese anzuzeigen. | ||
+ | |||
+ | === Aufgabe 5: Städte mit vielen Einwohnern === | ||
Identifiziere (möglichst) alle Städte mit $10' | Identifiziere (möglichst) alle Städte mit $10' | ||
Zeile 125: | Zeile 129: | ||
1. Falls ja versuchst du im SBB-Datensatz die Koordinaten dieser Gemeinde zu ermitteln. | 1. Falls ja versuchst du im SBB-Datensatz die Koordinaten dieser Gemeinde zu ermitteln. | ||
1. **Achtung: | 1. **Achtung: | ||
+ | 1. Falls du einen passenden Eintrag gefunden hast im SBB-Datensatz, | ||
+ | 1. Optional kann man als " | ||
+ | |||
+ | |||
+ | |||
+ | === Aufgabe 5+ (Optional) === | ||
+ | |||
+ | Erweitere die letzte Aufgabe: Es fehlen noch einige Ortschaften, | ||
+ | |||
+ | === Aufgabe 6: Abstimmungsresultate === | ||
+ | |||
+ | Zu Abstimmungen kann man jeweils die detaillierten Daten im JSON-Format herunterladen. Hier der Link zu den | ||
+ | [[https:// | ||
+ | |||
+ | Hier direkt zur | ||
+ | [[https:// | ||
+ | |||
+ | 1. Lade den Datensatz zur aktuellsten eidgenössischen Abstimmung herunter. | ||
+ | 1. Verschaffe dir einen Überblick: Wie ist der Datensatz aufgebaut? Tipps: | ||
+ | 1. Mit `.keys()` kannst du sehen, welches die Schlüssel eines Dicts sind. | ||
+ | 1. Mit `type(...)` kannst du ermitteln, um was für einen Typ es sich handelt. | ||
+ | 1. Achtung: Der Datensatz beinhaltet ein Dict, welches Listen enthält, welches wiederum Dicts enthält u.s.w. | ||
+ | 1. Falls du überfordert bist damit, findest du unten die Antwort | ||
+ | 1. Finde in diesem Datensatz die Anzahl Ja-Stimmen zu allen Vorlagen in *deinem* Wohnort. | ||
+ | 1. Finde die extremsten Gemeinden zu den jeweiligen Vorgaben: Höchste und tiefste Anzahl Ja- resp. Nein-Stimmen | ||
+ | 1. **Zusatzaufgabe: | ||
+ | |||
+ | ++++Tipps: Aufbau Datensatz inkl. Beispiel| | ||
+ | <code python> | ||
+ | # lade Datensatz (JSON) in ein dict mit Name data | ||
+ | |||
+ | vorlagen = data[' | ||
+ | vorlage = vorlagen[0] # vorlage beinhaltet alle Infos zur ersten Vorlage (erstes Element der Liste vorlagen | ||
+ | print(vorlage[' | ||
+ | |||
+ | kantone = vorlage[' | ||
+ | kanton = kantone[3] # Infos zu einem Kanton (Zahl 0 - 25, weil 26 Kantone) | ||
+ | print(kanton[' | ||
+ | |||
+ | gemeinden = kanton[' | ||
+ | gemeinde = gemeinden[7] # Alle Infos zu einer Gemeinde | ||
+ | |||
+ | resultat = gemeinde[' | ||
+ | jaStimmenInProzent = resultat[' | ||
+ | """ | ||
+ | </ | ||
+ | ++++ | ||
Zeile 149: | Zeile 200: | ||
++++ | ++++ | ||
- | ++++Aufgabe | + | ++++Aufgabe |
+ | |||
+ | Reguläre Lösung | ||
<code python> | <code python> | ||
import json | import json | ||
Zeile 171: | Zeile 224: | ||
print(" | print(" | ||
</ | </ | ||
+ | |||
+ | Mit optionalem Part: | ||
+ | <code python> | ||
+ | import json | ||
+ | |||
+ | INHABITANTS_MIN = 50000 | ||
+ | |||
+ | with open(" | ||
+ | sbb = json.load(json_file) | ||
+ | | ||
+ | with open(" | ||
+ | gemeinden = json.load(json_file) | ||
+ | |||
+ | def generate_wkt_point(town): | ||
+ | return '"' | ||
+ | |||
+ | with open(' | ||
+ | out_file.write(' | ||
+ | |||
+ | for town in gemeinden: | ||
+ | if gemeinden[town][' | ||
+ | success = False | ||
+ | for ext in ['',' | ||
+ | try: | ||
+ | out_file.write(generate_wkt_point(town + ext)) | ||
+ | success = True | ||
+ | break | ||
+ | except: | ||
+ | continue | ||
+ | if not success: | ||
+ | for t in sbb: # if not found yet, split and try to match first part | ||
+ | if t.split()[0] == town: | ||
+ | out_file.write('"' | ||
+ | print(town) | ||
+ | break | ||
+ | </ | ||
+ | |||
++++ | ++++ | ||
</ | </ |