HE:OffenerHaushalt

Aus Piratenwiki
Wechseln zu: Navigation, Suche

Überblick

Diese Wikiseite soll einen Überblick geben, wie man einen Haushalt von einem PDF in eine visualisierte Form bringen kann.

Ziel des Unterfangens ist es, Anträge zu schreiben, damit kommunale Kämmereien die Daten in einem offenen Format bereitstellen und einfach unter Plattformen wie http://bund.offenerhaushalt.de präsentiert werden können.

Dadurch erhalten sowohl Abgeordnete als auch Bürger einen einfacheren Zugang zu den teils sehr umfangreichen Zahlenwerken.

Haushalte konvertieren

In der Regel werden die hessischen kommunalen Haushalte in Form eines PDFs veröffentlicht oder alternativ als Ausdrucke.

Öfters sind diese PDFs auch noch gegen Copy+Paste gesichert.

Um dennoch eine Verarbeitung zu ermöglichen, hat der LV Hessen zwei Windows-Programme angeschafft:

Zuvor wurde ein Strauß von Programmen, kommerziell und OpenSource, getestet, um das beste und einfachste Ergebnis zu erzielen.

Das PDF wird entschützt, sofern dies notwendig sein sollte und dann in eine Excel-Tabelle konvertiert. Es wird das PDF-Grabber-Profil "Textbasiert (wenig Spalten)" verwendet.

Haushalte parsen

Liegt der Haushalt als Excel-Tabelle vor, beginnt die eigentliche Arbeit: Welche Daten sind wie zu extrahieren?

Primär interessant sind die Ausgaben, welche in der Regel als "Ordentliche Aufwendungen" bezeichnet sind. Allerdings gliedern sich die Haushalte teilweise in verschiedenen Hierarchien.

Zum Beispiel hat die Stadt Gießen drei Ebenen: Gruppen, Ämter und Produkte. Der Main-Kinzig-Kreis hat dafür vier Ebenen: Dezernate, Ämter, Gruppen und Produkte.

Dies gilt es also als erstes festzustellen.

Gruppen-Vorgaben

Das Land Hessen hat eigentlich eine feste Vorgabe an Gruppen:
01 => Innere Verwaltung
02 => Sicherheit und Ordnung
03 => Schulträgeraufgaben
04 => Kultur und Wissenschaft
05 => Soziale-Leistungen / Soziale Hilfen
06 => Kinder-, Jugend- und Familienhilfe
07 => Gesundheitsdienste
08 => Sportförderung
09 => Räumliche Planung und Entwicklung, Geoinformationen
10 => Bauen und Wohnen
11 => Ver- und Entsorgung
12 => Verkehrsflächen und -anlagen, ÖPNV
13 => Natur- und Landschaftspflege
14 => Umweltschutz
15 => Wirtschaft und Tourismus
16 => Allgemeine Finanzwirtschaft

Parsing-Strategie

Es ist notwendig, sich eine Strategie beim Parsing zu überlegen, um möglichst einfach an die relevanten Zahlen zu kommen.

In der Regel haben die Seiten, auf denen die gesuchten Werte stehen, ein einheitliches Layout. Dies kann man nutzen, um die benötigten Seiten zu identifizieren.

In den Seiten braucht es dann Parsing-Regeln, um die korrekten Tabellen-Zeilen und Zellen zu finden.

Für beides hat sich der Einsatz von regulärer Ausdrücken (RegEx) bewährt.

Fehler-Korrekturen

Teilweise ist es notwendig Fehler zu korrigieren. Dies kann man teilweise im erzeugten Excel-Dokument machen oder man baut alternative Parsing-Regeln, die solche Konvertierungsfehler finden ein.

Auch muss man ab und zu beachten, dass relevante Seiten auf der nachfolgenden Seite fortgesetzt werden.

Zwischen-Format

Da das Parsen eines 800 Seiten Excel-Dokumentes teilweise recht lange dauert, bietet es sich an, dass die extrahierten Daten zwischen gespeichert werden.

Eine verschachtelte Array-Struktur in Form eines Baumes, der die Abhängigkeiten der Ebenen widerspiegelt, war nahe liegend.

OpenSpending Format

Zur Visualisierung der Haushaltsdaten wird die OpenSource-Software OpenSpending verwendet.

Es braucht eine CSV-Datei, um die Daten bereit zu stellen und eine JSON-Datei, um die Steuerung der Daten zu übernehmen und so die Abhängigkeiten zu definieren.

Der DataHub

Im DataHub werden die Daten abgelegt, damit sie für die OpenSpending Sandbox verwendet werden können.

Die Daten müssen mir einer OpenData-Lizenz versehen werden, um nutzbar zu werden.

Man muss sich dort registrieren.

Sandbox

Auch für die Sandbox ist eine Registrierung erforderlich, um die Daten importieren zu können.

Alle OpenData-Pakete werden, sofern mit OpenData-Lizenz versehen, hier aufgelistet.

Nach dem Klick auf "Continue" müssen model (die JSON-Datei) und data (die CSV-Datei) ausgewählt werden. model:mapping bleibt leer.

Ein Klick auf "Import it?" startet den Vorgang.

Preflight

Im Preflight werden mögliche Fehler und/oder Probleme beim Import aufgezeigt.

Result

Ist der Import erfolgreich, so findet sich der visualisierte Haushalte in der Liste der Sandbox wieder.

Beispiele

Stadt Gießen

Landkreis Gießen

Main-Kinzig-Kreis

Error 500

Die Sandbox liefert ab und zu einen Fehler 500 aus. Es scheint mehrere Worker zu geben oder eine Art LoadBalancer, wo manche von defekt sind.

Kolorierung

OpenSpending erlaubt es die Daten einzufärben. Besonders gelungen ist dies natürlich beim Offenen Haushalt selbst.

Adobe bietet mit Kuler eine Plattform für Farbmuster an, die nach Registrierung und entsprechendem Hinweis, der sich leicht in die Beschreibungen einbauen lässt, genutzt werden kann.

Sourcecode

Die bisher erstellten Skripte befinden sich im GitHub der Piratenpartei.

Vorbereitung

  • Es müssen noch die Verzeichnisse data und pdfs erzeugt werden
  • Die Haushalte in PDF und XLS werden im Verzeichnis pdfs abgelegt
    • Für Stadt Gießen in pdfs/GI/Stadt
    • Für den Main-Kinzig-Kreis in pdfs/MKK
  • In die Datei _kuler_load_color_scheme.ini ist der Kuler API-Key einzutragen

Nutzung

  1. Konvertieren der PDFs in XLS
  2. Extrahieren der Daten per PHP-Skript, z.B. "php mkk_xls_parser_2011_stand.php"
  3. Konvertieren ins OpenSpending-Format, z.B. "php mkk_openspending_converter.php"