Dieses Projekt enthält Skripte zum Erstellen von KML-Dateien für Karten zur Darstellung der Mitglieder von LUKi - Linux User im Bereich der Kirchen e.V. Hierbei gibt es zwei Varianten:
- Öffentlich: Anzahl der Mitglieder an einem Ort wird angezeigt. Mitglieder mit
Jain der SpalteOnlinekarte Öffentlichwerden berücksichtigt. - Intern: Mit Vor- und Nachnamen. Mitglieder mit
Jain SpalteOnlinekarte Internwerden berücksichtigt.
Zum Einsatz kommen die beiden Skripte extract-data.py und csv2kml.py. Ersteres
extrahiert die nötigen Daten aus der ODS-Mitgliederliste und gibt sie als CSV
auf STDOUT aus. Dieses CSV dient als Eingabe für csv2kml.py, welches für die
PLZs mit dem zugehörigen Ländercode Geo-Lookups durchführt und eine KML-Datei
auf STDOUT ausgibt. Damit bei erneuter Ausführung nicht die gleichen Geo-Lookups
durchgeführt werden müssen, werden die Koordinaten in der Datei
geolookup-cache.csv im Arbeitsverzeichnis gespeichert.
Alle Abhängigkeiten sind im Pipfile eingetragen. Zur Installation der Abhängigkeiten empfiehlt sich pipenv.
$ pipenv install
$ pipenv shellAnschließend können die KML-Dateien wie folgt erstellt werden: Öffentlich:
$ ./extract-data.py --public Mitglieder.ods | ./csv2kml.py - >luki_public.kmlIntern:
$ ./extract-data.py --internal Mitglieder.ods | ./csv2kml.py - >luki_internal.kmlcsv2kml.py erwartet als Eingabe eine oder mehrere CSV-Dateien mit den Feldern
country_code, zip, name, und style. Weitere Felder werden ignoriert.
country_code ist ein zweistelliger Ländercode nach ISO-3166-1. Für style
kann mitglied oder treffen verwendet werden. Wird für name der Wert
Mitglied verwendet, erscheint bei mehrfachem Auftreten an einem Ort nicht
mehrfach Mitglied, sondern n Mitglieder, wobei n die Anzahl ist.
Als Datei kann - angegeben werden, um von STDIN zu lesen.
Sind beispielsweise die LUKi-Treffen in der Datei Treffen.csv und sollen mit
den Mitgliedern kombiniert werden, kann folgendes Kommando verwendet werden:
$ ./extract-data.py --public Mitglieder.ods | ./csv2kml.py - Treffen.csv >luki_public.kmlKommt es dabei zu einer Überschneidung (Mitglied und Treffen haben gleiche PLZ), wird das Treffen leicht nach Südwesten verschoben (Höhen- und Breitengrad werden um jeweils 0,01 verringert).