Home

OpenDataHub HSR – Teilen, Beziehen und Konvertieren von Daten

image

Contents

1. in relationale Ope ratoren wie lt etc Pradikate und like regex letzteres ist eine Abweichung von ANSI SQL welches eine separate Syntax f r Like Filter hat Alle Funktionen werden ber eine Function Registry in Python auf gerufen und k nnen daher einfach erweitert werden Es kann eine Order By Klausel angegeben werden Falls Unions verwendet werden muss die Order By Klausel am Ende angegeben werden nicht pro Query Mehrere Queries k nnen per Union zusammengef gt werden Die Implementation entspricht dem UNION ALL aus SQL es findet also keine Deduplizierung statt Tabelle 5 2 Durch ODHQL implementierte Features Jede Transformation definiert eine Liste von Feldern oder Werten sowie mindestens eine Datenquelle 5 2 3 Beispiele Folgende Elemente sind in der Feld Liste erlaubt Feld Name des Feldes mit dem Namen oder Alias der Datenquelle als Pr fix Feldnamen und Aliase k nnen in doppelten Anf hrungszeichen geschrieben werden z B wenn Sonder oder Leer zeichen verwendet werden sollen Zu beachten ist dass Feldnamen immer einen Pr fix brauchen auch ausserhalb der Feld Liste a beschreibung a geom as geometry a Zentroid X m Wert Integer Float Boolean Null oder String in einfachen Anf hrungszeichen Es muss zwingend ein Alias angegeben werden 51 52 5 DESIGN UND IMPLEMENTATION 1 as one 3 14 as pi false as active sun as local_star Funktion Ei
2. MST CNE UTIDE types UString Fo Shttp www postgresql org docs 9 3 static sql creatematerializedview html 36 4 4 INTERMEDIARES FORMAT UND TRANSFORMATIONSSPRACHE 37 street Mr Street type String namori What WiNehe O heat type Real Jre geometry_type Point src_layer RoadsExdm2ben Roads StreetNamePosition geom_ fields nampos src NamPos type Point roadsexdm2ben_roads_streetaxis fields tid SC UT type String Fo street Sret Street typen string geometry_type MultiLineString src_layer RoadsExdm2ben Roads StreetAxis geom_ fields geometry METAL GeCMmeLE y type lMultiLineString Aktuell werden diverse der gew nschten Features von ogrtransform nicht unterst tzt wie z B Joins oder Filter Sofern GDAL diese unterst tzt bedeutet das eine Erweiterung auf Python Ebene An dernfalls muss eine Erweiterung auf GDAL Ebene durchgef hrt werden GDAL unterst tzt eine grosse Menge an Formaten Leider sind jedoch nicht alle Treiber von der selben Qualit t und Dateiformate ohne Geometrie sind schlecht vertreten Sofern alle Features beim Kompilieren aktiv sind 139 Raster und 83 Vektor Formate Stand 6 Juni 2015 37 38 4 ANALYSE 4 4 4 Python Tabellenstrukturen Intermedi res Format Petl ist eine Python ETL Bibliothek welche es erlaubt divers
3. y Redes Sociales flickr twitter linkedin facebook Y Tags Clear All XLS lod 1085 provenanceweb publications 915 Linked Data provenance and explanation mn potication ntripies SS metamor met a metairct schema Senegal 761 Abbildung 2 2 Paket Liste auf datahub io opendatahub it opendatahub it ist eine italienische ebenfalls CKAN basierte Plattform 6 2 UMSETZUNG 2 1 3 Feature Manipulation Engine FME Feature Manipulation Engine FME ist ein kommerzielles Produkt der Safe Software Inc Der Fokus liegt auf der Transformation Konvertierung und Integration von Daten in einer Desktop Applikation geopol ch Geopol ist eine kommerzielle Web to FME Schnittstelle 2 1 4 Pentaho Kettle Pentaho Kettle ist eine Open Source Desktop Applikation f r ETL Aufgaben Bl spoon Kettle 30 LoadCustomer File Edit Repository Transformation Job Wizard Help als a a ar gt Re R New Open Save Saveas Print Run Preview Debug Replay Verify Impact GetSQL Explore DB F3 Main Tree 22 LoadOLAPParallel X LoadCustomer 2 E Core Objects input output Lookup ae GetCustomer E issihezi SortCustByCityState T tate i Dimi F Value Mapper closure Generator amp Split Fields 4 Dummy do nothing Se Append streams F F R t st e x x M abort CustomerAdgionLookup Rename ZipCode to zip Remove zip EP add se
4. 2 Samt aller Historie 26 3 7 SCHNITTSTELLEN 27 e G localhost 5000 Oy ao a 3 test repo Sign out Import Export CSV 7 rows BON Show 5 10 25 50 rows Starting from ci6huzf52000057coxym lgy7 prename surname street Leonie Hahn Via Camischolas sura Update Cancel F Manuela Eichel Vallerstrasse F Sven Schuhmacher Via Stazione F Lucas Rothstein Betburweg 4 Ulrike Baumgartner Via Verbano F Markus Maier Dreib ndenstrasse F Ulrich Theiss Sondanella nr 86 115 2 20 133 135 141 zip 1135 3765 9323 4514 6951 6774 6404 city key Denens ci6huzf52000057coxym5lgy7 Pfaffenried ci6hvOd0a00005vco99jxr7w0 Steinach ci6hw1mmh0000x0cocuctsvc3 Lommiswil ci6hw27dq0001x0coxzfy4271 Valcolla ci6hw2v730002x0colg3f6g4q Dalpe ci6hw4to60003x0copwgvugsy Greppen ci6hw717u0004x0cocfquv0j9 Abbildung 3 3 dat Webfrontend 3 7 Schnittstellen first previous next gt last version 1 F r eine Beschreibung der von dat zur Verf gung gestellten Application Programming Interface API siehe 3 8 Fazit Zum aktuellen Zeitpunkt Februar 2015 implementiert dat alpha 6 9 6 folgende Features e Datenspeicher auf Basis eines Key Value Stores LevelDB e Limitierte Synchronisation basierend auf einem Change Stream So weit wir erkennen k nnen ist keine Konflikt Verwaltung vorhanden sondern lediglich Ein Weg Synchronisation vorgesehen e Pro dat
5. 5 4 FORMAT UNTERSTUTZUNG 59 5 4 Format Unterst tzung 5 4 1 Unterst tzte Formate beschreibt die implementierten Formate Format Implementiert via CSV inkl GeoCSV Geo Pandas Excel xls xlsx Pandas GML ogr2ogr GeoJSON GeoPandas GeoPackage GeoPandas Interlis 1 ogr2ogr Interlis Modell ili custom JSON Pandas KML fastkml custom ESRI Shapefile GeoPandas WFS nur Parser ogr2ogr XML custom Tabelle 5 6 Beschreibung der implementierten Formate GeoPandas verwendet via Fiona ebenfalls GDAL 5 4 2 Probleme mit GDAL F r einen grossen Teil der Formate wird GDAL verwendet entweder via GeoPandas Fiona oder direkt per ogr2ogr Folgende GDAL Versionen stehen zum aktuellen Zeitpunkt zur Verf gung e 1 10 1 e 1 11 0 1 11 2 e 2 0 0betal Die Entwicklungsumgebung besteht aus einer virtuellen Maschine mit Ubuntu 14 04 LTS f r welches ein GDAL Package in Version 1 10 1 vorhanden ist Auf Wunsch der Betreuers wenn m glich Unterst tzung f r das relativ neue Format GeoPackage einzubauen wurden diversen M glichkeiten gepr ft GDAL 1 10 1 unterst tzt GeoPackage nicht Im Versuch diese Unterst tzung einzubauen wurde GDAL selbst kompiliert Dem Betreuer waren diverse Probleme mit GDAL 1 11 2 bekannt weswegen 1 11 1 gew hlt wurde In Tests wurden folgende Probleme gefunden 9 Deaktiviert siehe 10 nttps pypi python org pypi Fiona 59 60 5 DESIGN UND IMPLEMENTATION e In GDAL 1 11 0 bi
6. Float Float Integer Integer Boolean true false Null null SingleQuotedString lt string gt lt in gt lt single gt quotes DoubleQuotedString lt string gt lt in gt lt double gt quotes DataSourceName Identifier FieldName Identifier Alias Identifier Identifier a z A z _ a z A Z _ Integer DoubleQuotedString 160 OpenDataHub Query Language Inhalt ODHQL e Was ist ODHQL e Syntax o Oo O O o O Bestandteile einer Abfrage Felder und Ausdr cke Datenquellen Filter Sortier Klausel Union e Datentypen e Funktionen O O O O O O O O O O O O O O O O O O O O O O O O O O O O 0 0 0 CAST values datatype CONCAT a b args CONTAINS strings pattern match_case True COUNT strings pattern ENDSWITH strings end EXTRACT strings pattern group 1 GET strings index LEN strings LOWER strings LTRIM strings NVL a b PAD strings width side RANGE start 1 step 1 REPEAT strings times REPLACE strings pattern replace match_case True ROUND col decimals RTRIM strings ST_Area geoms ST_AsText geoms ST_Centroid geoms ST_GeomFromText wkts srid None ST_SetSRID geoms srid ST_SRID geoms ST_Transform geoms srid ST_X geoms ST_Y geoms STARTSWITH strings start SUBSTRING Strings start length None TO_CHAR values format None TO_DATE values format None TRIM strings 161 o UPPER
7. Gleichzeitig kann die Wahl eines intermedi ren Formates nicht unabh ngig von der Wahl einer Transformations Implementation getroffen werden So w re es zum Beispiel unpraktikabel als Zwi schenformat eine Datenbank basierte L sung zu w hlen w hrend die Transformation auf Dateiebene stattfinden soll F r unterschiedliche Datenstrukturen sind verschiedene Transformationsans tze geeignet Diese Ar beit befasst sich aus Zeitgr nden nur mit tabellarischen Daten fasst die Anforderungen an eine Transformationssprache zusammen 34 4 4 INTERMEDIARES FORMAT UND TRANSFORMATIONSSPRACHE 35 Anforderung Beschreibung Mapping Felder m ssen 1 1 auf andere Felder zugeordnet werden k nnen Feld umbenennen Default Werte Neue Felder mit Default Werten m ssen hinzugef gt werden k n nen Joins Mehrere Datenquellen m ssen miteinander verkn pft werden k n nen Dabei muss immer eine Join Bedingung angegeben werden keine kartesischen Produkte Filter Pr dikate Daten sollen gefiltert werden k nnen Erweiterbare Operationen Es sollen neue Operationen definiert werden k nnen vorzugsweise in Python Sortierung Das Resultat der Transformation soll sortiert werden k nnen Tabelle 4 6 Anforderungen an die Transformationssprache Konfiguration 4 4 2 Datenbank Intermedi res Format Bei dieser Variante w re das intermedi re Format quivalent der Datenspeicherung wie sie in beschrieben ist Die Daten w rden aber denno
8. testuser firstname Aur last_name 3 data http beta opendatahub ch api vi transformation 2001 data is_template false preview http beta opendatahub ch api vi transformation 2001 preview referenced_file_groups gt http beta opendatahub ch api v1 transformation 2001 filegroups referenced_transformations gt http beta opendatahub ch api v1 transformation 2001 transformations related_transformations I DOO name TROBDB Alle Daten 67 68 5 DESIGN UND IMPLEMENTATION type transformation File Groups Die file_group URL liefert die Liste der File Groups die zu diesem Dokument geh ren Siehe auch Preview Die Preview URL liefert eine Vorschau der Daten im Package Siehe auch Referenced File Groups Transformations Dies sind URLs f r File Groups bzw Transformations welche in dieser Transformation verwendet wurden Template Templates sind abstrakte Transformationen welche als Vorlage f r konkrete Transfor mationen dienen F r Templates kann keine Vorschau erstellt werden Data URL f r den Download der Daten Siehe f r Details 5 5 6 Dokumente Dokument Liste GET api v1 document Die Dokument Liste ist identisch zur Package Liste mit der Ausnahme dass nur Dokumente aufge f hrt werden Siehe f r Details Dokument Details GET api v1 document lt id gt Identisch zu Package Details mit der Ausnahme das nur Dok
9. Fahrbahn Stephan Limmattalstrasse Neubau Rad und 2014 11 2015 08 NULL both Verkehrsbehinderung CH Odermatt Oetwil an der Gehweg Instandsetzung 17 31 Verkehrsf hrung wird Limmat Eahrhahn mit A Abbildung 3 4 ODH Details einer Transformation 1 Mit minimaler Einf hrung k nnen einfache Transformationen zusammen geklickt werden Mit ODHQL Kenntnissen k nnen auch komplexe Transformationen geschrieben werden Als Datenquellen dienen hochgeladene Daten WFS Server oder bereits bestehende Transformationen OpenDataHub ch x lt B locathost 5000 transformation create as ME gt Test TbaBaustellenZHWFS gml Testdaten Originalformat GML ThaBaustellenZHWFS xsd testuser EB v Test tiefbaustelle json testuser Testdaten Originalformat GeoJSON tiefbaustelle json 1 Tabelle 0DH10 tiefbaustelle 9 Spalten 53 Zeilen FE 213 41 10 25 50 100 ODH10_tiefbaustelle Alias t2 W hlen Sie die ben tigten Felder aus Klick und w hlen Sie die Spaltennamen S Si Abbildung 3 5 ODH Transformations Assistent Bereits vorhandene Transformationen k nnen geklont oder falls der eingeloggte Benutzer der Besitzer ist auch bearbeitet werden 11 12 3 RESULTATE UND AUSBLICK OpenDataHub ch x localhost Bearbeiten Name Titel TROBDB Baustellen Z rich WFS Beschreibung TROBDB Baustellen Z rich WFS b gemeindename 1 180 as title nn XY An Xd
10. http localhost 5000 api vi fileGroup 12 J urls g data http localhost 5000 api v1 fileGroup 12 data preview http localhost 5000 api v1 fileGroup 12 preview related_transformations q Mails BOOS name Sanitize Baustellen kml i Document Das Dokument zu dem diese File Group geh rt Siehe auch Files F hrt die zur File Group geh renden Dateien auf Siehe auch URLs F hrt die zur File Group geh renden URLs auf Siehe auch Data URL f r den Download der Daten Siehe auch Preview URL f r eine Vorschau der Daten in dieser File Group Siehe auch Related Transformations F hrt Transformationen auf die diese File Group verwenden 12 5 5 API 73 5 5 9 Files File Liste GET api v1 files Liefert eine Liste der vorhandenen Dateien Programmcode 5 13 Beispielantwort f r GET api v1 file count 41 next http localhost 5000 api v1 file page 2 previous null results ia 1 url https opendatahub hsr dev herokuapp com api vi file 1 file_name mockaroo com csv efiet formati cover file_group gt https opendatahub hsr dev herokuapp com api v1 fileGroup 1 Fo Dieser Endpunkt unterst tzt Paging File Details GET api v1 file lt id gt Liefert Informationen zu einer einzelnen Datei Programmcode 5 14 Beispielantwort f r GET api v1 file 1 id 1 url https op
11. unused variable openDataHu app scripts auth controllers account settings controller ts 30 15 comment must start with lowercase letter app scripts auth controllers account settings controller ts 34 19 comment must start with a space eCETOr sea Toe tastes Warning las ES Ten terre Sera ihedaUSCm rorceLonconEnue Aborted due to warnings BUILD FAILED Errors while running grunt see home travis build hsr ba fs15 dat opendatahub target reports grunt err 5 2 3 AngularJS Bei AngularJS gibt es eine Vielzahl von M glichkeiten ein und dasselbe zu erreichen Aus diesem Grund ist es umso wichtiger sich auf bestimmte Vorgehensweisen zu einigen Grunds tzlich gelten die mittlerweile etablierten und nahezu offiziellen AngularJS Richtlinien und Best Practices von John Papa angular styleguide Die Richtlinien sind auf JavaScript ausgelegt Da wir TypeScript verwenden sind nur diejenigen anzuwenden die auch im TypeScript Kontext zutreffen bzw noch Sinn machen Besonders zu beachten sind folgende Regeln e Verwendung der controller as Syntax um Scope Vererbung zu vermeiden e DOM Manipulationen finden ausschliesslich in AngularJS Direktiven statt e Single Responsibility Priciple Eine Klasse Service Controller pro Datei mit Ausnahme von kleinen Sub Controllern die zu einem anderen geh ren oder nicht exportierte private Klas sen Es wurden eigene TypeScript New File IntelliJ Templates f
12. 2015 Geometa Lab HSR GitHub Abbildung 2 1 Suche von Daten in OpenDataHub beta opendatahub ch Daten aufrufen Es wird eine Liste mit allen in OpenDataHub verf g baren Daten pr sentiert e Hierbei handelt es sich um sogenannte Packages Ein Package enth lt potenziell mehrere Daten Tabellen Auch Transformationen von Daten oder gar Transformationen anderer Transformationen werden ber diese zentrale Stelle gelistet Mittels dem Suchfeld kann im hinterlegten Titel sowie Beschreibung der Daten und Trans formationen gefiltert werden Optional k nnen auch nur die selbst erstellten Daten angezeigt werden Durch Klick auf den Titel werden Detailinformationen angezeigt Diese Ansicht wird in den folgenden Abschnitten erl utert 2 1 DATENSUCHE UND BEZUG 131 2 1 1 Daten herunterladen OpenDataHub ch x gt Ci beta opendatahub ch code 963fd42830db2db64d99 document 4001 Beschreibung Enth lt alle Mitarbeiterdaten der XY AG ERB Besitzer Fabio Scala fabioscala Dokument Hinzugefiigt Heute um 10 07 Uhr Enthaltene Dateien employees csv CSV employees csv CSV csv ESRI Shapefile sh ODH4001_employees pafile ehp Excel xlsx GML gml Id Prename Surname GeoJSON geojson il Christian Stewart 903058 INTERLIS 1 itf 2 David Thomas 363276 NTERLIS 1 Modell ili JSON json 3 Aubrey Lewis 407540 KML kml XML xml Original u 2 3 4 5 6 Fd i 333334 3 10 ZT ruu Abbil
13. AT AS object_name closed FALSE THEN closed maintenance FALSE OR CONTAINS t tex FROM ODH11 AS t Datenquelle ORDER BY 4 Felder und Ausdr cke In der Feld Liste sind folgende Ausdr cke erlaubt Feld Bezieht sich direkt auf ein Feld einer Datenquelle Der Name des Feldes muss mit dem Namen oder Alias der Datenquelle prefixed werden Optional kann ein Alias angegeben werden prefix feld AS alias Wert Ganzzahl Integer Fliesskommazahl Float Trennzeichen ist ein Punkt Zeichenkette String in einfachen Anf hrungszeichen Boolean true false oder Null Es muss ein Alias angegeben werden Einfache Anf hrungszeichen k nnen innerhalb eines Strings mit erzeugt werden Backslashes mit MANU Funktion Besteht aus einem Namen und einer Liste von Argumenten Es muss zwingend ein Alias angegeben werden SUBSTRING NVL EXTRACT t text no value 1 100 AS titl e Fallunterscheidung Case Ausdruck Kann verwendet werden um Werte zu bersetzen Es muss mindestens eine Bedingung angegeben werden Das Format ist when lt Bedingung gt then lt Ausdruck gt wobei alle unten beschriebenen Bedingungs Arten sowie hier beschriebenen Ausdr cke erlaubt sind CASE WHEN CONTAINS t text closed FALSE THEN closed WHEN CONTAINS t text maintenance FALSE OR CONTAINS t text mai ntenance FALSE THEN obstructed ELSE other END Datenquellen Es muss mindestens ein
14. E a session HTTP 200 OK name foo Browser POST authenticate username amp password HTTP 200 OK token IWT GET api user Authorization Bearer IWT validate token HTTP 200 OK name foo Abbildung 4 5 Cookie vs Token Auth 4 7 3 Fazit werden Entscheid 4 7 Session Authentifizierung Da wir die API vom Frontend so weit wie m glich trennen wollen setzen wir auf die modernere Variante mittels JWT So k nnte die API auch aus einem Client mit anderer Domain verwendet 47 5 Design und Implementation 5 1 Architektur Daten Lieferanten liefern ihre Daten per Web Interface oder REST API Diese Daten werden in der Datenbank gespeichert und im Web Interface angezeigt Daten Nutzer rufen diese wieder Uber das Web Interface oder per REST API ab Dritt Entwickler konnen eigene Komponenten entwickeln und beisteuern wie in zu sehen ist Parser nehmen Daten entgegen und bereiten sie zur Weiterverarbeitung auf Formatter formatieren Daten in das vom Benutzer gew nschte Format Stores uploaded data unchanged Metadata Parses file formats Share Data Create REST API Formats data into User Browser api v1 package document Get data in the format transformation Abbildung 5 1 Grobe Architektur Ubersicht Transforms data into Formatters CSV JSON Geo 5 1 1 Komponenten und Packages erl u
15. STARTSWITH ODH7 ort Z rich AS in_zurich SUBSTRING strings start length None Liefert den angegebenen Teil des Texts Parameter e strings Spalte oder Wert e start Startposition startet bei 1 e length Gew nschte L nge Ohne Langenangabe wird der Rest des Texts zur ckgegeben Beispiel SUBSTRING ODH30 description 1 100 AS title 172 TO_CHAR values format None Konvertiert eine Spalte oder einen Werte zu TEXT Fur DATETIME Spalten Werte kann ein Format angegeben werden Parameter e values Spalte oder Wert e format Falls values vom Typ DATETIME ist Siehe Dokumentation Beispiel TO_CHAR TO_DATE ODH30 baubeginn d m Y Y m d AS baubeginn TO_DATE values format None Konvertiert ein Datum in TEXT Form zu DATETIME Parameter e values Spalte oder Wert der konvertiert werden soll e format Format Angabe Siehe Dokumentation Beispiel TO_DATE ODH5 baubeginn d m Y AS baubeginn TRIM strings Entfernt White Space vom Beginn und Ende der Spalte oder des Wertes Parameter e strings TEXT Spalte oder Wert Beispiel TRIM ODH7 strasse AS strasse UPPER strings Konvertiert alle Buchstaben in Grossbuchstaben Parameter e strings TEXT Spalte oder Wert Beispiel UPPER ODH7 ort AS ort XPATH values path Wendet den XPath Ausdruck auf die Spalte oder den Wert an Parameter 173 e values Spalte oder Wert mit g ltigem XML in TEXT Form e path XPath Ausdruck
16. api rpc POST api rpc Ein Server Endpunkt fiir multilevel Node js Modul GET api metadata Liefert Informationen zum Schema Diese Daten werden wahrend der Replikation verwendet GET api replicator receive und GET api replicator send Wird f r Replikation verwendet C 4 2 JavaScript dat kommt als Node js Modul daher und ist die einzige M glichkeit berhaupt um auf performante Art und Weise das dat Repository zu manipulieren Das CLI verwendet intern ebenfalls die JavaScript API Dieser Abschnitt zeigt auf welche Interaktion mit dem Repository via JavaScript API m glich ist Programmcode C 8 Laden des dat Moduls var dat require dat var db dat path options onReady Erstellt eine neue oder ffnet eine bereits bestehende dat Datenbank Alle Parameter sind optional path string Pfad zum Verzeichnis welches das dat Verzeichnis enth lt Falls kein dat Verzeichnis existiert wird ein neues erstellt Default ist process cwd options object Weitere Konfigurations Parameter init Wenn false erstellt dat keine neue Datenbank beim Initialisieren Default true storage Wenn false versucht dat nicht beim Initialisieren die Datenbank zu lesen Default true 151 152 C DAT SCHNITTSTELLEN path Alternative zum Konstruktor Argument adminUser adminPass Wird als Benutzer Passwort verwendet f r HTTP Basic Authenti cation wenn beide konfiguriert sind leveldown Benutzerdefiniertes leveld
17. as trob_start s trob_end jeometry 4326 as trobdb_point ht as b Abbildung 3 6 ODH Details einer Transformation 2 3 2 Ausblick Weiterentwicklung Fur eine Weiterentwicklung sollten insbesondere folgende Punkte in Betracht gezogen werden e Wechsel auf GDAL Version 2 0 sobald verf gbar Aufgrund von Problemen mit mehreren Format Treibern wurde fiir diese Arbeit eine etwas ltere Version eingesetzt siehe Version 2 0 bringt diverse Verbesserungen sowie Treiber f r neue Formate mit e Ausbau der Webapplikation bzw Integration von CKAN Die aktuelle Web Applikation ist relativ einfach gehalten So fehlt zum Beispiel die M glichkeit weitere Dateien zu einem Paket hinzuzuf gen oder welche zu entfernen e Ausbau des Transformations Assistenten F r einfache Transformationen ist der Assistent gut geeignet Sobald allerdings Funktionen verwendet werden sollen muss die Transformation direkt in ODHQL geschrieben werden F r weitere Ideen siehe 3 3 Pers nlicher Bericht 3 3 1 Christoph H sler Meine Python Vorkenntnisse waren relativ beschr nkt ich kannte die Syntax von Code Beispielen die mir ber die Jahre im Internet begegnet sind und ich hatte bereits ein paar kleinere Skripts angepasst aber nie ein eigenes Projekt mit Python realisiert Trotzdem gelang es mir schnell mich einzuarbeiten 12 3 4 DANK 13 Highlight dieser Arbeit war f r mich sicher die Implementation des ODHQL Parsers m
18. dat Daten Pipelines Mithilfe des Sub Projekts gasket k nnen sogenannte Daten Pipelines definiert werden Diese dienen dazu Daten abzurufen zu transformieren und schliesslich in dat zu speichern bzw Daten aus dat zu lesen zu transformieren und schliesslich abzuliefern 3 4 Use Cases In diesem Abschnitt werden m gliche Verwendungszwecke von dat aufgezeigt 3 4 1 Astronomie Trillian In der Astronomie fallen riesige Datenmengen an Teilweise werden diese als grosse Daten Releases zur Verf gung gestellt z B Sloan Digital Sky Survey welche fr here Releases komplett ersetzen Andere Projekte stellen inkrementelle Updates zur Verf gung z B Hubble Viele Astronomie Institute haben weder die Mittel noch das Know how mit solchen Datenmengen umgehen zu k nnen Das Trillian Projekt k mmert sich um die Verwaltung dieser Daten und bietet eine Compute Engine an um neue Modelle anhand der vorhandenen Daten zu testen dat soll f r den Import und die Indexierung der Daten verwendet werden Siehe auch https github com maxogden dat issues 172 3 4 2 Regierung Sammlung von Daten F r Statistik oder Regulierungszwecke sammeln Regierungen Daten von unterschiedlichsten Betrie ben Diese Daten m ssen oft ber ein mehr oder weniger brauchbares Portal abgeliefert werden Die Verwendung von dat bringt folgende Vorteile e Erm glicht die Pr fung von Daten beim Import bereits vor der Ablieferung der Daten e Erm glicht Erg nz
19. evts gt 2 1 2 Rollen In sind die f r das Projekt relevanten Rollen bzw Akteure aufgelistet Diese werden in den nachfolgenden Abschnitten referenziert Thttp www cadastre ch internet cadastre en home products mopublic html 17 18 2 ANFORDERUNGEN Rolle Beschreibung Datenanbieter Ist diejenige Person oder gar Unternehmen Beh rde die daran interessiert ist eigene Daten zur Verf gung zu stellen ohne sich um dessen Format oder Schnittstellen zum Bezug k mmern zu m ssen Schema Format Experte Ist oftmals ein Datenanbieter selbst bzw eine Person innerhalb dessen Organisation Kann Schema Transformationen mit Open DataHub durchf hren und ist daf r zust ndig dem Administrator von OpenDataHub allf llige Module zur Unterst tzung deren For mat e innerhalb der Applikation zu liefern Datenbezieher Der Datenbezieher ist lediglich an einzelnen angebotenen Daten interessiert und m chte diese f r eigene Zwecke weiterverwenden Drittentwickler Andere Entwickler welche die Funktionalit t der Applikation via REST API nutzen wollen Administrator Der Applikationsverantwortliche welcher die Applikation betreibt und wartet Tabelle 2 2 Rollen Akteure 2 1 3 Registrierung Authentifizierung Epic 1 Benutzer registrieren Als Datenanbieter will ich mich in der Applikation registrieren k nnen sodass ich Daten unter meiner Person Organisation publizieren kann User Story 1 1 SuisselD Als Datenanbi
20. hzeitige Kontaktaufnahme mit dem Betreuer falls die Konflikte nicht intern gel st werden k nnen R10 R12 R13 Verwendung neuer oder unreifer Technologien Es werden unreife bleeding Edge Technologien verwendet welche die Entwicklung und Handhabung erheblich erschweren Siehe auch dat spezifische Risiken R31 R32 und R33 Es werden vor allem Technologien verwendet die dem Team bereits bekannt sind oder das Risiko durch eine Kurzevaluation reduziert R31 dat erf llt nicht die Anforderungen dat und dessen Funktionalit t ist nur sehr sp rlich beschrieben Selbst dem Auftraggeber ist der Umfang von dat nicht vollst ndig bekannt Es besteht das Risiko dass dat sich nicht f r die Use Cases der Aufgabenstellung eignet Da es sich bei dieser Arbeit unter anderem spezifisch um eine Evalua tion von dat und dessen M glichkeiten handelt ist eine Evaluation von alternativen Technologien zun chst zu vermeiden Durch eine fr hzeitige Einarbeitung in dat mit kleineren Prototypen Use Cases soll die Machbarkeit abgesch tzt werden R32 dat ist zu unreif Fehlende Dokumentation 96 3 2 RISIKOUBERWACHUNG 97 Beschreibung dat besitzt viele unbekannte Fehler und die Dokumentation ist un zureichend Bereits wahrend des ersten Sprints hat die sparliche Do kumentation von dat zu Bedenken im Team gef hrt Pr vention Massnahme Dasselbe wie bei R31 Risiko R33 Titel dat wird nicht weiterentwickelt Beschreibung Der Kerne
21. is_template DocumentModel referenced_file_groups FileGroupModel UrlModel source_url format refresh_after FileModel data format file_name Abbildung 5 3 Django Models 5 2 Transformationssprache ODHQL In diesem Kapitel wird die Transformationssprache OpenDataHub Query Language ODHQL erl u tert 5 2 1 Syntax Die Syntax von ODHQL orientiert sich stark an SELECT aus ANSI SQL Eine formale Beschreibung der Transformationssprache ist in zu finden 5 2 2 Unterst tzte Features beschreibt die unterst tzten Features 50 5 2 TRANSFORMATIONSSPRACHE ODHQL 51 Anforderung Beschreibung Mapping Default Werte Joins Filter Pradikate Erweiterbare Funktionen Sortierung Unions Felder konnen mit oder ohne Alias angegeben werden Falls kein Alias vorhanden ist wird der Feldname beibehalten Es ist m glich Sonder und Leerzeichen zu verwenden indem der Feldname in doppelten Anf hrungszeichen geschrieben wird Unterst tzt werden Integer Float sowie Strings in einfachen An f hrungszeichen Es muss immer mindestens eine Datenquelle angegeben werden Falls mehr verwendet werden sollen muss mindestens eine Join Bedingung vorhanden sein es werden mehrere Join Bedingungen unterst tzt jedoch nur per and Verkn pfung Neben Inner Joins werden auch Left Right und Full Outer Joins unterst tzt Vorhandene Filter beinhalten is null
22. 55 0262312 preview http localhost 5000 api v1 document 12 preview type document Fe files ailes als url http localhost 5000 api vi file 18 file name Baustellen kml file format EKME file_ group http localhost 5000 api vi fileGroup 12 1 turistei data http localhost 5000 api v1 fileGroup 12 data preview http localhost 5000 api v1 fileGroup 12 preview related_transformations a dl BOO name Sanitize Baustellen kml Siehe auch File Group Details GET api v1 fileGroup lt id gt Liefert Detail Informationen zu einer File Group Programmcode 5 12 Beispielantwort fiir GET api v1 fileGroup 12 idt iir url http localhost 5000 api v1 fileGroup 12 71 72 5 DESIGN UND IMPLEMENTATION document Waigel el url http localhost 5000 api v1 document 12 name Test Baustellen kml description Testdaten Originalformat KML file_groups http localhost 5000 api v1 document 12 filegroup private false owner ia 1 username testuser first nament uu last_name Fo created_at 2015 05 29T14 21 55 0262312 preview http localhost 5000 api vi document 12 preview type document ire files id 18 url http localhost 5000 api vi file 18 file_name Baustellen kml Wbgalilsy formatu AKMENS file_group
23. Bewertungskriterien Intermedi res Format Zus tzlich werden die in beschriebenen Kriterien f r die Bewertung der Transformationssprachen verwendet Features Bereits vorhandene Unterst tzung f r die in aufgelisteten Fea KK tures Geo Daten Unterst tzung f r Geo Daten kkk Allgemeine Daten Unterst tzung f r Nicht Geo Daten kkk Funktionen Erweiterbarkeit um eigene bzw benutzerdefinierte Funktionen in KKK externer Sprache Familiarit t Wie gut kennen Experten auf dem Gebiet Datentransformation KK diese Sprache bzw wie viel Lernaufwand ist notwendig um die Sprache zu erlernen Tabelle 4 10 Bewertungskriterien Intermedi res Format Transformationssprache fasst die verschiedenen Optionen zusammen 40 4 5 USER INTERFACE 41 Kriterium Datenbank ogrtools Petl Pandas PyTables SQL ogrtransform SQL hnliche DSL Performance KOK Kk KI Kok Machbarkeit KIA Krk Kk kok XX Aufwand Komplexit t XX KK KKK KKK KKK Features kik Krk kkk Geo Daten kk kook kkk Allgemeine Daten tk Ky kkk Funktionen kk KK kk Familiaritat tok KK kkk Total KKK KK kw kok KKK Tabelle 4 12 Auswertung verschiedener Format und Transformations Varianten Entscheid 4 2 Intermedi res Format Aufgrund der sowohl machtigen API wie auch der gleichzeitig hohen Performance und Integra tion mit Geo Daten bzw Shapely wurde f r Pandas und deren Datenstrukturen entschieden Die Variante Datenbank wurde obschon der Aufwand fiir die Tr
24. Datens tze Der Stream liefert ein Objekt pro Zeile in der Form key key version number deleted boolean Optionen sind identisch zu createReadStream var changes db createChangesStream options Liefert einen Stream ber das dat Changelog Die gelieferten Objekte haben die Form change changeld key key version number options Objekt mit folgenden Feldern data Wenn true enthalten die gelieferten Objekte das Attribut value Default false since Change ld ab welcher Daten geliefert werden sollen Default 0 tail Wenn true wird since auf die letzte Change Id gesetzt so dass nur neue Anderungen geliefert werden Default false limit Limitiert die Anzahl der zu liefernden Anderungen Default unlimitiert live Wenn true werden neue Anderungen geliefert sobald sie auftreten und der Stream endet nicht bzw muss manuell geschlossen werden var writeStream db createWriteStream options Liefert einen schreibbaren Stream Jede Schreib Operation liefert Status Informationen als Objekt zuruck options Objekt mit folgenden Feldern format Teilt dem Stream mit welches Format geschrieben werden soll Erlaubte Werte csv json protobuf oder objectMode default csv json protobuf Equivalent zu format csv format json bzw format protobuf primary Spalte bzw Array von Spalten welche als Primary Key verwendet werden soll Default key hash Wenn true wird als Primary Key d
25. Die gew nschten Daten sind nicht auf der ersten Seite zu finden Daher verwendet der Benutzer das Suchfeld 4 a Der Benutzer bersieht das Suchfeld und klickt durch die Seiten bis er die gew nschten Daten findet Nach erfolgreicher Suche klickt der Benutzer auf den Namen des Packages Dokument Trans formation Ein Klick auf den Tabellen Namen ODH18_ baustellen_ detailansicht f gt die Tabelle zur Abfrage hinzu Der Benutzer w hlt die in der Aufgabe erw hnten Felder durch einen Klick auf Feld hinzuf gen aus Durch bearbeiten der Text Felder in den Spalten Titeln benennt der Benutzer die Felder um Anschliessend vergibt er einen Namen sowie eine Beschreibung und klickt auf den Speichern Button Eine gr ne Erfolgsmeldung erscheint und nach kurzer Zeit wird der Benutzer zur Detail Ansicht der neuen Transformation weitergeleitet Testperson 1 1 2 Nach kurzer Orientierung in der Benutzeroberfl che findet der Benutzer das Suchfeld Die Suche nach baustelle ist erfolgreich Der Benutzer ist unsicher ob baustellen_detailansicht oder baustellen_uebersicht richtig ist und wird angewiesen die Detail Version auszuw hlen Dies ist eine Unsch nheit im WFS von dem die Daten stammen und kein Ul Problem Er ist unsicher wo er klicken muss um die Felder hinzuzuf gen Nach kurzer Orientierung findet er die richtige Stelle alles ausser Alias Feld Bei der Eing
26. Ich bin stolz auf das Team OpenDataHub und bedanke mich hiermit nochmals pers nlich bei allen Beteiligten Bez glich Technologien bin ich froh dass ich als langj hriger Python Entwickler endlich Django Erfahrungen sammeln sowie auf Frontend Seite die m chtige Kombination von AngularJS und TypeScript einsetzen konnte 3 4 Dank In erster Linie bedanken wir uns bei unserem Betreuer Prof Stefan Keller f r die Unterst tzung w hrend der gesamten Laufzeit der Arbeit Zudem gilt auch Herrn Dorfschmid von Adasys AG ein besonderer Dank f r das konstruktive Gespr ch und die architektonische Inspiration f r OpenDataHub Weiter bedanken wir uns bei Herrn Kalberer Entwickler von ogrtools und Interlis Treiber f r GDAL sowie der GDAL Community f r die stets rasche R ckmeldung auf Fehlerberichte unsererseits Auch unseren Freunden und Bekannten die unsere Arbeit getestet kommentiert und korrigiert haben sprechen wir unseren Dank aus https pyparsing wikispaces com 13 Teil Il Projektdokumentation 1 Vision Die Vision von OpenDataHub ist in beschrieben 15 2 Anforderungen In diesem Kapitel sind die Anforderungen an OpenDataHub in Form von Scrum Epics und User Stories sowie weitere nicht funktionale Anforderungen dokumentiert 2 1 User Stories Die User Stories wurden aufgrund der zunachst unbekannten bzw relativ knapp ausgedriickten Anforderungen iterativ aufgenommen In ist eine Kurz bersicht der A
27. Instanz existiert nur ein Schema Falls ein Datensatz mit neuen Spalten hinzugef gt werden soll wird das bereits vorhandene Schema mit dem Schema des neuen Datensatzes zusammengef hrt Aktuell l uft die Entwicklung der dat beta Version In dieser sollen mehrere datasets unterst tzt sowie bessere Versionskontrolle mit Konfliktbehandlung bzw Vermeidung implementiert werden Leider ist diese Version noch nicht stabil und das API ndert sich damit komplett 21 28 3 PROJECT DAT Entscheid 3 1 Projekt dat Aufgrund der Tatsache dass dat obschon vielversprechend noch sehr unausgereift und un dokumentiert ist sowie das API noch st ndigen nderungen unterzogen wird wurde nach R cksprache mit dem Betreuer gegen den Einsatz von dat entschieden Das Projektrisiko ist zu gross und es wird nach einer alternativen L sungen zur Implementation eines Datenhubs gesucht Anmerkung Bei Abschluss der Arbeit ist dat ist nun in Version 6 9 7 vom 25 Februar 2015 verf gbar 3 siehe https github com maxogden dat releases 28 4 Analyse 4 1 Domane Die Applikation besitzt wenn man die Daten selbst nicht miteinbezieht ein relativ simples Domanen Modell wie in zu sehen ist Der Endbenutzer kann mehrere Dateien ablegen oder bereits vorhan dene transformieren Da das Resultat von Dateien oder Transformationen dasselbe ist werden diese mit dem Oberbegriff Datenpaket versehen Datenpaket Name Benutzer
28. Langenbeschrankung f r Text oder Boundaries f r Geometrien e Subqueries bzw Nested Tables e Baumstrukturen Key Value Pairs Ausserdem sollte untersucht werden ob Geodaten in allen F llen korrekt behandelt werden 7 2 7 Breitere Formatunterst tzung Nach Bedarf k nnen weitere Formate implementiert werden 7 2 8 ODH als WFS Server ODH unterst tzt WFS als Daten Quelle Die Idee ist dass eine API implementiert wird welche eine Datenquelle oder WFS URL und optional eine ODHQL Abfrage entgegen nimmt die Transformation durchf hrt und anschliessend das Resultat als WFS anbietet 2https pypi python org pypi chardet 86 7 2 WEITERENTWICKLUNG 87 7 2 9 Performanz bei grossen Datenmengen Im Rahmen der Arbeit wurden Dokumente mit Gr ssen bis ca 100 MB ca 1 Mio Records mit guten Resultaten getestet Im Gespr ch mit Herrn Dorfschmid wurde festgestellt dass dies f r viele Anwendungen ausreicht Falls massiv gr ssere Datenmengen verarbeitet werden m ssen ist die aktuelle Architektur aber suboptimal und stark limitiert durch den verf gbaren Speicher In diesem Falle sollte evtl auf eine streambasierte Version gewechselt werden Zu beachten ist dass diverse verwendete Bibliotheken unter anderem auch GDAL nicht streamori entiert arbeiten 7 2 10 Unterst tzung f r weitere Datenstrukturen Die aktuelle Version von ODH unterst tzt nur tabellarische Daten Dies k nnte um Unterst tzung f r baumartige Date
29. Switzerland DUP_NAME N PROV1NAME Tessin NIERVETSU ON geometry POINT 45 90247783251107 76645 7742365048 NATION 41 CONURB NULL name Chiasso Rail Fe Ie count role name Bahnhoefe Download Fordert einen Download der Daten an Das gew nschte Format wird mit dem Parameter fmt ange geben G ltige Werte sind die von gelieferten Namen Ohne Format Angabe werden die Original Daten geliefert Hinweis Dokumente k nnen nicht als ganzes heruntergeladen werden stattdessen m ssen die File Groups f r diesen Zweck verwendet werden 5 5 2 Root GET api v1 Als Prefix f r die API URLs wird api vl verwendet was eine sp tere versionierte Erweiterung erlaubt 63 64 5 DESIGN UND IMPLEMENTATION Api Root Api Root GET api HTTP 200 OK Content Type application json Allow GET HEAD OPTIONS Vary Accept Abbildung 5 10 API Ubersicht Da f r die Implementation des API die Django Erweiterung rest_framework verwendet wurde kann die API gut auch manuell ausprobiert werden Dabei ist zu beachten dass die Schragstriche am Ende der URLs nicht optional sind 5 5 3 Konfiguration GET api v1 config Gibt die f r den HTML5 Client notwendigen Konfigurationsinformationen zur ck Programmcode 5 4 Beispielantwort f r GET api vl config GITHUB_PUBLIC Sef558ed3fbO0f5385da5 FACEBOOK_PUBLIC 401520096685508 PACKAG
30. Transformers und Formatters e Diverse Dateiformate einlesen und konvertieren k nnen e Authentifizierung Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 3 abgeschlossen Ab dem n chsten Sprint werden zur besseren bersicht alle brigen Aufw nde sowie Sitzungen zusammen gefasst Eine Auswertung pro Person bleibt dennoch m glich 109 110 6 SPRINTS JIRA Key Summary DAT 49 Refactoring Sprint 2 DAT 50 Benutzerverwaltung OAuth DAT 51 Liste der Dokumente DAT 52 Detailansicht Dokument DAT 56 Besseres Design Layout DAT 57 Extractor Transformer Interface bestimmten DAT 64 Projektmeeting Woche 5 DAT 65 Projektmeeting Woche 6 DAT 66 Organisation Planung amp Kommunikation DAT 69 Ubrige Aufwande Remo DAT 70 Ubrige Aufwande Fabio DAT 71 Ubrige Aufwande Christoph Probleme Die Authentifizierung via OAuth hat aufgrund erstmaliger Einarbeitung eines Teammitglieds in AngularJS mehr Zeit beansprucht als geplant 6 5 Sprint 4 Summary Sprint 4 Periode 30 03 2015 12 00 Uhr 13 04 2015 12 00 Uhr Stunden Soll 144h Stunden Plan 134h Stunden Ist 134 5h 110 6 5 SPRINT 4 111 152h 133h 114h 95h 76h 57h 38h 19h 0 Mar 30 Apr 13 Apr 13 Burndown Chart Sprint 4 Ziele Das Hauptziel dieses Sprints liegt in der Entwicklung der Schema Transformationssprache Der Favorit zu Beginn des Sprints war die Verwendung eines eigenen SQL Dialekts Die Vor und Nachteile v
31. UNION Operationen werden vom Benutzer konfiguriert Start 7 Assistent Manuelles Bearbeiten Manuell bearbeiten 1 SELECT t1 Prename 2 t1 Id 3 t1 Surname 4 FROM ODH13_employees as t1 5 Vorschau Id Parent Prename Surname Prename2 Id2 Surname2 274437 2 Aiden Jenkins David 2 Thomas 9247909 5 Inuka Wilenn A hrav K Rivara Abbildung 5 13 Transformation manuell bearbeiten Sp ter k nnen dann die komplexeren Operationen auf die Daten angewendet werden Hierf r wird der manuelle Modus in beschrieben verwendet Im manuellen Modus steht eine Hilfe Seite zur Verf gung welche s mtliche erweiterten Operationen erkl rt Wird eine Transformation als Template verwendet wird beim Speichern keine Pr fung der zugrunde liegenden Daten durchgef hrt So k nnen syntaktisch korrekte aber noch mit fehlenden Daten belastete Transformationen erstellt werden 78 5 DESIGN UND IMPLEMENTATION 5 6 3 Transformationen bearbeiten Transformationen k nnen entweder geklont oder berschrieben werden zeigt eine bestehende Transformation die der angemeldete Benutzer erstellt hat Beim Klonen legt der Benutzer eine neue Transformation aufgrund der Daten einer bestehenden Transformation an Beim berschreiben kann der Besitzer einer Transformation diese nochmals ver ndern Es kann bei diesen Operationen allerdings kein Wizard mehr verwendet werden da dieser alle manuellen nderungen berschreiben w rde LJ 2 1 SELECT t
32. Zu beachten Der Ausdruck darf genau ein Resultat pro Zeile in values liefern Beispiel XPATH t description tr 1 td 2 text AS abschnitt 174 F Sitzungsprotokolle Die Sitzungsprotokolle wurden in dieser Ausgabe der Arbeit ausgelassen und sind nur in der vollen auf der CD ablegten Version einzusehen 175 176 F SITZUNGSPROTOKOLLE 176
33. cke 5 Bleichi JSON json KML kml 13 0 Gais Rotbachbr cke Gais Umbau Umleitung nan XML xmi Altst tten Verkehr Original N Abbildung 3 2 ODH Detail zu hochgeladenen Daten Daten k nnen als Datei oder Gruppe von Dateien hochgeladen oder von einer URL bezogen werden OpenDataHub ch D localhost 50 Le opendatahub Automatische Erkennung Microsoft Office Excel Datei xls bzw xlsx GML Geometry Markup Language GML ist ein Dateiformat zum Austausch von GeoJSON GeoJSON ist ein Dateiformat zum Austausch von Geodaten mittels JSON INTERLIS 1 INTERLIS ist ein Dateiformat zum Austausch von Geodaten INTERLIS 1 Modell oo TEEN Aoonechen Bu 2015 Geometa Lab HSR GitHub iavascrintwaidin Abbildung 3 3 ODH Daten anbieten Die Resultate von Transformationen pr sentieren sich hnlich wie hochgeladene Dateien 10 3 1 ZIELERREICHUNG 11 OpenDataHub ch x lt B localhost 5000 transformation 2004 sp opendatahub Daten Hilfe Anmelden Regi Metadaten TROBDB Baustellen Ziirich WFS 5 Beschreibung TROBDB Baustellen Z rich WFS Besitzer testuser Transformation Vorschau userid title description trob_start trob end trob_interval direction diversion_advice co Stephan Z rcherstrasse Erneuerung 2015 05 2015 11 NULL both Teilsperrung eine Cr Odermatt H ttikon Werkleitungen 04 30 Umleitung ist Instandsetzung signalisiert
34. der Datenbank existierenden Version bereinstimmt Andernfalls tritt ein Konflikt Fehler auf options Objekt mit folgenden Feldern force Wenn true wird der Versions Check bersprungen und Konflikte ignoriert F r die neuen Daten wird eine neue Version erzeugt delete key callback error newVersion Markiert den Key als gel scht Achtung Alte Versionen bleiben erhalten und k nnen weiterhin abgerufen werden var readStream db createReadStream options Liefert einen lesbaren Stream der neusten Versionen aller Datens tze Die Eintr ge werden als key key value value geliefert options Objekt mit folgenden Feldern start Start Key Default Erster Key end End Key Default Letzter Key limit Anzahl Datens tze die geliefert werden sollen Default Unlimitiert 153 154 C DAT SCHNITTSTELLEN var valueStream db createValueStream options Liefert einen lesbaren Stream ber die Werte der aktuellsten Versionen Standardm ssig wird auf dem Stream ein Objekt pro Zeile ausgegeben options Objekt mit folgenden Feldern createValueStream unterst tzt die selben Optionen wie createReadStream sowie zus tzlich folgende format Wenn diese Option auf csv oder json gesetzt wird werden die Daten serialisiert anstatt als Objekte geliefert csv Identisch zu format csv json Identisch zu format json var keyStream db createKeyStream options Liefert einen Stream ber die Schl ssel der
35. diverse Syntax Elemente korrekt geparsed werden 6 2 7 ODHQL Functions Testet die Implementation diverser ODHQL Funktionen 6 2 8 ODHQL Interpreter Tests fiir den Interpreter 6 2 9 REST API Testet einige API Funktionen 84 7 Resultate und Ausblick 7 1 Resultate Die Resultate der Arbeit sind in beschrieben 7 2 Weiterentwicklung In diesem Abschnitt werden diverse M glichkeiten zur Weiterentwicklung von OpenDataHub aufge zeigt 7 2 1 GDAL 2 0 Diverse Treiber wurden in GDAL 2 0 massiv verbessert bzw richtig implementiert Sobald ein Release vorhanden ist sollte ein Upgrade in Betracht gezogen werden 7 2 2 Native Unterst tzung f r via ogr2ogr implementierte Formate Die Unterst tzung f r die Formate Interlis 1 GML und WFS nur Parser ist via ogr2ogr implementiert Da ogr2ogr auf Datei Ebene operiert m ssen die Daten ber ein Zwischenformat konvertiert werden F r den Formatter sieht das wie folgt aus DataFrame in ODH Zwischenformat ogr2ogr Zielformat Analog f r den Parser Beide Konvertierungs Schritte sind potentiell fehlerbehaftet ausserdem sind nicht alle ogr2ogr Treiber von gleicher Qualit t Daher w re es w nschenswert diese Formate mit nativen Parsern und Formattern zu unterst tzen 7 2 3 Ausbau der Webapplikation Nach Untersuchung der bereits vorhandenen Produkte wurde entschieden die Webapplikation minimal zu halten Die Konvertierung und Transformation von Dat
36. doc10 gt Test Bahnhoefe json testuser 2 3 4 5 6 7 106 ODH4 Alias ODH4 Wahlen Sie die ben tigten Felder aus Klick und w hlen Sie die Spaltennamen T by BIGINT 3 4 5 Mehr anzeigen Tabelle entfernen ODH8 Alias ODH8 Wahlen Sie die ben tigten Felder aus Klick und w hlen Sie die Spaltennamen Testdaten Originalformat Shapefile 1 Tabelle ODH8 9 Spalten 1781 Zeilen Testdaten Originalformat CSV Testdaten Originalformat GeoJSON children TEXT BIGINT 05 11 1974 3 31 07 1985 4 12 06 1984 5 CNTRYNAME CONURB TEXT TEXT Switzerland Balerna Mendrisio NAME TEXT LEVEL BIGINT 10 Balerna Mendrisio Abbildung 5 11 Tabellen k nnen per Klick verbunden werden 76 5 6 USER INTERFACE fi Start 7 Assistent Manuelles Bearbeiten Transformation Vorbereiten 7 ASSISTENT STARTEN Gehen Sie in folgenden Schritten vor um eine Transformation mit dem Assistenten zu erstellen e Starten Sie den Assistenten e W hlen Sie die Tabellen aus die Sie verwenden m chten e W hlen Sie die Felder in den Tabellen aus die Sie anzeigen m chten e Verbinden Sie die Tabellen mittels JOIN oder UNION e Sie k nnen nun zum manuellen Modus weiterfahren Abbildung 5 12 Einleitung in den Wizard In einem ersten Schritt kann eine Transformation grundlegend erstellt werden Einfache JOIN und
37. in das Zeilen Format ausw hlen muss Falls sich herausstellt dass dies zu langsam ist um es direkt im HT TP Request des Anbieters durchzuf hren m ssen die Daten vor der Transformation zwischengespeichert werden Falls die Transformationsresultate zwischengespeichert werden sollen ist eine weitere Datenablage f r die Transformationsresultate notwendig Die Einbindung von Drittanbieter Software erfordert mehr Aufwand falls diese nur auf Dokumenten oder gar Datei Ebene arbeiten In diesem Fall m ssen die Daten erst wieder in ein geeignetes Format bersetzt werden um nach der Transformation wieder in einzelne Zeilen zerlegt zu werden 4 3 3 Datenbank basiert Dokument als BLOB Die Daten werden ohne Transformation zusammen mit den Metadaten in einer Datenbank abgelegt Diese Variante hat praktisch alle Vorteile der datei basierten Version Falls Drittanbieter Software nur auf Dateibasis arbeitet kann ein tempor res oder fl chtiges Datei System verwendet werden F r diese Variante existieren folgende M glichkeiten Daten und Metadaten in derselben Tabelle Daten und Metadaten werden in der selben Ta belle gespeichert Dies bietet ein einfacheres Schema erlaubt jedoch nur ein Daten Objekt pro Dokument was ungeeignet ist f r Dokument Typen wie ESRI Shapefiles welche aus mehr als einer Datei bestehen 32 4 3 DATENSPEICHERUNG 33 Daten und Metadaten in separaten Tabellen Daten und Metadaten werden in unterschiedli chen Tab
38. opendatahub ch transformation create 0DH4001 employees Alias t1 W hlen Sie die ben tigten Felder aus Klick und w hlen Sie die Spaltennamen BIGINT TEXT BIGINT 1 Stewart 903058 2 Thomas 363276 3 Lewis 407540 Feld hinzuf gen Feld entfernen Feld hinzuf gen Feld hinzuf gen 2 13 4 5 61 7 333334 3 10 25 100 Abbildung 2 8 Selektion und Umbenennung einzelner Felder 1 Nachdem die Input Daten im vorherigen Schritt hinzugef gt wurden k nnen nun einzelne Felder aus diesen Tabellen mittels Klick selektiert werden 2 Auch der Name der Spalten kann direkt im Assistenten oberhalb der Spalten angepasst werden 3 Als n chstes kann man wie in abgebildet die zur Transformation generierte ODHQL Abfrage betrachten sowie diese ausf hren um eine Vorschau der Daten darzustellen 138 2 4 DATEN TRANSFORMIEREN 139 OpenDataHub ch x e gt C E beta opendatahub ch transformation create Syntax MANUELL BEARBEITEN SELECT t1 Prename AS Vorname FROM ODH4001_employees as t1 Vorschau Vorname Christian David Aubrey Speichern SPEICHERN Abbildung 2 9 Vorschau der Transformation Speichern Analog wie beim Teilen von Daten in beschrieben muss die Transformation vor der Freigabe noch mit zusatzlichen Attributen wie Name und Beschreibung versehen werden 139 140 2 BENUTZERHANDBUCH OpenDataHub
39. r eine detailliertere Erl uterung siehe 2 1 2 CKAN Comprehensive Knowledge Archive Network CKAN ist ein Software System zur Datenverwaltung insbesondere von ffentlichen Daten Schwerpunkte sind das Anbieten Indexieren und Verwalten von Daten welche von Benutzern zur Verf gung gestellt werden Dahingehend kann eine grosse Menge an Meta Informationen zusammen mit den Daten erfasst werden CKAN hat keine Unterst tzung f r Daten Konvertierung oder Transformation Leider wurden wir erst relativ sp t auf CKAN aufmerksam Daher wurde zusammen mit dem Betreuer beschlossen bei dieser Arbeit den Schwerpunkt auf die Konvertierung und Transformation der Daten zu legen und allenfalls in einer sp teren Arbeit CKAN und OpenDataHub zu integrieren opendata admin ch Open Data Portal des Bundes basierend auf CKAN 2 1 STAND DER TECHNIK Schweizerische Eidgenossenschaft Conf d ration suisse opendata admin ch ee Pilotportal f r offene Beh rdendaten der Schweiz Startseite Kontakt Deutsch Fran ais Italiano English ganisationen Bundesamt f r PLZ und Ortscha PLZ und Ortschaften Organisation Bundesamt f r Landestopografie swisstoj In der Kategorie Raum und Umwelt Mit Artikel 24 der Verordnung ber die geografischen Namen GeoNV wurde das Bundesamt f r Landestopografie swisstopo beauftragt das neue amtliche Ortschaftenverzeichnis mit Postleitzahl und Perimeter zu erstellen zu verwalten und zu ve
40. strings o XPATH values path Was ist ODHQL ODHAQL ist eine an SQL angelehnte Abfrage und Transformations Sprache f r OpenDataHub Syntax Bestandteile einer Abfrage Eine Abfrage besteht aus folgenden Teilen e Eine Liste von Feldern oder Ausdr cken welche im Resultat erscheinen sollen e Eine Liste von Datenquellen e Optional eine Liste von Filter Ausdr cken e Optional eine Sortier Klausel Gross und Kleinschreibung wird nicht beachtet Mehrere Abfragen k nnen kombiniert werden mithilfe von Union In diesem Fall ist nur eine Sortier Klausel am Ende der kombinierten Abfrage erlaubt SELECT NULL AS userid Null Ausdruck SUBSTRING NVL EXTRACT t text AS title Funktions Aufruf EXTRACT t text CAST CAST t df CAST CAST t dd NULL AS trob_interval both AS direction String Ausdruck NULL AS diversion_advice bigint bigint CI no value 1 100 AS description datetime AS trob_start datetime AS trob_end CASE WHEN t p Switzerland THEN CH Case Ausdruck WHEN t p WHEN t p END AS country t text AS reason Feld EXTRACT t text street AS object_type CASE WHEN CONTAINS t text WHEN CONTAINS t text maintenance FALSE THEN obstructed ELSE other END AS trob_type Austria t ST_SETSRID ST_GEOMFROMTEXT CONCAT POINT t x 395 AS trobdb_point 162 France THEN FR THEN
41. sung Programmcode C 12 datPython Verwendung gt gt gt from datPython import Dat gt gt gt dat Dat http 7hhtogpk6c8wu3di c try dat com gt gt gt dat info Udatik NHelTon n Uversi on k AerS A N chances UD namen Iso Obu nO sits les gt approximateSize rows 502 B gt gt gt dat diff change 1 key schema from 0 to 1 subset internal change 2 key ci6ilerrr000012t5m9ggeh6h from 0 to 1 gt gt gt dat csv key version name age ci6ilerrr000012t5m9ggeh6h 1 alice 35 gt gt gt dat rows W ronsus IL name alice age 35 key ci6ilerrr000012t5m9ggeh6h version 1 15 2https github com pkafei Dat Python 157 158 C DAT SCHNITTSTELLEN gt gt gt dat dict u rows Hv age u 35 u version 1 u name u alice u key gt u ci6ilerrr000012t5m9ggeh6h gt gt gt dat put_json test json gt gt gt dat put_csv test csv 158 D ODHQL Syntax UnionQuery Query union Query OrderByList Query FieldSelectionList DataSourceSelectionList FilterList FieldSelectionList select FieldSelection FieldSelection FieldSelection Field Expression as Alias CaseExpression case when Condition then Expression else Expression end Expression Function LiteralExpression Field CaseExpression Fun
42. und Transformations Plattform imple mentiert werden Dieser dient als Demonstrationsobjekt f r sp tere Weiterentwicklungen und soll aufzeigen wie eine solche Plattform aussehen k nnte und wo allf llige Stolpersteine zu finden sind 1 3 RAHMENBEDINGUNGEN 3 Projekt dat Es ist wichtig anzumerken dass der urspr ngliche Titel dieser Arbeit Project dat HSR lautete und sich mit der Dokumentation und der Erweiterung des Projekts dat befassen sollte Dies wurde wahrend der Arbeit aufgrund mangelnder Reife von dat abgebrochen und ist im dokumentiert 1 3 Rahmenbedingungen Folgende Rahmenbedingungen wurden durch den Betreuer sfkeller vorgegeben e Python als Programmiersprache e Postgres oder SQLite als Datenbank e Deployment der Applikation muss via Web Server Gateway Interface WSGI m glich sein Diese sind zugleich als nicht funktionale Anforderungen zu verstehen Inttp dat data com 2 Umsetzung 2 1 Stand der Technik In diesem Abschnitt werden bereits existierende Datenaustauschplattformen und Schematransformations Tools vorgestellt 2 1 1 dat Das dat Projekt will den Bezug und Austausch von Daten vereinfachen Zus tzlich zum Datenspei cher wird dazu ein Synchronisierungsprotokoll angelehnt an Replikationsprotokolle von bekannten Datenbanksystemen verwendet Leider befindet sich das Projekt noch in den Kinderschuhen Aus diesem Grund wurde beschlossen Projekt dat nicht zu verwenden F
43. vor 3 Tagen testuser Test mockaroo com xisx Testdaten Originalformat Excel vor 3 Tagen testuser amp Test Bahnhoefe gmi Bahnhoefe gfs Testdaten Originalformat GML vor 3 Tagen testuser Bahnhoefe xsd Test Bahnhoefe json Testdaten Originalformat GeoJSON vor 3 Tagen testuser amp Test Bahnhoefe kml Testdaten Originalformat KML vor 3 Tagen testuser amp Test Bahnhoefe shp Bahnhoefe shx Testdaten Originalformat Shapefile vor 3 Tagen testuser Bahnhoefe dbf 8 Test Baustellen Februar 2015 xls Testdaten Originalformat Excel vor 3 Tagen testuser 8 Test TbaBaustellenZHWFS gml Testdaten Originalformat GML vor 3 Tagen testuser TbaBaustellenZHWFS xs Abbildung 3 1 ODH Paket Liste Ein Benutzer kann bereits vorhandene Daten durchsuchen und herunterladen 7 10 3 RESULTATE UND AUSBLICK OpenDataHub ch x lt D locathost 5000 ument 14 z0 B Test Baustellen Mai 2015 xls FA Beschreibung Testdaten Originalformat Excel Besitzer testuser Dokument Hinzugefiigt letzten Freitag um 16 21 Uhr Enthaltene Dateien Baustellen Mai 2015 xls Excel Baustellen Mai 2015 xIs HERUNTERLADEN CSV csv i ESRI Shapefile shy ODH14_Baustellen Mai 2015 ee Excel xlsx GML gml StrNr Strecke Abschnitt Gemeinde Bauarbeiten Behinderungen Durch GEOJSON geojson i INTERLIS 1 itf 16 0 Trogen Untere Trogen Rutschungssanierung Lichtsignalanlage nan INTERLIS 1 Modell ili Wald Bruderbachbr
44. 0 1 Beschreibung Privat Statement aa vn 1 1 Dateigruppe Abbildung 4 1 Domane OpenDataHub 0 4 2 Dateiformate In diesem Abschnitt werden die durch den Kunden gew nschten oder zur Realisierung der Anwen dungsf lle in ben tigten Dateiformate und deren Eigenheiten beschrieben 1 Im Frontend Package 29 30 4 ANALYSE 4 2 1 CSV Das Comma Separated Values CSV gilt trotz vielen Schwachen als universelles Austausch Export format f r einfache Anwendungsfalle und sollte deshalb zwingend unterst tzt werden Eine CSV Datei enth lt einen Datensatz pro Zeile und die Spalten blicherweise durch Kommas oder Semikolon getrennt Die erste Zeile enth lt die Namen der einzelnen Felder Erweiterung mit Typen und Geo Daten GeoCSV ist eine durch das Geometa Lab der HSR spezifizierte Erweiterung von CSV um Geo Daten mit folgenden Eigenheiten sfkeller geocsv gdal csv e Eine optionale Datei mit Endung csvt spezifiziert auf einer einzigen Zeile die verwendeten Datentypen e Den spezielle Datentyp WKT f r Geometrien im Well Known Text WKT Format e Die speziellen Datentypen Point x Point y oder CoordX bzw CoordY f r den Spezialfall einer Punktgeometrie e Eine optionale Datei mit der Endung prj zur Angabe des Referenzsystems ebenfalls im WKT Format e Nur ein Geometrie Objekt Spalte pro Datei 4 2 2 Excel Da viele nicht technische Benutzer mit Micr
45. 2 Id 2 t2 Parent 3 t2 Prename 4 t2 Surname 5 t1 Prename iby t1 1d 7 t1 Surname 8 FROM ODH13_employees as t1 9 JOIN ODH14_children as t2 on t1 Id t2 Parent LOSCHEN VORSCHAU SPEICHERN KLONEN Geladene Tabellen Benutzte Tabellen Tabele laden Name in Transformation verwendet Ausgew hlte Tabelle children 500000 Zeilen 5 Spalten ODH13_employeeslt1 ODH13_employees employees 1000000 Zeilen 4 Spalten ODH14_children t2 ODH14_children Spalten Namen pro geladene Tabelle ODH14_children Id Parent Prename Surname Age ODH13_employees Id Prename Surname Boss Abbildung 5 14 Bestehende Transformation editieren 78 6 Testing 6 1 User Interface Bei allen folgenden Tests wird angenommen dass der Benutzer die Web Applikation bereits geladen hat F r die Tests wird entweder https dev opendatahub ch oder eine lokale Instanz erreichbar unter http localhost 5000 verwendet Als Testpersonen stellten sich zur Verf gung 1 Philipp Christen 6 1 1 UI01 Anmelden Anmeldestatus Nicht angemeldet Aufgabe Der Benutzer will sich anmelden Walkthrough 1 Der Benutzer klickt auf Anmelden Registrieren 2 Der Benutzer meldet sich mit einem der angebotenen OAuth Providern an 3 Ein Pop Up mit dem normalen Login Ul des Providers erscheint Der Benutzer meldet sich an 3 a Die Anmeldung beim Provider schl gt fehl Der Anmelde Vorgang wird abgebrochen 4 Nach kurzer Wartezeit ist der Benutzer bei OpenDataHu
46. 3 select a description a geometry from A as a union select b description b geometry from B as b Zu beachten ist dass die Feld Listen der Queries kompatibel sein m ssen 5 2 4 Abstrakter Syntax Baum AST Der ODHQL Parser analysiert die Abfrage in Text Form und wandelt diese in einen Abstrakten Syntax Baum AST um Dieser wird anschliessend vom Interpreter verwendet um die Transformation auf die Daten anzuwenden zeigt die Toplevel Struktur des Abstrakten Syntax Baums OrderByAlias queries nn i Jooo lt lt Enumeration gt gt Direction Query ascending fields filter_definitions data_sources descending 1 1 1 AliasedExpression FilterAlternative o DataSource Abbildung 5 4 AST Unions Die in beschriebenen Ausdr cke repr sentieren Felder Werte Funktionsaufrufe etc 53 54 5 DESIGN UND IMPLEMENTATION AliasedExpression alias expression 1 Expression expression 1 condition 1 ji prefix name lt lt Abstract gt gt Condition Abbildung 5 5 AST Ausdr cke LiteralExpression value zeigt auf wie Datenquellen repr sentiert werden Ds Choose One lt lt Enumeration gt gt JoinType Abbildung 5 6 AST Datenquellen Filter werden wie in beschrieben dargestellt 54 5 2 TRANSFORMATIONSSPRACHE ODHQL 55 lt lt Abstract gt gt Conditi
47. 817 975819 Wallace 2004 SPR 975817 975819 wurde mit den bekannten Top Zehn Software Projektrisiken aus dem Jahre boehm boehm sowie mit eigenen projektspezifischen Risiken erganzt Auch aus der Sicht des Teams fiir das Projekt nicht relevante Risiken wurden protokolliert und gelten als Nachweis dass auch diese miteinbezogen und nicht etwa ignoriert oder gar vergessen wurden 94 G6 ID R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 R32 R33 R34 R35 R36 Kategorie Mensch Anforderungen Komplexit t Planung amp Kontrolle Team Organisation HSR Projektspez sich Schadens Risiko potenzial Teammitglied straubt sich gegen nderungen Kon ikte im Team Negative Einstellung im Team Fehlende Motivation im Team Fehlende Kooperation im Team St ndig ndernde Anforderungen Anforderungen ungen gend erfasst Unklare Anforderungen Falsche Anforderungen Umsetzung der falschen Funktionalit t Verwendung neuer Technologien Hohe technische Komplexit t Verwendung unreifer Technologien Verwendung noch nie zuvor eingesetzter Technologien Fehlende Projektmanagement Plattform Projektfortschritt wird ungen gend berwacht Ben tigte Ressourcen oder Aufwand werden falsch abgesch tzt Ungen gende Projektplanung Meilensteine Deliverables ungen gend d
48. DataHub nicht erkannt wird Es wird eine rot hinterlegte Fehlermeldung angezeigt Nach kurzer Zeit wird der Benutzer auf die Detail Ansicht seiner Daten weitergeleitet und sieht eine Vorschau seiner Daten Testperson 1 1 Der Benutzer interpretiert Anbieten korrekt als Teilen und klickt den entsprechenden Menu Eintrag an Als Format bel sst er Auto da er faul sei Bei der Datei Auswahl bem ngelt der Benutzer dass der Datei Name abgeschnitten wird obwohl noch genug Platz vorhanden ist Beim Speichern freut er sich ber die Toast Message gr n liest den Text jedoch nicht durch Nach erfolgreichem Speichern ist der Benutzer unsicher ob die Aufgabe abgeschlossen ist und sucht nach Share Social Buttons 6 1 3 UI03 Daten transformieren Mit Assistent Anmeldestatus Angemeldet 80 6 1 USER INTERFACE 81 Aufgabe Der Benutzer interessiert sich f r Baustellen auf Z rcher Kantonsstrassen Er will Ge meinde Baustellen Status Beginn und Ende der Bauarbeiten sowie den Strassennamen jeweils mit menschenlesbaren Feld Bezeichnungen und erstellt dazu eine Transformation Der Benutzer hat keine Erfahrungen mit ODHQL oder SQL und verwendet den Assistenten Walkthrough 1 2 3 10 Der Benutzer klickt auf Neue Transformation In typischer Benutzer Manier wird die Anleitung auf der Einstiegs Seite ignoriert Der Benutzer klickt auf Assistent
49. Daten auf OpenDataHub ist stets auch als anonymer Benutzer m glich Um jedoch eigene Daten zur Verf gung zu stellen oder existierende Daten zu transformieren ist es n tig sich gegen ber der Applikation zu identifizieren Dies ist unter beta opendatahub ch Anmelden m glich und setzt ein Benutzerkonto bei einem der folgenden Anbieter voraus facebook com Soziales Netzwerk Viele Personen besitzen bereits ein Konto bei Facebook github com Online Git Repository Hosting Die meisten Entwickler besitzen bereits ein GitHub Konto 2 3 Daten teilen In diesem Abschnitt wird erkl rt welche M glichkeiten OpenDataHub bietet um Daten bereitzustellen Wichtig Zur Bereitstellung von Daten ist eine Anmeldung erforderlich Diese ist in beschrieben 2 3 1 Lokale Daten hochladen Die erste M glichkeit besteht darin Dateien die lokal auf dem PC gespeichert sind einmalig auf OpenDataHub hochzuladen 133 134 2 BENUTZERHANDBUCH OpenDataHub ch x Ve gt Ci beta opendatahub ch code 963fd42830db2db64d99 offer s opendatahub Daten Teilen Neue Transformation Hilfe Abmelden amp fabioscala Name Titel Mitarbeiterdaten XY AG Beschreibung Enth lt alle Mitarbeiterdaten der XY AG Privat Format Automatische Erkennung O Online Dateien hochladen employees csv TEILEN ABBRECHEN 2015 Geometa Lab HSR GitHub Abbildung 2 5 Dateien in OpenDataHub teilen zeigt den nachfolgend beschr
50. Datenhubs welcher es Anbietern erm glicht ihre Daten anderen zur Verf gung zu stellen Zur Speicherung der Daten stehen folgende Varianten zur Auswahl 4 3 1 File basiert Die Daten werden direkt im Dateisystem gespeichert Um Konflikte zwischen Dateinamen zu ver meiden muss ein Hashing Schema definiert und verwendet werden Metadaten zu den Dokumenten werden in einer Datenbank hinterlegt Die Daten werden in ihrem Ursprungsformat belassen bis ein Nutzer eine Transformation ausw hlt und anwendet Die Resultate einer solchen Transformation k nnen direkt wieder im Dateisystem zwischengespeichert werden um weitere Abfragen nach der selben Transformation zu beschleunigen Die Tatsache dass die Daten im Dateisystem liegen vereinfacht die Einbindung von Software von Drittanbietern insbesondere wenn diese Software nur direkt auf Dateiebene arbeitet z B OGR Ein Nachteil dieser Variante ist dass Cloud Anbieter wie Heroku keine beschreibbaren herokuReadOnlyFilesyste bzw keine best ndigen herokuEphemeralFilesystem Dateisysteme anbieten sondern auf die Ver wendung von Amazon S3 oder hnlich verweisen Metadaten wie Format oder Original Dateinamen w rden aus Performance Gr nden weiterhin in einer Datenbank gehalten werden 4 3 2 Datenbank basiert einzelne Zeilen Die Daten werden in einzelne Zeilen zerlegt und zusammen mit den Metadaten in einer Datenbank gespeichert Dies erfordert dass bereits der Daten Anbieter eine Transformation
51. E H S R INSTITUTE FOR r Le SOFTWARE HOCHSCHULE F R TECHNIK a RAPPERSWIL FHO Fachhochschule Ostschweiz OpenDataHub HSR Teilen Beziehen und Konvertieren von Daten Bachelorarbeit im Fr hjahrssemester 2015 s Autoren Betreuer Remo Liebi Prof Stefan Keller Christoph H sler Experte Fabio Scala Claude Eisenhut Gegenleser Prof Dr Markus Stolze Rapperswil 1 Juli 2015 Erstellungsdatum 11 Februar 2015 13 03 nderungsdatum 1 July 2015 22 10 Druckdatum 1 Juli 2015 22 19 Bezugsadresse https hsr ba fs15 dat github io ba doc main pdf Version 459 Git Hash Ocf4e61d5cfbee2ea4afa3ddd9b6abb601df8686 Autoren Christoph H sler chuesler hsr ch Fabio Scala fabio scala gmail com Remo Liebi remo liebi net Lizenz 2015 Abstract Im digitalen Zeitalter spielen Daten jeglicher Art eine zentrale Rolle f r die reibungslose Zusam menarbeit zwischen diversen Organisationen und deren Applikationen Diese Daten kommen in einer Vielzahl an Formaten und unterschiedlichen Schemata daher welche erst durch einen komple xen und oftmals individuellen Transformationsprozess zu eigenen Zwecken wiederverwendet werden k nnen Ziel dieser Arbeit ist die Abstrahierung von Dateiformat und Schema Transformation um einen Datenaustausch zwischen diversen Parteien mit Hilfe einer Webapplikation zu vereinfachen OpenDataHub ch Nach Evaluation von vorgegebenen dat data com sowie weiteren Datenaustausch Plattformen wurde ei
52. E_PREFIX ODH TRANSFORMATION_PREFIX TRF 5 5 4 Liste der unterst tzten Formate GET api v1 format Liefert die Liste der unterst tzten Formate Neue Formate erscheinen automatisch sobald sie regis triert sind vorausgesetzt es existiert ein Formatter f r das Format http www django rest framework org 64 5 5 API 65 Programmcode 5 5 Beispielantwort f r GET api v1 format A name WJSON labels 750N gt description JavaScript Objekt Notation N tzlich zur Wiederverwendung in Webapplikationen example extension json q name GML label GML description Geometry Markup Language GML ist ein Dateiformat zum Austausch von Geodaten example extension gml 5 5 5 Packages Package wird als Uberbegriff f r Dokumente welche von Nutzern bereitgestellt wurden oder f r Transformationen verwendet Packages haben Attribute wie Name oder Beschreibung k nnen eine Vorschau erzeugen und der Benutzer kann einen Download anfordern Package Liste GET api v1 package Liefert eine Liste der Packages Programmcode 5 6 Beispielantwort f r GET api v1 package counti Eo next http beta opendatahub ch api v1 package page 2 previous null results ia 1 url http beta opendatahub ch api vi package 1 name Test mockaroo com csv description Testdaten Originalfo
53. Ein Klick auf Herunterladen ffnet die Format Auswahl 3 Die Auswahl von GML f hrt zu einem erfolgreichen Download der Daten Testperson 1 Die Erf llung der Aufgabe stellte kein Problem dar Nach Abschluss des Tests experimentierte der Benutzer ein wenig mit exotischeren Unicode Namen Namen komplett ohne Zeichen im ASCII Bereich stellten ein Problem dar der Download schl gt in diesen F llen fehl 6 2 Unit Tests Alles in allem wurden ber 300 Unit Tests erstellt Diese decken die im folgenden beschriebenen Bereiche ab 6 2 1 Formate Testet ob eine Serie von Dateien richtig identifiziert werden 6 2 2 Parser berpr ft ob eine Serie von Dateien richtig gelesen werden kann und ob wie erwartet eine Geometrie Spalte vorhanden ist oder nicht 6 2 3 Formatter Formatiert eine Serie von DataFrames und berpr ft ob die erwartete Anzahl Dateien erzeugt wurde 6 2 4 Fixtures Mit loadfixtures kann eine Serie von Test Daten auch Fixtures genannt geladen werden Diese Tests berpr fen ob die geladenen Fixtures korrekt geparsed und anschliessend in jedem bekannten Format formatiert werden k nnen Dabei wird dasselbe API verwendet wie auch von Benutzern zum herunterladen von Dateien verwendet wird Diese Tests werden dynamisch generiert 83 84 6 TESTING 6 2 5 Ogr2ogr Versucht mittels der ogr2ogr Hilfsklasse eine Serie von Daten zu konvertieren 6 2 6 ODHQL Parser Uberpriift ob
54. GDAL 1 10 1 eingesetzt 5 4 3 Interlis 2 Entscheid 5 2 Kein Interlis 2 Support Aufgrund von Problemen mit dem Format Support in ogr2ogr wurde in Absprache mit dem Betreuer entschieden Unterst tzung f r Interlis 2 nicht zu implementieren Siehe dazu das Sitzungsprotokoll vom 15 04 2015 5 4 4 Erweiterung Die Unterst tzung f r neue Formate kann relativ einfach hinzugef gt werden Dazu m ssen Subklas sen f r folgende Python Klassen erstellt werden hub formats core Format Dient zur Identifikation des Formats von Datenquellen z B Dateien hub formats core Formatter Erh lt DataFrames und produziert Dateien welche der Benutzer herunterladen kann 5 4 FORMAT UNTERSTUTZUNG 61 hub formats core Parser Erhalt Daten aus Dateien WFS und produziert DataFrames welche von ODH weiterverwendet werden k nnen F r die Implementation via ogr2ogr stehen im Modul hub formats geobase Hilfsklassen zur Verf gung Durch Vererbung und die verwendete Python Metaklasse wird das neue Format automatisch registriert und kann sofort verwendet werden Ein Beispiel ist in zu sehen Darin wird die Unterst tzung f r ESRI Shapefile implementiert Der Formatter verwendet hierzu die Hilfsklasse GeoFormatterBase der Parser jedoch direkt GeoPandas Programmcode 5 2 Beispiel Implementation der Format Unterst tzung f r ESRI Shapefile import geopandas as gp import os from hub formats import Format Parser from hub formats ge
55. Hahn street Via Camischolas sura nr 86 MZ pis MS SPC VE DE ne TS key ci6huzf52000057coxymdlgy7 version 1 Ie prename Manuela surname Eichel street Vallerstrasse nr 115 MAP MOTOS alchtyu uprattennitedy key ci6hv0d0a00005vc099jxr7wO0 version 1 je GET api rows key Liefert den Eintrag mit dem angegebenen Schl ssel oder eine Fehlermeldung Programmcode C 5 Antwort GET api rows ci6huzf52000057coxym5lgy7 a prename Leonie surname Hahn street Via Camischolas sura nr 86 zip MS SPC ME MDEneN SL key ci6huzf52000057coxym lgy7 version 1 J 149 150 C DAT SCHNITTSTELLEN POST api rows F gt einen neuen Datensatz hinzu Die Daten m ssen als JSON vorliegen Die Antwort besteht entweder aus einer Konflikt Meldung oder aus dem neu hinzu gef gten Daten Satz Programmcode C 6 POST api rows curl H Content Type application json d prename Markus surname Maier gt street Dreibiindenstrasse nr 135 zip 6774 city Dalpe X POST localhost 6461 api rows prename Markus surname Maier street Dreib ndenstrasse nr 135 a zip 6774 city Dalpe key ci6hw717u0004x0cocfquv0j9 version 1 GET api rows key filename Liefert das BLOB mit dem entsprechenden Filenamen oder eine Fehlermeldung falls nicht verf gbar POST api rows key filename F gt ein neu
56. ID ODH12 lating 4326 AS geometry ST_SRID geoms Liefert das Koordinatensystem einer Geometrie Spalte Sollte keine Identifikationsnummer SRID bekannt sein so wird eine Zeichenkette mit den Projektionsparametern im PROJ 4 lt http trac osgeo org proj gt _ Format zur ckgegeben Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_SRID Beispiel ST_SRID ODH12 lating AS srid ST_Transform geoms srid Transformiert die Geometrien in ein anderes Koordinatensystem Auf den Geometrien muss bereits eine SRID gesetzt sein Parameter e geoms Spalte mit Geometrien e srid SRID der Geometrien Siehe auch PostGIS ST_Transform Beispiel ST_Transform ODHl2 mercator 4326 AS latlng ST_X geoms Liefert die kleinste X Komponente der Geometrien Achtung Funktioniert aus diesem Grund anders wie in 171 PostGIS nicht nur mit Punkten Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_X Beispiel ST_X ODH12 lating AS x ST_Y geoms Liefert die kleinste Y Komponente der Geometrien Achtung Funktioniert aus diesem Grund anders wie in PostGIS nicht nur mit Punkten Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_Y Beispiel ST_Y ODH12 lating AS y STARTSWITH strings start Pr ft ob ein Text mit einer angegebenen Zeichenkette anf ngt Kann als Bedingung verwendet werden Parameter e strings TEXT Spalte oder Wert e start TEXT Spalte oder Wert Beispiel
57. Liebi_Huesler_v0 docx 28 03 2015 viii E UNIVERSITY OF APPLIED SCIENCES RAPPERSWIL Bachelorarbeit FS 2015 E E ren science 3 Beteiligte Diplomanden Fabio Scala Christoph H sler Remo Liebi Industriepartner Open Community Open Source Betreuung HSR Verantwortlicher Dozent Prof Stefan Keller sfkeller hsr ch Geometa Lab am IFS der HSR BA_FS2015_OpenDataHub_HSR_Scala_Liebi_Huesler_v0 docx 28 03 2015 Inhaltsverzeichnis ABBILDUNGSVERZEICHNIS xi Abbildungsverzeichnis Tabellenverzeichnis main lot Programmcodeverzeichnis main minted Liste der Entscheidungen main decisions xi Teil Technischer Bericht 1 Einf hrung 1 1 Vision Im Rahmen der Reform der Amtlichen Vermessung RAV war die Methodenfreiheit ein zentrales Stichwort Man meinte damit insbesondere auch die Freiheit ein fiir die Aufgabe geeignetes Programm System frei w hlen zu k nnen ohne deswegen Probleme mit dem Datenaustausch mit anderen Systemen zu haben und sagte darum In der ffentlichen GeoSzene Schweiz einigt man sich auf den Datenaustausch Mechanismus Interlis aus rahmenvorst interlisopen F r den Datenaustausch kimmern sich die beteiligten Systeme dann nur noch um die Konvertierung von bzw nach Interlis Optimalerweise wird Interlis von den beteiligten Systemen bereits unterst tzt Realit t In der Realit t interessieren sich die Anbieter von Geo Software jedoch nic
58. Py aufbaut Da das API von PyTables im Vergleich zu Pandas eher low level ist und weniger bietet wurde diese Bibliothek nicht weiter verfolgt Transformationssprache DSL Vereinfachtes SQL Dieses Format lehnt sich an SELECT aus SQL an Es ist anzunehmen dass Experten im Bereich Datentransformation sich mit SQL auskennen was das Erlernen dieser Query Sprache sehr vereinfachen w rde sfkeller Da als Backend nicht eine SQL Datenbank verwendet wird sondern die Operationen auf Pandas DataFrames bersetzt werden sind einige kleinere Differenzen zu SQL unvermeidbar Neue Funktionen k nnen in Python definiert werden DSL Eigenes Format Diese Variante besitzt grunds tzlich dieselben Eigenschaften wie eine SQL basierte DSL Dieser gegen ber entf llt jedoch das Familiarit ts Argument Ausserdem muss eine passende einfach zu erlernende Syntax definiert werden Aus diesen Gr nden wird diese Variante nicht weiter verfolgt 4 4 5 Fazit erl utert die wichtigsten Kriterien f r die Bewertung der beschriebenen Format L sungen 39 40 4 ANALYSE Kriterium Beschreibung Gewichtung Performance Wie performant ist die Losung Wichtig aufgrund KI des Effizienz NFRs welches beim Treffen mit Herrn Dorfschmid geaussert wurde Machbarkeit Die generelle Umsetzbarkeit der funktionalen Anfor kak derungen mit dieser L sung Aufwand Komplexit t Der ben tigte Aufwand um Applikation der L sung Akr umzusetzen Tabelle 4 8
59. QL Adapter static3 0 5 1 Static Asset Server Durch django toolbelt installiert requests 2 5 3 HTTP Bibliothek python social auth OAuth Unterst tzung django picklefield 0 3 1 Erlaubt Python Pickles als Datenbank Felder djangorestframework 3 0 5 REST API Framework django pgjson 0 2 3 JSON Datentyp Unterst tzung f r PostgreSQL djangorestframework jwt 1 4 0 JWT Unterst tzung f r REST das Framework whitenoise 1 0 6 Static Asset Server Dieser wird effektiv in OpenDataHub verwendet NumPy Pandas numpy 1 9 1 High performance Vektor Operationen pandas 0 16 0 Data Analysis Bibliothek xlsxwriter 0 7 1 OpenXML Excel xlsx Unterst tzung f r Pandas xlwt 0 7 5 Excel Unterst tzung schreibend f r Pandas xlrd 0 9 3 Excel Unterst tzung lesend f r Pandas Geo pygdal 1 10 1 GDAL Python API geopandas 0 1 1 Pandas Erweiterung um Geo Funktionalit t fiona 1 5 1 Wrapper um GDAL API wird von GeoPandas verwendet shapely 1 5 7 Geometrie Objekte in Python Wird von GeoPandas ver wendet pyproj 1 9 4 PROJ4 Python API Koordinaten Transformationen fastkml 0 9 KML Parser Bibliothek 126 1 4 VERWENDETE SOFTWARE 127 Name Version Beschreibung Diverses unicodecsv 0 9 4 Unicode Unterst tzung f r CSV pyparsing 2 0 3 Parser Parser Bibliothek Wird verwendet um die Open DataHub Query Language ODHQL zu definieren und parsen Ixml 3 4 2 LXML Python API beautifulsoup4 4 3 2 HTML Parser django ssl
60. Seite mit page Suche F r die Suche werden folgende Parameter verwendet Parameter Beschreibung filter name Filtert anhand des Namens filter description Filtert anhand der Beschreibung filter search Filtert sowohl mit Namen als auch mit der Beschreibung filter mineOnly Liefert nur Dokumente die dem eingeloggten Benutzer zugeordnet sind Tabelle 5 8 Such Parameter Sortierung Sortiert die Resultate der Anfrage Dazu kann der Parameter sorting key asc desc verwendet werden mit folgenden Werten als key name description private owner und created_at Preview Liefert eine Vorschau der Daten Enthalten ist der Unique Name welcher in Abfragen verwendet werden kann eine Liste der Felder und deren Typen sowie ein paar Daten Zeilen Die Anzahl der gelieferten Daten Zeilen kann per Paging gesteuert werden siehe Programmcode 5 3 Preview f r ein Dokument type preview 62 5 5 API 63 unique_name ODH4_Bahnhoefe parent n ugu A types TYPE BiG iNT fid TEXT CNTRYNAME TEXT DUP_NAME TEXT PROVINAME TEXT PEEVE BEGIN TN geometry GEOMETRY NATION BIGINT CONURB TEXT name TEXT Feo url http beta opendatahub ch api vi document 4 preview columns TYPE fid geometry DUP_NAME PROVINAME LEVEL gt CNTRYNAME NATION CONURB name J Mdaba el TYPE Ara r fig UEA 5 CNTRYNAME
61. TZER AUTHENTIFIZIERUNG 45 000 Web Page Title SELS renoncer lt opendatahub File Import Link Link Link h1 File Import It s Simple Just add your different file sources to your newly created project Then hit continue to define your transitions h2 New File S Drop your Files in this Are h2 Online Import Enter a web URL for importing a data Set Give it a custom name to identify it later on httpy www example com somedata cs Ha my addresses from example com Let s go Ahead and add one more h2 Existing Data Sets Example Zebra striped Filte Get a little fancy with your tables by adding zebra striping just add the zebra striped class Set Name Description Format Some One English 1 2 Joe Sixpack English 3 Stu Dent Code Holy guacamole Best check yo self you re not looking too good E Abbildung 4 4 Fr hes Mockup f r Upload Formular 4 6 Benutzer Authentifizierung In diesem Kapitel werden verschiedene Varianten zur Authentifizierung erlautert 4 6 1 Herk mmliche Registrierung per E Mail Die klassische Benutzer Registrierung bietet den Vorteil dass sie keine Abh ngigkeiten zu Drittpartei en besitzt So kann sich jeder Benutzer mit einer g ltigen E Mail Adresse registrieren und anmelden Ein Nachteil dieser Methode kann sein dass Dummy Adressen verwendet werden k nnen und so ein registrierter Benutzer nicht wir
62. _AUFGABE Original Aufgabenstellung Quellen der ATEX Dokumentation inkl Sitzungsprotokollen main pdf _SRC opendatahub heroku buildpack scipy 4 Weitere Git Repositories der GitHub Organisation hsr ba fs15 dat Deploybare Applikation Cc Generierte Sphinx TSDoc Dokumentation des Quellcodes I 5_BROSCHUERE Atlassian Jira Backup Time Tracking Export Abbildung A 1 Inhalte der beigef gten CD 143 B Eigenst ndigkeitserkl rung Wir erklaren hiermit e dass wir die vorliegende Arbeit selber und ohne fremde Hilfe durchgef hrt haben ausser derje nigen welche explizit in der Aufgabenstellung erw hnt sind oder mit dem Betreuer schriftlich vereinbart wurde e dass wir s mtliche verwendeten Quellen erw hnt und gem ss g ngigen wissenschaftlichen Zitierregeln korrekt angegeben haben e dass wir keine durch Copyright gesch tzten Materialien z B Bilder in dieser Arbeit in uner laubter Weise genutzt haben Ort Datum Rapperswil 1 Juli 2015 Namen Unterschriften GR re Wi Whi Fabio Scala Christoph H sler Remo Liebi 144 C dat Schnittstellen Dieses Kapitel beschreibt die M glichkeiten wie dat mittels Schnittstellen und Konfiguration ber dessen Basisfunktionalit t eines simplen tabellen artigen Speichers hinaus verwendet werden kann C 1 CLI dat help Example usage make a new folder and turn it into a dat store mkdir foo cd foo dat init put
63. _NAME u LEVEL u NAME u NATION u PROVINAME u TYPE u geometry dtype object gt gt gt gdf CONURB 10 0 None 1 Chiasso 2 Balerna 3 Mendrisio 4 Capolago 5 Capolago 6 Capolago Y Capolago 8 Capolago 9 Maroggia gt gt gt gdf gdf CONURB Ziirich 5 CNTRYNAME CONURB DUP_NAME LEVEL NAME NATION 1317 Switzerland Z rich N 10 Sood Oberleimbach 41 1346 Switzerland Z rich N 10 Z rich Leimbach 41 1360 Switzerland Z rich N 10 Z rich Mannegg 41 1373 Switzerland Z rich N 10 Z rich Wollishofen 41 1374 Switzerland Z rich N 10 Z rich Tiefenbr nnen 41 Shttp www r project org 38 4 4 INTERMEDIARES FORMAT UND TRANSFORMATIONSSPRACHE 39 PROVINAME TYPE geometry 1317 Z rich 30 POINT 681918 8961174991 241523 9264312923 1346 Z rich 30 POINT 681750 8866669014 243289 5358952266 1360 Z rich 30 POINT 681746 1775964648 244178 9977101207 1373 Z rich 30 POINT 682765 2814791016 244804 6936600676 1374 Z rich 30 POINT 685054 0860048197 244870 4588255175 gt gt gt gdf gdf geometry within shapely geometry Polygon 704940 231559 704949 231559 704945 231550 CNTRYNAME CONURB DUP_NAME LEVEL NAME NATION PROVINAME 1196 Switzerland Rapperswil N 10 Rapperswil 41 Ostschweiz DYPE geometry 1196 30 POINT 704945 8093275279 231556 7192434487 PyTables HDF ist eine high performance Python Bibliothek die wie Pandas ebenfalls auf Num
64. a JSON object into dat echo hello world dat import json stream the most recent of all rows dat cat stream a CSV into dat cat some_csv csv dat import csv or dat import csv some_csv csv use a custom newline delimiter cat some_csv csv dat import csv newline r n use a custom value separator cat some_tsv tsv dat import csv separator t stream NDJSON into dat You can pipeline Newline Delimited JSON 145 146 C DAT SCHNITTSTELLEN NDJSON http ndjson org into dat on stdin and it will be stored cat foo ndjson dat import json specify a primary key to use echo a b c n1 2 3 dat import csv primary a echo foo bar dat import json primary foo attach a blob to a row dat blobs put jingles jingles cat photo 01 png stream a blob from a row dat blobs get jingles jingles cat photo 01 png add a row from a JSON file dat rows put burrito recipe json get a single row by key dat rows get burrito delete a single row by key dat rows delete burrito but rows are never truly deleted you can always go find a row at the version it was amp last seen in this case that row was at version 1 dat rows get burrito 1 start a dat server dat listen then you can poke around at the REST API api changes api changes data true api metadata api rows docid POST api bulk content type application json newline separated json pull data from ano
65. abe der Aliases ist der Benutzer entt uscht dass die Tabelle nicht automatisch weiter scrollt Das Speichern der Transformation funktioniert problemlos 81 82 6 TESTING 6 1 4 Ul04 Daten transformieren Ohne Assistent Anmeldestatus Angemeldet Aufgabe Der Benutzer interessiert sich f r Baustellen auf Z rcher Kantonsstrassen Er will Gemein de Baustellen Status Beginn und Ende der Bauarbeiten den Strassennamen sowie die Geometrie als Punkt jeweils mit menschenlesbaren Namen und erstellt dazu eine Transformation Das Datums Format soll dem Format Tag Monat Jahr z B 01 01 1970 entsprechen Da er bereits Erfahrung mit ODHQL oder SQL hat schreibt er die Transformation selbst Der Assistent kann als Startpunkt verwendet werden unterst tzt jedoch nicht alle ben tigte Funktionalit t Hinweis Die Sprache ODHQL lehnt sich stark an SQL an Ausserdem ist in der Hilfe eine ODHQL Referenz enthalten Walkthrough 1 Der Benutzer klickt auf Neue Transformation und liest sich den Informations Text durch 2 Um die Liste der Spalten zu erhalten verwendet er den Assistenten siehe Schritte 7 3 Durch Klick auf Manuelles Bearbeiten wechselt der Benutzer in den Editier Modus 4 Mit Hilfe der ODHQL Referenz erg nzt der Benutzer die fehlenden Funktionen ST _Centroid To_Date To_Char Zur berpr fung der Abfrage verwendet der Benutzer periodisch den Vorschau Knopf 5 Anschliessend
66. angegebenen Zeichenkette endet Kann als Bedingung verwendet werden Parameter e strings TEXT Spalte oder Wert e end TEXT Spalte oder Wert Beispiel ENDSWITH ODH9 haltestelle Flughafen AS ist_flughafen EXTRACT strings pattern group 1 Wendet einen Regularen Ausdruck Regex auf die angegebene Spalte oder den Wert an und liefert das Resultat der angegebenen Gruppe zur ck Da Backslashes Parameter e strings TEXT Spalte oder Wert e pattern Regularer Ausdruck Siehe Regex Dokumentation e group Optional Gruppe welche ausgewertet werden soll Default 1 Beispiel EXTRACT t text AS title GET strings index Liefert das Zeichen an der angegebenen Stelle im Text O basiert Parameter e strings Spalte oder Wert e index Spalte oder Wert Beispiel GET ODH12 country 1 AS c LEN strings Liefert die Lange des TEXTs Parameter e strings TEXT Spalte oder Wert Beispiel LEN ODH7 description AS description_length LOWER strings 167 Konvertiert alle Buchstaben in Kleinbuchstaben Parameter e strings TEXT Spalte oder Wert Beispiel LOWER ODH7 ort AS ort LTRIM strings Entfernt White Space vom Beginn der Spalte oder des Wertes Parameter e strings TEXT Spalte oder Wert Beispiel LTRIM ODH7 strasse AS strasse NVL a b Gibt das zweite Argument zur ck falls das erste NULL ist Parameter e a Spalte oder Wert der auf NULL gepr ft werden s
67. ansformationen weitgehend entfallen w rde aufgrund der Machbarkeit im Zusammenhang mit Echtzeit Datenquellen ver worfen Als Transformationssprache wird eine an SQL angelehnte DSL implementiert 4 5 User Interface 4 5 1 Backend Im Python Umfeld existieren zwei fiir uns bekanntere Frameworks fiir Webapplikationen Flask und Django F Scala und R Liebi haben in ihren Semesterarbeiten Flask eingesetzt und geraten Django zu verwenden Um einfach ein REST API erstellen zu k nnen wird zus tzlich die Django Erweiterung rest_framework verwendet Entscheid 4 3 Backend Flask hat sich in fr heren Arbeiten nicht empfohlen Daher setzen wir in dieser Arbeit Django ein 6http flask pocoo org Thttps www djangoproject com 8http www django rest framework org 41 42 4 ANALYSE 4 5 2 Frontend Technologie AngularJS ist ein weit verbreitetes und etabliertes Frontend Framework basierend auf MVVM Im Rahmen der Studienarbeiten wurde dies von Teilen unseres Teams bereits eingesetzt Entscheid 4 4 AngularJS als Frontendtechnologie Da Christoph H sler und Fabio Scala bereits viel Erfahrung mit AngularJS sammeln konnten und es sich dabei um ein etabliertes Framework handelt wurde f r AngularJS und gegen andere potenziellen JavaScript Frameworks entschieden Eine detaillierte Evaluation fand bereits im Rahmen der Studienarbeiten von Fabio Scala und Remo Liebi statt Im Kontext der Evaluation eines f r die Aufgabe
68. ass es lediglich das Referenzsystem 4326 klassisches lat lon unterst tzt 4 2 8 ESRI Shapefile Das Shapefile ist ein von der Firma ESRI spezifiziertes Format zum Austausch von Geo Daten Es wird von fast allen Bibliotheken und Systemen unterst tzt und daher oft als universelles Austauschformat f r Geo Daten verwendet Das Shapefile wird immer wieder aufgrund diverser Schw chen kritisiert z B die Limitation der Spaltennamen auf 8 Zeichen sowie von Textspalten auf 255 Zeichen Aus diesem Grund wird versucht das veraltete Shapefile durch ein moderneres Format wie GeoJSON oder GeoPackage abzul sen sfkeller 4 2 9 WFS Bei Web Feature Service WFS handelt es sich um einen speziellen Webservice f r Geo Daten Die Daten k nnen blicherweise im GML Format bezogen werden Da es sich dabei um einen weit verbreiteten Standard des Open Geospatial Consortium OGC handelt sollte die Applikation einen direkten Bezug von Daten via einem WFS Server erm glichen 4 2 10 XML Da es sich bei XML um eine potenziell verschachtelte Datenstruktur handelt wird vorerst nur eine flache Version unterst tzt hnlich der von der API von truckinfo ch gelieferten und in beschriebenen Daten 4 2 11 JSON Auch bei JSON handelt es sich um ein Format mit Schachtelungsm glichkeit Aus diesem Grund wird auch hier vorerst nur die oberste Ebene betrachtet 31 32 4 ANALYSE 4 3 Datenspeicherung Ein Ziel dieser Arbeit ist die Erstellung eines
69. automatisch ausgef hrt Um nur die Python Tests auszuf hren wird folgender Befehl verwendet pyb v django_test 1 3 Einstellungen In diesem Kapitel werden die wichtigsten Einstellungen f r den Betrieb von OpenDataHub erl utert 1 3 1 settings py Folgende Parameter sollten direkt in der Datei settings py konfiguriert werden SECRET_KEY Sollte auf jeder Instanz anders sein USE_X_FORWARDED_HOST Verwaltet das Protokoll hinter einem Reverse Proxy SECURE_PROXY_SSL_HEADER Verwaltet das Protokoll hinter einem Reverse Proxy DATABASES konfiguriert die Entwicklungs Datenbank Hier sollte keine Produktive Datenbank hinterlegt werden Siehe CACHES konfiguriert die Cache Backend LANGUAGE_CODE de ch setzt den 118N Code f r Django 124 1 4 VERWENDETE SOFTWARE 125 TIME_ZONE Europe Zurich EMAIL_ F r Fehler Benachrichtigungen im Frontend PACKAGE_PREFIX ODH Prefix f r Dokumente TRANSFORMATION_PREFIX TRF Prefix f r Transformationen F r diese Parameter gilt dass sie nicht auf Produktionsumgebungen ge ndert werden sollten 1 3 2 Umgebungsvariablen Umgebungsvariablen m ssen dem Programm von aussen mitgegeben werden Dies h ngt von der jeweiligen Art des Umgebung ab F r PyCharm finden Sie diese Einstellungen unter Run Debug Configuration DJANGO_DEBUG False Wird verwendet um DEBUG Output zu aktivieren DJANGO_CONFIG None bewirkt dass die minified JavaScript Libraries geladen werde
70. b angemeldet Testperson 1 1 Der Benutzer sieht den Anmelden Button und klickt darauf 2 Da er einen GitHub Account hat und dort bereits angemeldet ist w hlt er diesen Provider 3 Die Anmeldung erfolgt problemlos Der Benutzer w nscht sich anschliessend zu sehen wer eingeloggt ist Name fehlt 6 1 2 UI02 Daten bereitstellen Anmeldestatus Angemeldet 79 80 6 TESTING Aufgabe Der Benutzer will die Daten aus der Datei Baustellen Mai 2015 xls mit einer Liste von Baustellen im Appenzell Ausserrhoden anbieten Walkthrough 1 2 Der Benutzer klickt auf Teilen Der Benutzer f llt die Felder Name Titel sowie Beschreibung aus Zum Beispiel Name Baustellen Mai 2015 Beschreibung Baustellen Liste Appenzell Aus serrhoden Mai 2015 Die Felder Privat sowie Format werden ignoriert 3 a Die Daten sollen privat bleiben Der Benutzer klickt das Feld Privat an 3 b Der Benutzer will sicherstellen dass das Format richtig erkannt wird und w hlt aus der Liste das Format Excel aus Da die Daten als Datei vorliegen w hlt der Benutzer Dateien hochladen aus Anschliessend zieht er die Datei von einem File Browser direkt auf das Upload Feld Ein Klick auf den Button Teilen l dt die Datei hoch Eine gr n hinterlegte Nachricht Ihre Daten wurden gespeichert erscheint 6 a Die Daten liegen in einem Format vor welches von Open
71. bower json abgelegt und werden mittels Bower installiert Name Version Beschreibung Angular Core angular 1 4 0 AngularJS Singe Page Application Framework bootstrap 3 2 0 CSS Layout Framework angular animate 1 4 0 CSS Animationen mit AngularJS angular aria 1 4 0 Accessibility f r AngularJS Applikationen angular cookies 1 4 0 AngularJS Coookie Unters tzung angular messages 1 4 0 AngularJS Validierungs und Fehlermeldungen angular route 1 4 0 URL Routing angular sanitize 1 4 0 Security HTML Escaping in der Templates angular touch 1 4 0 Unterst tzung f r Touch Events json3 3 2 6 Cross Browser bzw JavaScript Engine JSON Im plementation es5 shim 2 1 0 Cross Browser ECMAScript5 Compliance Shim jquery 2 1 3 jQuery Erweiterungen angular ui router 0 2 13 Erweitertes URL Routing animate css 3 2 1 Auswahl an CSS3 Animationen 1 Web Package Manager siehe http bower io 128 1 4 VERWENDETE SOFTWARE 129 Name Version Beschreibung ngtoast angular bootstrap angular ui utils angular ui select font awesome ng file upload 1 5 0 0 12 1 0 2 2 0 11 1 4 3 0 3 2 4 bootstrap material design 0 3 0 arrive angular easyfb restangular 2 1 0 1 2 1 1 4 0 bootstrap social buttons 1 0 0 satellizer blockui angular truncate ng table angular ui ace fontawesome actions angular moment stacktrace js ES6StringFormat angular scroll highlightjs angular highlightjs Eig
72. bung Product Owner Der Product Owner bestimmt die Anforderungen User Stories und priorisiert diese Die Priorit t gibt an welche User Stories es im n chsten Sprint zu erledigt gilt Team Das Team besteht aus allen f r das Projekt t tigen Entwicklern Scrum Master Der Scrum Master k mmert sich um die fortlaufende Kontrolle des Fortschritts sowie Optimierungsm glichkeiten In der Praxis ist er zudem f r die Leitung der Daily Scrum Meetings zust ndig Tabelle 1 2 Scrum Projektrollen 90 1 2 ARTEFAKTE 91 1 2 Artefakte Artefakt Beschreibung Product Backlog Der Product Backlog enth lt alle noch nicht abgeschlossenen User Stories des Projekts Vor Beginn des neuen Sprints werden die noch offenen User Stories vom Product Owner repriorisiert und dessen Aufwand vom Team geschatzt Sprint Backlog Der Sprint Backlog enth lt alle f r einen bestimmten Sprint ausgew hlten User Stories Das Team setzt die Quantit t fest und der Product Owner bestimmt den Inhalt und somit welche User Stories in den n chsten Sprint einfliessen Burndown Charts Mittels Jira werden laufend die Ist und Sollstunden des Sprints addiert und daraus ein regressives Diagramm erstellt Dies soll aufzeigen wie man zeitlich steht um m gliche Zeitprobleme zu vermeiden Tabelle 1 4 Scrum Artefakte 1 3 Sprints Die Iterationen bei Scrum Sprint genannt und in dargestellt dauerten mit Ausnahme des ersten und letzten Sprints jeweils zwei Woc
73. ch 52 e gt C D beta opendatahub ch transformation create Q Speichern Name Titel Namen der Mitarbeiter Beschreibung Selektiert die Vornamen aller Mitarbeiter Privat EI SPEICHERN 2015 Geometa Lab HSR GitHub Abbildung 2 10 Speichern der Transformation 2 4 2 Manuelle Abfrage e Nach der Verwendung des Assistenten kann die erstellte Abfrage manuell erweitert werden um die volle M chtigkeit von ODHQL Funktionen nutzen zu k nnen e Durch Klick auf Manuelles Bearbeiten in ersichtlich kann die Abfrage direkt bearbeitet werden e Durch Klick auf Hilfe oder beta opendatahub ch Hilfe ODHQL Referenz oder in gelangt man auf die Dokumentation der Abfrage Sprache 140 2 4 DATEN TRANSFORMIEREN 141 s OpenDataHub ch x Ci beta opendatahub ch transformation create Q Start 7 Assistent Manuelles Bearbeiten Manuell bearbeiten 1 SELECT CONCAT t1 Prename t1 Surname AS Name 2 FROM ODH40 1_empLoyees as t1 5 Vorschau Name Christian Stewart David Thomas Aubrey Lewis Abbildung 2 11 Manuelle ODHQL Abfrage zeigt eine Erweiterung der mit dem Assistenten erstellten Abfrage wobei Vor und Nachname zusammengef hrt werden um so die Spalte Name zu erzeugen 141 A Inhalt der CD ba opendatahub_chuesler_rliebi_fscala pdf Dieses Dokument Diverse Info und Best Practice Dokumente f r die BA 1
74. ch separat als Originaldateien abgelegt werden um keine Informationen zu vernichten Transformationssprache Vorteile dieser Variante sind dass die Abfrage Sprache bereits vorhanden und bekannt ist und dass je nach verwendeter Datenbank auf vorhandene Funktionen und Optimierungen zur ckgegriffen werden kann Falls Postgres mit PostGIS zum Einsatz kommt kann auch im Geo Bereich eine umfassende Funktions Bibliothek verwendet werden Neue Funktionen m ssen zwangsweise auf Datenbank Ebene implementiert werden bei Postgres z B mit Procedural Language PostgreSQL Structured Query Language PL pgSQL Diese Variante bringt praktisch alle verlangten Features ohne grossen Implementationsaufwand mit Das Hinzuf gen bisher nicht vorhandener Funktionalit t ist jedoch eher schwierig Anmerkungen Da die Format Konversionen auf Python Ebene durchgef hrt werden liegt folgender Datenfluss vor e Zu Beginn befinden sich die Daten als BLOB in der Datenbank e Um die Daten zu parsen werden sie mit Python ausgelesen e Der Parser schreibt die Daten als Records wieder in die Datenbank 35 36 4 ANALYSE e Die Transformation findet statt Aus Effizienzgr nden k nnte hier z B eine Materialized View verwendet werden Die Resultate werden von Python ausgelesen e Ein Formatter verwendet diese Daten um das gew nschte Format zu erzeugen In diesem Prozess werden die Daten mehrfach aus der Datenbank gelesen bzw wieder in diese hin eingeschri
75. ction Identifier FunctionArgumentList FunctionArgumentList Expression Expression Field DataSourceNameOrAlias FieldName DataSourceNameOrAlias DataSourceName Alias DataSourceSelectionList from DataSourceName as Alias JoinDefinition JoinDefinition left right full join DataSourceName as Alias on JoinCondition JoinCondition SingleJoinCondition SingleJoinCondition and SingleJoinCondition SingleJoinCondition Expression Expression FilterList where FilterAlternative FilterAlternative FilterCombination or FilterCombination FilterCombination Condition and Condition Condition BinaryCondition InCondition IsNullCondition PredicateCondition FilterAlternative BinaryCondition Expression BinaryOperator Expression BinaryOperator lt lt gt gt not like InCondition Expression not in Expression Expression 159 160 D ODHQL SYNTAX IsNullCondition Field is not Null PredicateCondition not Function OrderByList order by OrderByField OrderByField OrderByField Field Alias Position asc desc Integer 0 1 2 3 4 5 6 7 8 9 LiteralExpression SingleQuotedString Number Boolean Null Number Integer
76. der wie Amazon S3 oder auf Datenbanken als Daten Speicher Unterst tzung f r Cloud Anbieter ist kein zwingendes Kriterium f r diese Arbeit soll aber falls m glich erhalten bleiben Tabelle 4 2 Bewertungskriterien Datenspeicherung fasst die verschiedenen Optionen zusammen 33 34 4 ANALYSE Kriterium File DB Records DB Schemalos Original bleibt erhalten kkk Ki kkk Einbindung Software kkk HT kkk Beliebige Formate kkk Ki kkk Cloud KA KR kkk Total kkk kK kkk Tabelle 4 4 Auswertung verschiedener Speicher Varianten Entscheid 4 1 Datenspeicherung Aus Gr nden der Kompatibilit t zu Cloud Anbietern insbesondere Heroku ohne gleich Cloud Datenspeicher wie Amazon S3 verwenden zu m ssen wurde bereits fr h entscheiden die Dateien in der Datenbank zu persistieren Da die Datenhaltung ohnehin eine sehr lose Kopplung zur restlichen Applikation besitzen soll kann k nftig auch eine andere Strategie implementiert werden 4 4 Intermedi res Format und Transformationssprache 4 4 1 Motivation und Voraussetzungen Dateiformat NND bersetzungsmodule Bei N Dateiformaten w rden bei 1 zu 1 Format Konversionen bereits ben tigt um lediglich zwischen den Dateiformaten zu konvertieren Zudem muss es m glich sein das Schema der Daten zu transformieren Diese Tatsache erfordert zwingend ein intermedi res einheitliches Format ohne welches eine generische Transformation unm glich w re Transformationssprache
77. dieses Problem mit dem Daten Austauschformat Interlis zu l sen Aufgrund mangelnder Unterst tzung seitens der Software Hersteller muss jedoch nach wie vor erst eine Konversion in dieses Format vor dem Austausch durch die beteiligten Stellen selbst vorgenommen werden Dies bringt einen beachtlichen technischen und betrieblichen Aufwand mit sich Ziele Das Ziel dieser Arbeit ist es einen Prototypen f r eine Plattform zu evaluieren und implementieren welche diverse Dateiformate lesen und schreiben kann so dass ein Benutzer sich um die Daten k mmern kann statt sich mit Formaten befassen zu m ssen fortgeschrittenen Benutzern erlaubt neue Sichten oder Transformationen f r bereitgestellte Daten zu erstellen welche andere Benutzer dann weiter verwenden k nnen e Mit Geo Daten umgehen kann e Benutzern erm glicht Daten ffentlich anzubieten F r das reine Anbieten von Daten existieren bereits gute L sungen siehe Aus diesem Grund fokussiert sich diese Arbeit auf die Transformation von Daten sowie Formatunterst tzung Ergebnisse Im Rahmen der Arbeit wurde mit OpenDataHub ODH eine moderne Webapplikation geschaffen Database Stores uploaded data unchanged REST API Metadata Transform ODHQL Formats data into Transforms data into Parses file formats the desired output format other shapes Ubersicht OpenDataHub Architektur Formate Benutzer k nnen Daten mit anderen Benutzern teilen
78. dung 2 2 Herunterladen von Daten 1 Durch Klick auf Herunterladen erscheint eine Liste der m glichen Bezugsformate wie in 2 Es kann nun ein Format wie beispielsweise Excel angeklickt werden 3 Die Applikation bzw der Browser wird nun eine Datei zum Download anbieten 2 1 2 Daten bearbeiten l schen Hochgeladene Daten sowie erstellte Transformationen k nnen jeweils gel scht und bis zu einem gewissen Grad wie folgt bearbeitet werden 131 132 2 BENUTZERHANDBUCH OpenDataHub ch GC beta opendatahub ch code 963fd42830db2db64d99 document 4001 Dokument bearbeiten Name Titel Mitarbeiterdaten XY AG Beschreibung Enth lt alle Mitarbeiterdaten der XY AG Privat LOSCHEN AKTUALISIEREN 2015 Geometa Lab HSR GitHub Abbildung 2 3 Bearbeiten von Daten 1 Nachdem die gew nschten Daten wie in beschrieben gefunden wurden k nnen diese sofern man der Besitzer Ersteller ist bearbeitet werden 2 Zuunterst in der Detailansicht k nnen die Daten modifiziert oder gel scht werden 132 2 2 REGISTRIERUNG ANMELDUNG 133 2 2 Registrierung Anmeldung gt OpenDataHub ch x C beta opendatahub ch login wy opendatahub Daten Hilfe Anmelden Registrieren f MIT FACEBOOK ANMELDEN MIT GITHUB ANMELDEN 2015 Geometa Lab HSR GitHub Abbildung 2 4 Anmeldung Registrierung auf OpenDataHub Der Bezug von ffentlichen
79. e Datenquelle angegeben werden Falls mehrere Datenquellen verwendet werden sollen muss eine Verkn pfungsbedingung angegeben werden Unterst tzt werden folgende Join Typen Inner Standard Verlangt dass beide Seiten vorhanden sind FROM ODH12 AS employees JOIN ODH13 AS employers ON employees employer_id employers id Left 163 Verwendet die Schlussel der linken Seite fur den Vergleich rechte Seite kann null sein FROM ODH12 AS employees LEFT JOIN ODH13 AS employers ON employees employer_id employers id Right Verwendet die Schlussel der rechten Seite fur den Vergleich linke Seite kann null sein FROM ODH12 AS employees RIGHT JOIN ODH13 AS employers ON employees employer_id employers id FULL Verwendet die Vereinigungsmenge der Schl ssel der beiden Seiten f r den Vergleich beide Seiten sind optional es kann jedoch pro Zeile nur eine Seite null sein FROM ODH12 AS employees FULL JOIN ODH13 AS employers ON employees employer_id employers id Filter Folgende Filter Ausdr cke sind m glich is null is not null Pr ft ob ein Feld nicht null ist in notin Pr ft ob ein Ausdruck nicht in einer Liste enthalten ist code sql country IN CH DE AT lt gt lt gt Vergleicht zwei Ausdr cke miteinander like not like Pr ft ob ein Ausdruck einem Muster entspricht Verwendet wird dazu ein Regul rer Ausdruck mit Python Syntax Pr dikat Eine Funktion welche ein boolsches Re
80. e Formate in eine Tabellenstruk tur zu laden und mit einem API darauf diverse Transformationen anzuwenden oder gar ganze Transformations Pipelines aufzusetzen Der Vorteil von petl gegen ber anderen L sungen liegt in dessen lazy evaluation Es werden keine Daten geladen oder transformiert bis das Resultat ben tigt wird Dann erst werden die Daten Zeile f r Zeile eingelesen und durch die Transformations Pipeline geschleust Petl kann somit mit sehr grossen Datenmengen umgehen ist aber im Vergleich zur Konkurrenz langsamer und f r Performance kritische Applikationen ungeeignet petl Pandas ist eine Bibliothek zur Datenanalyse sozusagen das R f r Python Doch die zugrunde liegenden ebenfalls tabellenartigen Datenstrukturen zusammen mit der API von Pandas machen Transformationen wie Joins Filtern Umbenennungen und Berechnungen sowie String Operationen sehr einfach Pandas baut auf NumPy auf der de facto Standardbibliothek f r Matrizen Berech nungen in Python Da NumPy in C bzw Fortran und das Python API sehr funktional orientiert implementiert sind lassen sich Operationen auf ganze Spalten oder Tabellen anwenden was zu einer f r Python Verh ltnisse sehr hohen Performance f hrt pandasMergePerformance Programmcode 4 2 Pandas mit GeoPandas gt gt gt import geopandas gt gt gt gdf geopandas GeoDataFrame from_file Bahnhoefe shp gt gt gt gdf columns Index u CNTRYNAME u CONURB u DUP
81. e Kopplung von Jira mit GitHub bietet mit der Verwendung von sog Smart Commits eine noch komfortablere M glichkeit um Aufw nde zu verbuchen oder Tasks zu kommentieren oder zu schliessen DAT Backlog Active sprints Reports Board SPRINT Sprint 1 Woche 2 QUICK FILTERS Only My Issues Recently Updated To Do In Progress In Review Done DAT 17 3 sub tasks dat dokumentieren DAT 28 DAT 27 Anhang dat Installation amp deployment Einf hrung dat om om amp DAT 29 Erweiterung dat SA E En DAT 19 2 sub tasks Infrastruktur aufsetzen DAT 20 Dokumentieren Remo DAT 21 Dokumentieren Fabio _ gt 5 Other Issues 6 issues E DAT 24 amp DAT 13 63 DAT 30 brige Aufwande Remo Sprint 1 Projektmeeting Woche 2 Sprint 0 Log sh om om DAT 18 Risikoanalyse co om DAT 25 Abbildung 4 2 Jira Agile Board Jira wurde auf einer virtuellen Maschine der HSR betrieben und dessen Daten taglich automatisiert via cronjob gesichert Beispiel DAT 18 added project risks time 3h comment first draft https confluence atlassian com display FISHEYE Using smart commits 99 100 4 ENTWICKLUNGSUMGEBUNG UND INFRASTRUKTUR 4 4 Kommunikation 4 4 1 Slack Bei der Durchf hrung der Bachelorarbeit wollten wir auf die Kommunikation per E Mail m glichst verzichten Das Team hat sich mittels slack com ausgetauscht sowie Sitzungen protokolliert und Informationen via Weblinks
82. e Struktur umfassen Daten Daten bereitstellen Transformation erstellen Unter dem Menupunkt Daten werden bestehende Dokumente und Transformationen bereitgestellt 42 4 5 USER INTERFACE 43 Assistent Es kann sich schwierig gestalten eine Transformation von Grund auf zu erstellen Deshalb soll eine Art Assistent zur Verf gung gestellt werden welcher eine initiale ODHQL Abfrage erstellen kann Dieses soll auch Abfragen mit JOIN und UNION unterst tzen Drafts Zu Beginn des Projekts wurden einige Skizzen erstellt wie das Front End aussehen k nnte Einige davon werden in diesem Abschnitt aufgezeigt Abbildung 4 2 Fr hes Mockup Transformation erstellen Bevor klar wurde dass es zur Erstellung von Transformationen einen Assistenten ben tigt war dies 43 44 4 ANALYSE wie in angedacht Auch einen grafischen Editor analog wie bei Yahoo Pipes eingestellt zu implementieren war eine Option siehe Search Search z Sources Predefined Source Fetch CSV tem Builder Fetch Data Upload File Fetch Feed OC 0 0 0 Merge all Fields al gt Scrollable Area Abbildung 4 3 Fr he Idee Transformation mit Pipes erstellen Verworfen Das Upload Formular wurde sehr nahe dem in gezeigten Wireframe implementiert 44 4 6 BENU
83. e niert Unerfahrene Projektmanager Ungen gende Kommunikation Gold plating Personalausfall Krankheit Unfall n a Fehlendes Know how im Team Organisatorische Anpassungen z B Betreuer oder Ansprechperson des Kunden ndert iver Ei c Politi Ei eee A Ausfall Infrastruktur eines Teammitglieds Notebook dat ist nicht f r die Anforderungen des Projekts geeignet dat ist zu unreif und es fehlt die n tige Dokumentation Das dat Projekt wird nicht weiterentwickelt Der virtuelle Server der HSR f llt tempor r aus Ausfall weiterer Infrastruktur Git Slack Es treten technische H rden auf die nicht vorhergesehen wurden und nicht zu bew ltigen sind ND www m 8 w Eintritts wahrschei Schaden Pr ventionsmassnahme nlichkeit Fr hzeitig beim Betreuer Prof S Keller melden Fr hzeitig beim Betreuer Prof S Keller melden Fr hzeitig beim Betreuer Prof S Keller melden Fr hzeitig beim Betreuer Prof S Keller melden Fr hzeitig beim Betreuer Prof S Keller melden Agile Vorgehensweise H u ge Projektsitzungen mit dem Kunden Agile Vorgehensweise H u ge Projektsitzungen mit dem Kunden Agile Vorgehensweise H u ge Projektsitzungen mit dem Kunden Agile Vorgehensweise Am Ende jedes Sprints wird das Resultat mit dem Kunden besprochen In einem ersten Schritt die Technologie dat erforschen und die Machbarkeit absch tzen Machbarkeit fr hzeitig absch tzen In einem er
84. eben Gleichzeitig kann die Datenbank viele ihrer Vorteile wie z B Indizes nicht ausspielen da sowieso meist alle Daten ben tigt werden Diese Effekte f hren dazu dass massive Performance Einbussen gegen ber anderen Optionen zu erwarten sind 4 4 3 Ogrtools Ogrtools ist eine Python Implementation des CLI Tools ogr2ogr erweitert mit simplen Transfor mationen Ogr2ogr wie auch ogrtools verwenden die kompilierten OGR GDAL Bibliotheken welche 1 zu 1 ogr ogr Format Transformationen erm glichen Beispielsweise k nnen ESRI Shapefiles shp in KML oder GML Dateien umgewandelt werden Da die Formate untereinander nicht immer kompatibel sind kann es durchaus zum Verlust von Informationen kommen Intermedi res Format Bei dieser Version befindet sich die komplette Parser Transformation Formatter Kette in ogr2ogr GDAL Als Zwischenformat k nnen die GDAL internen OGR Datenstrukturen betrachtet werden Transformationssprache Ogrtools beinhaltet bereits eine Transformations Konfiguration namens ogrtransform Die Transfor mation selbst wird ebenfalls von GDAL durchgef hrt Eine ogrtools Beispielkonfiguration ogrtools ist in zu sehen Programmcode 4 1 ogrtools Mapping Konfiguration OGR transformation configuration sre format C TnEeriiS 2 dst format PostgresQL dst_dsco vdst Ilco SCHEMA public Pe layers roadsexdm2ben_roads_streetnameposition fields tid
85. eiligen Sprints ersichtlich ist wurde der Aufwand relativ gut gesch tzt Weniger gut waren die Sch tzungen einzelner Tasks was in den Charts durch die Differenz zwischen verbleibendem Aufwand und verbuchten Aufwand dargestellt wird 118 Teil IV Softwaredokumentation 119 1 Entwicklung 1 1 Initialisieren Dieses Kapitel beschreibt das Aufsetzen der Entwicklungsumgebung f r ODH Voraussetzung ist eine Installation von Vagrant Vagrant kann f r alle g ngigen Betriebssysteme von vagrantup com heruntergeladen werden 1 1 1 Klonen des Git Repository Der n chste Schritt ist das Klonen des Git Repositories und starten der Vagrant VM git clone git github com hsr ba fs15 dat vm git l dt das Repository von github com cd vm wechselt in das gerade heruntergeladene Verzeichnis vagrant up Startet die Vagrant Instanz Wenn diese Befehle in eine nix Konsole eingegeben werden wird automatisch eine passende VM heruntergeladen und konfiguriert Unter Umstanden muss die Konfiguration angepasst werden Dies kann im Config File von puppet gemacht werden vm puphpet config yaml 1 1 2 Initialisieren von Django Nach folgenden Befehlen kann mit der Entwicklung gestartet werden vagrant ssh Verbindet mit der SSH Umgebung make dev Initialisiert die venu und installiert weitere ben tigte Packete exit Ausloggen ist notwendig damit das virtuelle environment virtualenv korrekt lt gt geladen wird 1 2 Entwicklungsumgebu
86. ellen gespeichert Dies erlaubt die Speicherung von Dokumenten bestehend aus mehreren Dateien oder transformierten Daten als zus tzlichen Daten Eintrag zu einem Metadaten Eintrag Dies erlaubt es auch Django Models zu erstellen welche nicht jedes mal die Daten abfragen obwohl nur Metadaten ben tigt werden Da Dateiformate existieren welche aus mehr als einer Datei bestehen ist die Option mit separaten Tabellen vorzuziehen Fazit erl utert die Kriterien f r die Bewertung der verschiedenen Varianten Kriterium Beschreibung Gewichtung Original bleibt erhalten Das Originaldokument bleibt erhalten oder kann kom tok plett rekonstruiert werden Dies bietet folgende Vor teile Verbesserungen an der Software Parser zeigt auch bei alten Daten Wirkung ausserdem gehen hier bei keine Daten verloren Einbindung Software Erlaubt die Einbindung von Drittanbieter Software KN Dies ist m glich auf Dateibasis oder direkt als Me mory Buffer falls Python Code aufgerufen wird Beliebige Formate Die Variante unterst tzt beliebige Formate Ansch KK liessende Transformationen k nnen nur auf bekannte Formate angewandt werden aber auch unbekannte Formate k nnen gespeichert und zum Download an geboten werden Die Daten k nnen verwendet werden falls sp ter ein Parser f r das bisher unbekannte For mat geschrieben wird Cloud Cloud Anbieter wie Heroku bieten oft kein permanen KT tes File System sondern verweisen auf Storage Provi
87. els einer vorgegebenen Sprache oder Konfiguration erstellen k nnen sodass diverse heterogene Daten homogenisiert und in einem einheitlichen Format bezogen werden k nnen Akzeptanzkriterien Gegeben Einer dokumentierten Schema Mapping Sprache oder Konfiguration einem Beispiel eines solchen Mappings Transformation wenn ich eine solche Transformation an die Applikation bergebe dann soll diese auf die ausgew hlten Daten angewendet werden Das Resultat will ich analog wie einzelne Daten in in diversen Formaten beziehen k nnen User Story 3 1 Transformation publizieren Als Experte will ich diese Transformationen Views auf die Daten analog wie die einzelnen Daten speichern und publizieren k nnen sodass diese einerseits immer wieder per Knopfdruck angewendet und andererseits auch von anderen nicht Experten verwendet werden k nnen 20 2 2 NICHT FUNKTIONALE ANFORDERUNGEN 21 2 1 6 Daten beziehen Epic 4 Datenbezug Als Endbenutzer will ich die bereitgestellten Daten in einem von mir gew nschten strukturierten Format beziehen k nnen Akzeptanzkriterien Gegeben Eine in der Applikation von einem Datenanbieter abgelegten Datei eine Datei dessen Format von der Applikation unterst tzt wird wenn ich die Datei mittels Browser in einem anderen Format beziehen will dann soll die automatisch ins Zielformat konvertierte Datei heruntergeladen werden 2 2 Nicht funktionale Anforderungen Die nic
88. en z B dat Entwickler Max Ogden oder dessen IRC Community auf Freenode Verschieben von User Stories in den Product Backlog Repriorisierung mit dem Kunden Nach Bedarf User Stories repriorisieren und in andere Sprints verschieben Zus tzliche xe Meetings innerhalb des Teams Projektscope reduzieren Notebook neu aufsetzen Alternative Technologie suchen Einbezug externer Experten z B aus dem IFS Alternative Technologie suchen oder dat forken und selbst weiterentwickeln Kommunikation via E Mail Einbezug externer Experten z B aus dem IFS G6 96 3 RISIKEN 3 1 Kritische Risiken Nach bzw w hrend der Einarbeitung in dat wurde eine erste Absch tzung der Risiken vorgenommen Alle irrelevanten oder ausschliessbaren Risiken wurden dabei mit einer Eintrittswahrscheinlichkeit und einem Schadenspotenzial von 0 bewertet Nachfolgend werden die als besonders kritisch eingestuften Risiken sowie deren Massnahmen genauer beschrieben Schon jetzt ist klar dass das gr sste Risiko das Projekt dat selbst darstellt Risiko R02 Titel Beschreibung Pr vention Massnahme Risiko Titel Beschreibung Pr vention Massnahme Risiko Titel Beschreibung Pr vention Massnahme Risiko Titel Konflikte im Team Das Projektteam kennt sich erst seit kurzem und hat davor noch nie zusammengearbeitet Somit besteht ein erh htes Risiko von Mei nungsverschiedenheiten w hrend des Projektverlaufs Fr
89. en f r Interlis Konvertierung DAT 176 Expressions in Join Conditions implementieren Probleme Im letzten Sprint wurde aufgrund der fehlenden GeoPackage Kompatibilitat auf GDAL 1 11 1 ge wechselt In diesem Sprint sahen wir uns nach Experimenten mit diversen Versionen inkl 2 0 0betal gezwungen wieder auf GDAL 1 10 1 zu wechseln 6 9 Sprint 8 Summary Sprint 7 Periode 26 06 2015 12 00 Uhr 12 06 2015 20 00 Uhr Stunden Soll 216h Stunden Plan 224h Stunden Ist 255h 116 6 9 SPRINT 8 117 279h 248h 217h 186h 155h 124h 93h 62h 31h 0 May 26 Ziele Jun 12 Burndown Chart Sprint 8 Dieser letzte ausnahmsweise dreiw chige Sprint dient der Finalisierung und Druck der Dokumentation sowie weitere mit der Bachelorarbeit zusammenh ngenden organisatorischen Aufw nde Kleinere Last Minute Bugfixes sind ebenfalls erlaubt Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 8 abgeschlossen JIRA Key Summary DAT 181 DAT 202 DAT 203 DAT 204 DAT 207 Probleme Keine Dokumentation brige Aufw nde Projektmeeting Last Minute Bugfixes Organisation Planung amp Kommunikation Sprint 8 117 118 6 SPRINTS 6 10 Total und Fazit Total Periode 16 02 2015 12 06 2015 Stunden Soll 960 h Stunden Ist 1404 3h Total pro Person Remo Liebi 491h Christoph H sler 436 5 h Fabio Scala 476 8h Wie in den Burndown Charts und Zeitauswertung der jew
90. en hatte Priorit t Wir sehen folgende Optionen e Ausbau der verwalteten Metadaten e Mutation der Dateien die zu einem Package geh ren e Diskussion von Daten Transformationen evtl Issue Tracker e Integration von CKAN Interlis 1 2 GeoPackage 85 86 7 RESULTATE UND AUSBLICK 7 2 4 Unterstiitzung von verschiedenen Encoding Optionen Sofern vom Datei Format nichts anderes vorgegeben wird lesen die implementierten Parser allen Input mit UTF 8 als Encoding Gerade bei Formaten wie CSV welche von Benutzern direkt erstellt werden k nnen z B mit Excel ist dies nicht immer optimal Wir sehen folgende Optionen e Dem Benutzer eine Angabe des verwendeten Encodings erm glichen e Eine Encoding Detection durchf hren z B mit chardet Dies funktioniert in vielen F llen einigermassen gut ist jedoch nicht zuverl ssig Am besten w re wohl eine Kombination der beiden Optionen 7 2 5 Zus tzliche ODHQL Funktionen Bisher sind zwar diverse Funktionen implementiert gerade im Geo Bereich gibt es jedoch noch einiges an Erweiterungspotential 7 2 6 Datentypen ODHQL unterst tzt bisher folgende Datentypen Integer 32 Bit Smalllnt 16 Bit Biglnt 64 Bit Float 64 Bit DateTime 64 Bit Boolean Text und Geometry Date Time Interval wird theoretisch unterst tzt es gibt jedoch aktuell keine Funktionen welche diesen Typ verwenden M gliche Erweiterungen e Wertebereiche f r bereits bestehende Datentypen z B
91. en k nnen Die Realit t scheint sich immer weiter von dieser Vision zu entfernen Die marktbeherrschenden Softwarehersteller berlassen das Problem den Nutzern Die Datenlieferanten und Systembetrei ber sind berfordert und einigen sich auf spezifische oder propriet re L sungen oder sie begn gen sich mit 1 1 Konvertern vgl OGR und geoconverter hsr ch etc oder analogen L sungen Papier Ein L sungsansatz k nnte ein zentrales Portal OpenDataHub sein ber dieses sich Daten offen teilen beziehen und konvertieren lassen wobei sich die Beteiligten nicht um die Formatkon version und Schematransformation k mmern m ssen Die Datenlieferanten liefern ihre Daten in ihrem Format und Schema und die Nutzer beziehen es ihrerseits wie sie wollen vorausgesetzt die entsprechende Formatkonversion und Schematransformation existiert Darum k mmern sich Spezialisten Typische Rollen dieser Architektur sind Datenlieferanten Nutzer Spezialisten f r Schematransformationen Typische Komponenten dieser Architektur sind Lese und Schreib Komponenten Komponenten f r typische Konversionsaufgaben Fertige Transformationen vgl Use Cases Use Cases 1 Postadressen CSV 2 Verkehrshindernisse Datenbank 3 Geb udeadressen MOPublic Deliverables berblick und Evaluation hnlicher Projekte insbesondere Project dat CKAN geopol ch Erw hnte Use Cases inkl Beschreibung Demo Daten und Schema Transfor
92. endatahub hsr dev herokuapp com api vi file 1 file_name mockaroo com csv file formats CSV file_group https opendatahub hsr dev herokuapp com api vi fileGroup 1 5 5 10 URLs URL Liste GET api vl url Liefert eine Liste der vorhandenen URLs Programmcode 5 15 Beispielantwort f r GET api v1 url Wcounit t 27 73 74 5 DESIGN UND IMPLEMENTATION next nuli previous null results ia 1 url http localhost 5000 api vi ur1 1 source_url http maps zh ch wfs HaltestellenZHWFS turi format null refresh_after 3600 type wis file_group http localhost 5000 api v1 fileGroup 1001 Dieser Endpunkt unterst tzt Paging URL Liste GET api v1 url 1 Liefert Detail Informationen zur URL Programmcode 5 16 Beispielantwort f r GET api v1 url 1 ia 1 url http localhost 5000 api vi ur1 1 source_url http maps zh ch wfs HaltestellenZHWFS turl formats nul refresh_after 3600 type wis file_group http localhost 5000 api vi fileGroup 1001 5 5 11 Hilfs Views Diese Views sind kein direkter Bestandteil des REST APIs dienen jedoch als Unterst tzung dazu ODHQL Checker POST api v1 parse Parsed eine ODHQL Abfrage und liefert die Fehlermeldungen in einem zur Fehlersuche hilfreichen Format Benutzerdokumentation GET api v1 odhql doc Erstellt die Benutzerdokumenta
93. ener Fork latest latest 0 5 4 latest 0 5 0 0 10 0 0 6 4 latest 0 7 0 8 5 0 0 4 1 Anzeige von Toasts Meldungen Integration von Bootstrap Elementen in AngularJS Diverse Common Utilities Erweitertes Selection Drop down f r AngularJS Font Awesome Icons File Upload Direktive f r AngularJS Google Material Design f r Bootstrap DOM Watching Von material design ben tigt zur Integration mit AngularJS Facebook OAuth Authentication REST Client Bibliothek Diverse Social Network Icons Buttons Token Based Authentication Utility um einzelne Elemente zu blockieren AngularJS Filter AngularJS Tabellen Erweiterung um Funktionen wie Pagination Sortierung Editor Textfeld mit Syntax Highlighting Kombination mehreren Font Awesome Icons Darstellung von relativen Zeiten Cross Browser Stacktraces Error handling Backport von String format aus ECMAScript6 Anchor Unterst tzung f r AngularJS Syntax Highlighting AngularJS Direktive f r highlightjs Tabelle 1 3 Ben tigte JavaScript Module 129 2 Benutzerhandbuch 2 1 Datensuche und Bezug 130 s OpenDataHub ch x gt beta opendatahub ch packages opendatahub Daten Teilen Neue Transformation Hilfe Abmelden amp fabioscala Suche Mitarb Nur eigene Daten anzeigen Titel Beschreibung Hinzugef gt Besitzer Mitarbeiterdaten XY AG Enth lt alle Mitarbeiterdaten der XY AG vor 3 Stunden fabioscala 10 25 50 100
94. er Hex formatierte MD5 Hash der Primary Key Spalten verwendet 154 C 4 SCHNITTSTELLEN API 155 primaryFormat Funktion welche den Key formattiert bevor er eingef gt wird Als R ckgabe wert muss ein String geliefert werden Akzeptiert val columns Liste von Spalten Bezeichnungen welche f r CSV MultiBuffer verwendet werden sollen headerRow Muss auf false gesetzt werden wenn der CSV Input keine Titel Zeile enth lt In diesem Fall sollte auch columns gesetzt separator Feld Separator f r CSV Default delimiter Record Separator f r CSV Default n var versions db createVersionStream key options Liefert alle Versionen zum angegebenen Key options Objekt mit folgenden Feldern start Start Version end End Version var blobWriter db createBlobReadStream key filename options Liefert einen lesbaren Stream mit Blob Daten options Objekt mit folgenden Feldern version Version des Datensatzes Default Aktuellste Version var blobWriter db createBlobWriteStream filename row callback Liefert einen schreibbaren Stream welcher Blob Daten annimmt filename Ein String oder ein Objekt mit einem filename Attribut filename example png row Objekt welches den Datensatz identifiziert an den dieses Blob angeh ngt werden soll Es gelten die selben Regeln wie bei put Falls nicht angegeben wird ein neuer Datensatz erstellt callback error updated Wird nach der Schreibopera
95. eren Version k nnten Dokumente und Transformationen mit Tags und Kategorien versehen werden Dies w rde die bersichtlichkeit erh hen 87 88 7 RESULTATE UND AUSBLICK 7 2 16 Benutzer Gruppen mit unterschiedlichen Rechten Zu Beginn der Arbeit wurde zusammen mit dem Betreuer entschieden dass die Benutzer Verwaltung minimal gehalten werden soll Insbesondere sollte kein Aufwand zur Administration der Benutzer anfallen In Zukunft k nnte es w nschenswert sein Benutzergruppen mit unterschiedlichen Rechten einzuf h ren z B eine Unterscheidung zwischen normalen Nutzern und Administratoren 88 Teil Ill Projektmanagement 89 1 Vorgehensmodell Als Vorgehensmodell fiir die Bachelorarbeit wurde Scrum verwendet Scrum ist ein agiles iteratives Modell welches sich aufgrund dessen Einfachheit und nicht besonders strikter Vorgaben sehr gut fiir kleinere gut berschaubare Projekte eignet Scrum basiert wie viele andere agile Projektmanagement Methoden auf den vier im Agilen Manifest agilemanifesto beschriebenen Grunds tzen e Individuals and interactions over processes and tools e Working software over comprehensive documentation e Customer collaboration over contract negotiation Responding to change over following a plan Wobei der Punkt Working software over comprehensive documentation aufgrund der Tatsache dass es sich um eine akademische Arbeit handelt vernachl ssigt wird 1 1 Rollen Rolle Beschrei
96. erschiedener L sungen wurden evaluiert Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 4 abgeschlossen JIRA Key Summary DAT 74 brige Aufw nde Sprint 4 DAT 75 Organisation Planung amp Kommunikation Sprint 4 DAT 76 Projektmeetings Sprint 4 DAT 78 Basis Transformationen Story DAT 79 Transformation erstellen Ein SQL Subset Dialekt ODHQL mit SQL Basisfunktionalit t Selektion Joins Bedingungen Funktionen und einigen String und Geometriefunktionen wurde implementiert Weitere Funktionen werden bei Bedarf hinzugef gt Das User Interface DAT 79 ist noch im Anfangsstadium und wird in den n chsten Sprints weiterentwickelt Probleme Minimale Koordinationsprobleme durch die unterrichtsfreie Zeit ber Ostern Teammitglied Remo Liebi hat viel Zeit durch Ausfall seiner Entwicklungsumgebung und dessen Neuinstallation verloren 111 112 6 SPRINTS 6 6 Sprint 5 Summary Sprint 5 Periode 13 04 2015 12 00 Uhr 27 04 2015 12 00 Uhr Stunden Soll 144h Stunden Plan 154h Stunden Ist 176 4h 176h 154h 132h 110h 88h 66h 44h 22h 0 Apr 13 Apr 27 Apr 27 Burndown Chart Sprint 5 Ziele In diesem Sprint sollte einerseits die Performance durch Implementation von Caching Mechanismen gesteigert werden Andererseits sollten Online Datenquellen automatisch in einem konfigurierbaren Intervall aktualisiert werden Abgeschlossen Folgende High level ohne Subtasks Jira Tasks
97. es BLOB zum angegebenen Datensatz hinzu Der Datensatz muss bereits existieren und die aktuelle Version des Datensatzes muss im Query String angegeben werden POST api rows foo photo jpg version 1 HTTP 1 1 GET api session Liefert Informationen zur aktuellen Session Dieser Aufruf kann auch zur Anmeldung per Basic Authentication verwendet werden GET api login Selbe Funktionalit t wie api session setzt jedoch den HTTP Header Basic realm SSecure Area so dass Browser ein Login Fenster anzeigen GET api logout Zerst rt die aktuelle Session und entfernt Client Side Cookies GET api changes Liefert eine Json formatierte Version des Change Streams siehe auch JavaScript API createChange sStream GET api csv Liefert eine CSV Datei mit der letzten Version der Daten POST api bulk Erm glicht das Einf gen von mehreren Datens tzen gleichzeitig Unterst tzt werden JSON Content Type application json und CSV Content Type text csv Falls die Daten akzeptiert werden besteht die Antwort aus einer Liste von JSON Objekten mit Key und Version f r die neu eingef gten Datens tze andernfalls aus einem HT TP Fehler 150 C 4 SCHNITTSTELLEN API 151 Programmcode C 7 GET api metadata changes 15 liveBackup false columns prename surname street nr zip city version J GET api manifest Liefert ein JSON Objekt mit Informationen zum DB Backend Dies wird f r RPC verwendet siehe
98. eschlossen oder zur ck in den Status To Do versetzt werden wobei bei letzterem der Task automatisch dem urspr nglichen Teammitglied zugewiesen wird 5 2 Programmierrichtlinien Jeder Entwickler hat seine eigenen Vorstellungen davon wie Programmcode aussehen soll bzw welche Richtlinien bei der Entwicklung einzuhalten sind Aus diesem Grund wurden fr hzeitig Programmierrichtlinien inkl Coding Style Guidelines bestimmt und mittels Entwicklungsumgebung sowie Build Server forciert 5 2 1 Python F r den Python Quellcode wurden die in der Python Community verbreiteten Python Enhancement Proposal 8 PEP 8 Richtlinien angewendet Die einzige Ausnahme stellt hierbei eine Zeilenl nge von 120 statt den nur 80 Zeichen dar Die PEP 8 Regeln werden teilweise durch die verwendete Entwicklungsumgebung sowie Flake8 und PyLint auf dem Continuous Integration CI Server streng erzwungen Bei Verstoss versagt der Build und der Entwickler wird benachrichtigt Ein Beispiel Output auf dem Build Server sieht folgendermassen aus INFO Executing flake8 on project sources WARN flake8 src main python authentication tests py 5 9 W292 no newline at end of es hale WARN flake8 src main python authentication tests py 1 1 F401 TestCase imported but unused WARN flake8 src main python authentication admin py 1 1 F401 admin imported but unused WARN flake8 src main python opendatahub urls py 8 1 F401 IndexView imported b
99. eter will ich mich mittels SuisselD registrieren anmelden k nnen sodass ich als Beh rde einen Zugriff erlange ohne einen Social Account zu ben tigen User Story 1 2 GitHub Als Datenanbieter oder Drittentwickler will ich mich mittels GitHub Konto registrieren anmel den k nnen sodass ich Daten publizieren kann ohne ein separates Konto zu ben tigen User Story 1 3 Facebook Als Datenanbieter oder Drittentwickler will ich mich mittels Facebook Konto registrieren an melden k nnen sodass ich Daten publizieren kann ohne ein separates Konto zu ben tigen 2 1 USER STORIES 19 2 1 4 Daten publizieren Epic 2 Daten publizieren Als Datenanbieter will ich die Daten in diversen strukturierten Formaten anbieten k nnen sodass ich diese der ffentlichkeit ohne zus tzlichen Aufwand bereitstellen kann Akzeptanzkriterien Gegeben Eine oder mehrere Dateien in einem von der Applikation unterst tzten Format wenn der Datenanbieter die Datei via Webapplikation publiziert dann soll diese in OpenDataHub abgespeichert werden und in einer Liste von verf gbaren Daten ersichtlich sein User Story 2 1 Datei hochladen Als Datenanbieter will ich eine oder mehrere Dateien in einem strukturierten Format via Browser hochladen k nnen sodass ich diese auf der Plattform weiterverwenden kann User Story 2 2 Online Quellen Als Datenanbieter will ich Daten in einem strukturierten Format mit Angabe einer Online Quelle HTTP WFS publi
100. gende Datenquellen verwendet werden e Daten von www truckinfo ch in einem nicht weiter spezifizierten XML Format siehe e WFS des Kantons Z rich Tiefbaustellen Baustellen e Excel Datei des Kantons Appenzell Ausserrhoden e F r Google Earth erstelltes KML des Kantons Z rich Programmcode 2 1 XML von truckinfo ch lt evts gt lt evt df 1430449200 dd 1430157600 r A1 p Switzerland t 2 c 517 lar 3 7 gt cat 1_38 s 1 x 539007 y 5257837 i mapserver2 symbols icone35 png gt Switzerland contraflow Zurich St Margrethen between junction St Gallen Kreuzbleiche and junction St Gallen Neudorf in both directions contraflow temporary width limit 3 7 metres set of roadworks during the night length of the amp route affected 3 7 km speed limit 80 km h duration April 27 2015 08 00 pm until May 01 2015 05 00 am lt evt gt lt evt df 1430794800 dd 1430762400 r A1 p Switzerland t 2 c 503 lar 6 o gt cat 1_38 s 1 x 533526 y 5257414 i mapserver2 symbols icone35 png gt Switzerland left lane s closed St Gallen St Margrethen between junction St Gallen St Fiden and junction St Gallen Neudorf in both directions left lane closed temporary width limit 6 0 metres set of roadworks during the night length of the route affected 1 3 km speed limit 80 km h duration May 04 2015 lt 08 00 pm until May 05 2015 05 00 am lt evt gt Sue nog Se lt
101. ging sehr viel Zeit durch mangelnde inkonsistente Formatunterst tzung dieser Bibliothek verloren 97 4 Entwicklungsumgebung und Infrastruktur In diesem Kapitel wird die Entwicklungsumgebung inkl der verwendeten Tools beschrieben zeigt eine Ubersicht der Entwicklungsumgebung und den groben Prozess Ubuntu 14 04 LTS 64 Vagrant ae Notify Kommunik ations GitHub ravis c hsr ba fs15 dat opendatahub Entwicklung WE a mit PyCharm Notify Link ji WIRA heroku dev opendatahub ch jira opendatahub ch Abbildung 4 1 Entwicklungsumgebung 4 1 IDE Entscheid 4 1 IDE Als IDE wurde JetBrains PyCharm verwendet S mtliche Mitglieder waren bereits mit dieser IDE vertraut und die neuen Lizenzbestimmungen von JetBrains liessen eine kostenlose Nutzung der professionellen Version zu Student License 98 4 2 SCM 99 4 2 SCM Entscheid 4 2 SCM Als Source Control Management SCM wurden GitHub Repositories innerhalb einer eigenen GitHub Organisation hsr ba fs15 dat verwendet 4 3 Projektmanagement Zur Planung der Ressourcen und Zeit sowie Zustandigkeiten der Tasks wurde das kommerzielle Tool Atlassian Jira verwendet Jira ist kompatibel mit agilen Vorgehensweisen insbesondere Scrum und erlaubt mit einem intuitivem User Interface die Planung von Sprints sowie eine Fortschritts berwa chung mittels Burndown Charts zeigt das sogenannte Agile Board im Work Modus w hrend eines Sprints Di
102. gs ist optional Ansonsten gelten die Rahmenbedingungen Vorgaben und Termine des Studiengangs In formatik bzw der HSR Inhalt der Dokumentation Die Projektdokumentation Prosa und die Benutzerschnittstelle sind in Deutsch Der Code die Kommentare und die Versionsverwaltung sind in Englisch Die fertige Arbeit muss folgende Inhalte haben 1 Abstract Management Summary Aufgabenstellung 2 Technischer Bericht 3 Projektdokumentation 4 Anh nge Literaturverzeichnis Glossar CD Inhalt Die Abgabe ist so zu gliedern dass die obigen Inhalte klar erkenntlich und auffindbar sind Zitate sind zu kennzeichnen die Quelle ist anzugeben Verwendete Dokumente und Literatur sind in einem Literaturverzeichnis aufzuf hren Dokumentation des Projektverlaufes Planung etc Weitere Dokumente z B Kurzbeschreibung Poster gem ss www hsr ch und Absprache mit dem Betreuer Form der Dokumentation Bericht Struktur gem ss Beschreibung gebunden 2 Exemplare und in Ordner 1 Exemplar kopierf hig in losen gelochten Bl ttern Alle Dokumente und Quellen der erstellten Software auf sauber angeschriebenen CD 3 Ex Bewertungsschema Es gelten die blichen Regelungen zum Ablauf und zur Bewertung der Arbeit 6 Aspekte des Stu diengangs Informatik der HSR jedoch mit besonderem Gewicht auf moderne Softwareentwicklung Tests Continuous Integration einfach installierbar funktionsf hig BA_FS2015_OpenDataHub_HSR_Scala_
103. hen So konnte wie bei Scrum blich zum Ende jedes Sprints ein Deliverable sei es eine lauff hige Applikation oder ein anderes Resultat zur Verf gung gestellt werden PRODUCT INCREMENT PRODUCT BACKLOG CoPyYRIGHT 2005 MOUNTAIN GOAT SOFTWARE Abbildung 1 1 Scrum Sprint scrum 91 2 Rollen und Verantwortlichkeiten 2 1 Prof Stefan Keller Prof S Keller Mitarbeiter des Institut f r Software IFS und Dozent an der HSR bernimmt im Projekt eine Doppelrolle e Als Experte bzw Betreuer bernimmt er die Aufsicht und Bewertung der Bachelorarbeit e und als fiktiver Kunde die Kontaktperson zur Aufnahme der Anforde rungen Product Owner 2 2 Remo Liebi Remo Liebi Teilzeitstudent an der HSR Inhaber der IT Firma liebi net ist Teil des Entwicklungsteams 92 2 3 CHRISTOPH HUSLER 93 2 3 Christoph H sler Christoph H sler Vollzeitstudent an der HSR JavaEE Entwickler und Datenbank Experte bei Xinventa GmbH ist Teil des Entwicklungsteams 2 4 Fabio Scala Fabio Scala Teilzeitstudent an der HSR und Banking Software Engineer bei Swisscom Schweiz AG ist Teil des Entwicklungsteams und bernimmt zus tzlich die Rolle des Scrum Masters 93 3 Risiken Fur die Abschatzung der Projektrisiken wurde auf existierende risk Risikochecklisten gesetzt um m glichst keine potenziellen Risiken bei der Analyse auszulassen Die sehr umfangreiche Risikoliste von Wallace 2004 SPR 975
104. ht f r Interlis welches praktisch ausschliesslich in der Schweiz verwendet wird Als Folge davon muss die Konver tierung von und zu Interlis von den jeweils beteiligten Stellen vorgenommen werden Besonders gravierend wird die Situation weil es eine Vielzahl von Systembetreibern und eine stets wachsende Zahl von Anwendungsbereichen gibt All diese Systembetreiber z B Amtsstellen von Bund Kantone und Gemeinden Netzbetreiber SBB private Firmen sind auf den korrekten Austausch von Daten angewiesen Es macht aber wenig Sinn wenn sie sich alle mit all den verschiedenen technischen Fragen befassen m ssen Der Aufwand ist erheblich Zudem darf das Fehlerrisiko nicht untersch tzt werden weiter aus rahmenvorst interlisopen Da f r verschiedene Anwendungsbereiche unterschiedliche Modelle notwendig sind entsteht ein be tr chtlicher Aufwand Erschwerend kommen Probleme bei Beschaffung und Betrieb von Konversions Systemen oder die Unterst tzung von Partnern welche nicht mit Interlis umgehen k nnen hinzu Vision Langfristig sollen sich die beteiligten Fachstellen um ihr Fachgebiet k mmern k nnen anstatt viel Energie f r die technischen Details aufwenden zu m ssen 1 2 Ziele Ein Grossteil der Diskussionen in der Schweizer Geo Szene dreht sich um Format und Implementations Details statt sich mit Modell oder Fach Fragen zu besch ftigen sfkeller Um Bewegung in diese Situation zu bringen soll ein Prototyp einer Konvertierungs
105. ht funktionalen Anforderungen der einzelnen User Stories sind grunds tzlich in deren Akzep tanzkriterien enthalten In diesem Abschnitt werden zus tzliche aus der Aufgabenstellung entnomme ne sowie bei dem Betreuer aufgenommene nicht funktionale Anforderungen erg nzt durch sinnvolle Anforderungen moderner Software Entwicklung beschrieben 2 2 1 Technologien Die Anforderungen an die eingesetzten Technologien sind teilweise durch die Aufgabenstellung sowie durch die bereits existierende Infrastruktur am Geometa Lab der Hochschule f r Technik Rapperswil HSR wie folgt eingeschr nkt e Python als Programmiersprache e Deployment der Applikation muss via WSGI m glich sein e PostgreSQL als Datenbank oder SQLite bei kleineren Aufgaben Die Wahl der Frameworks und Libraries sowohl Server wie auch Client seitig ist dem Entwicklerteam berlassen 2 2 2 Qualit t Zur Sicherung der Softwarequalit t wurden folgende drei Anforderungen durch den Betreuer bestimmt e Einsatz von automatisierten Unit Tests e Kommentieren des Codes in einem Sphinx kompatiblen Format e PEP 8 als Codierrichtlinie besonders die Verwendung von Leerzeichen zur Einr ckung 2 Programmiersprachen Frameworks Libraries Services 3 Siehe auch http sphinx doc org 21 22 2 ANFORDERUNGEN 2 2 3 Effizienz Bei der Applikation handelt es sich einerseits um einen Prototypen andererseits nicht um eine Echtzeit Applikation Dennoch sollte die Appli
106. ich das grosse Problem der Cache Invalidierung Wann m ssen welche Cache Eintr ge invalidiert oder gel scht werden um falsche oder veraltete Resultate zu verhindern Da bei ODH jeweils die DataFrame Objekte von Dateien und Transformationen gespeichert werden muss wie folgt invalidiert werden e sobald die Daten einer Online Quelle sich ndern bzw neu Angefordert wurden g e wenn eine Transformation modifiziert wird welche von anderen Transformationen verwendet wird rekursiv e oder sobald Daten gel scht werden Hierf r wird eine Zwischentabelle in der Datenbank ben tigt um festzuhalten welche Transforma tion Daten von welchen Transformationen referenziert werden Diese Information wird dann zugleich f r die Navigation zwischen Daten und Transformationen im Frontend wiederverwendet Um jeweils alle zu einem Cache Key geh renden Eintr ge zu l schen wurden die eingebauten Django Caches so erweitert dass f r alle verwendeten Caching Provider ein kaskadierendes L schen m glich ist So lassen sich beispielsweise durch das L schen von TRF 12 alle gespeicherten und konvertierten Daten die zu der Transformation mit der ID 12 geh ren kaskadierend l schen 4 Beispielsweise ein WFS Webservice gt Welche Daten Transformationen haben assoziierte Transformationen 6 Urspr nglich ein Tupel z B TRF 10 CSV T In Memory und Datenbank 8 Also auch TRF 12 KML etc 58
107. iebenen Prozess 1 beta opendatahub ch Teilen aufrufen 2 Kurzen Namen Bezeichnung f r die Daten angeben 3 Beschreibungstext erfassen der die Daten und deren Inhalt n her beschreibt 4 Die Checkbox Privat gibt an ob die Daten nur vom angemeldeten Benutzter gesehen werden sollen e Dies ist dann n tzlich wenn der Benutzer OpenDataHub nur als Transformationsplattform nutzen will ohne die Daten freizugeben e Ein zweiter Anwendungsfall w re ein Shared Account f r eine Organisation um die Daten nur innerhalb dieser Organisation freizugeben 5 Dateien hochladen selektieren 6 Falls man nur Daten mit dem gleichen Format hochl dt und diese nicht durch deren Dateiendung oder Inhalt erkannt werden kann Optional das Format der Daten explizit selektiert werden Es empfiehlt sich dieses jedoch standardm ssig auf Automatisch zu belassen 134 2 4 DATEN TRANSFORMIEREN 135 7 Dateien entweder via Drag amp Drop direkt ins rechteckige Feld mit der Bezeichnung Wahlen oder ziehen Sie Ihre Dateien ziehen oder nach Klick auf das Feld ber den Datei Explorer ausw hlen e Es ist erlaubt mehrere Dateien beispielsweise eine CSV Datei und eine XML Datei hochzuladen e Einige Formate wie beispielsweise das ESRI Shapefile erfordern sogar zwingend mehrere Dateien Diese m ssen vor der Endung denselben Namen besitzen e Allgemein werden alle Dateien mit gleichem Namen und lediglich anderer Endung zu e
108. ierten Token im Header jedes Requests der zum Server gesendet wird anzuh ngen Diese Methode bietet folgende Vorteile Cross Domain CORS Cross Domain Cookies und Cross Domain Requests funktionieren auf grund von Sicherheitsrichtlinien der Browser nicht Ein Token basierter Ansatz erlaubt es XHR Aufrufe an jeden Server mit jeder Domain zu veranlassen weil die Informationen im HTTP Header enthalten sind Stateless Server Side Scalability Es wird kein Session Store ben tigt Der Token enth lt alle Benutzerinformationen der Rest des States liegt im Local Storage auf der Client Seite Decoupling Man ist nicht an ein Authentifizierungs Schema gebunden Der Token kann berall generiert werden sprich die API kann von berall her aufgerufen werden Mobile Ready Cookies sind in nativen mobilen Apps APls meist schlecht unterst tzt CSRF Cross Site Requests stellen kein Problem dar Es gibt kein Authentifizierungs Cookie das wiederverwendet werden k nnte Standard Es gibt bereits einen Standard JSON Web Token JWT Die beiden Methoden werden in grafisch dargestellt 46 4 7 SESSION AUTHENTIFIZIERUNG 47 Traditional Cookie Based Auth Modern Token Based Auth https app yourapp com https app yourapp com https app yourapp com https pLyourapp com POST authenticate username amp password HTTP 200 OK Set Cookie session GET api user Cookie session find and deserialize
109. ies ist ein Beispiel f r die Dokumentation transformation SELECT ti children nti city nti country nti email nFROM gt ODH2_mockaroo com as t1 n private true Transformations Update PATCH api vl transformation lt id gt Aktualisiert eine Transformation Es k nnen alle in erw hnten Felder aktualisiert werden Preview f r AdHoc Transformationen POST api vl transformation adhoc Erstellt eine Preview f r ein ODHQL Statement ohne die Transformation in der Datenbank zu persistieren Dies ist n tzlich um eine Vorschau realisieren zu k nnen w hrend der Benutzer noch am Bearbeiten seines Statements ist 5 5 8 File Groups Von Benutzern bereitgestellte Daten werden in sog File Groups organisiert Dies sind zusammenge h rende Dateien z B die shx shp und dbf Datei bei einem ESRI Shapefile File Group Liste GET api v1 fileGroups Liefert eine Liste aller vorhandene File Groups Programmcode 5 11 Beispielantwort f r GET api v1 fileGroups trdu E127 70 5 5 API 71 url http localhost 5000 api v1 fileGroup 12 document Wise url http localhost 5000 api v1 document 12 name Test Baustellen kml description Testdaten Originalformat KML file_groups http localhost 5000 api v1 document 12 filegroup private false owner ia 1 username testuser first_name Jast_name Jis created att 2015 05 29T14 21
110. ify 0 2 0 SSL Unterst tzung f r Django enum34 1 0 4 Python 3 Enum Backport defusedxml 0 4 1 Security Wrapper fiir diverse XML Bibliotheken Pygments 2 0 2 Syntax Highlighting docutils 0 12 Dokumentations Bibliothek Wird f r die ODHQL API verwendet Indirekte Dependencies html5lib 0 999 click 3 3 u cligj 0 1 0 descartes 1 0 1 matplotlib 1 4 3 mock 1 0 1 python dateutil 2 4 1 pytz 20152 pillow 2 8 1 z pyjwt 1 0 0 Tabelle 1 1 Zur Laufzeit ben tigte Python Module Name Version Beschreibung sphinx nose pybuilder sphinxcontrib httpdomain django extensions 1 2 3 1 3 4 0 10 51 1 3 0 1 5 0 Generierung der API Dokumentation aus Inline Kom mentaren Test Runner Build tool Task runner f r Python HTTP Erweiterung f r Sphinx zur Dokumentation von APIs Django Erweiterungen Befehle zur Entwicklung 127 128 1 ENTWICKLUNG Name Version Beschreibung werkzeug pyinotify watchdog pylint django ipython 0 10 1 0 9 5 0 8 3 0 6 latest Django Middlerware zur Entwicklung Auto reload Unterst tzung f r Django Debug Server via inotify Auto reload Unterst tzung f r Django Debug Server PyLint Unterst tzung f r Django spezifische Module Bessere Debugging Konsole Tabelle 1 2 Zur Entwicklung ben tigte Python Module 1 4 2 JavaScript Im Frontend werden die in gelisteten JavaScript Module eingesetzt Diese sind zudem in src main webapp
111. iner Gruppe zusammengefasst Es ist somit nicht m glich ein Mitarbeiter xlsx und Mitarbeiter csv hochzuladen und dann als separate Tabellen zu behandeln 8 Durch Klick auf Teilen werden die Dateien hochgeladen und auf OpenDataHub zur Weiter verarbeitung abgelegt 9 Wenn OpenDataHub die Daten interpretieren konnte wird zur Detailansicht weitergeleitet Ansonsten wird eine Fehlermeldung eingeblendet In diesem Fall wird der Fehler direkt den Entwicklern weitergeleitet Wenn es sich um ein nicht unterst tztes Format handelt oder man der Meinung ist dass es h tte funktionieren sollen kann man die Datei dem Entwicklungsteam an mailto devs opendatahub ch weiterleiten 2 3 2 Online Daten hinzuf gen Die zweite M glichkeit welche sich vor allem f r h ufig ndernde oder gar Echtzeit Daten eignet ist das Hinzuf gen mittels einer Webadresse OpenDataHub kann die Daten dann selbst in einem gew nschten Zeitintervall aktualisieren Dies l uft weitestgehend gleich ab wie in ab Der einzige Unterschied besteht darin dass Online Daten selektiert und dann eine Webadresse hinterlegt wird Es werden folgende Arten von Online Daten unterst tzt e Alle herk mmlichen Adressen die auf Dateien verweisen wie beispielsweise http www hsr ch meine test datei xml dasselbe gilt f r https e WFS Webservice Adressen wie beispielsweise http maps zh ch wfs TbaBaustellenZHWFS Die Angabe des Abfrage Intervalls gibt an nach we
112. ion au tomatisch registriert und ist sofort mit dem Klassennamen verf gbar Der Name kann durch das statische Attribut name auch explizit gesetzt werden Die Anzahl der Funktionsparameter werden vom Interpreter bzw von der Execution Engine der Funktionen via Reflection sichergestellt F r die berpr fung der Argumente ist jede Funktion selbst zust ndig Die Parent Klasse bietet jedoch bereits einige Assertion Methoden z B f r Datentypen Listen und Geometrien Ein Beispiel einer solchen Funktion ist in ersichtlich Hierbei wird nach der berpr fung der Argumente direkt an die Pandas Methode str pad weiterdelegiert 56 5 3 CACHING 57 Programmcode 5 1 Beispiel Implementation der ODHQL Funktion PAD from hub odhql functions core import VectorizedFunction class Pad VectorizedFunction name PAD def apply self strings width side self assert_str string strings self assert_in side side left right both self assert_int width width return strings str pad width side 5 3 Caching Aufgrund der Entscheidung alle Daten verlustfrei im Originalformat zu speichern sowie der Verwendung von In Memory Tabellen artigen Datenstrukturen muss sichergestellt werden dass nicht bei jeder Operation die Originaldaten von Format Parser neu eingelesen werden m ssen Aus diesem Grund wurde ein dreistufiges Caching Konzept f r die gesamte Applikation implemen tiert E
113. ird das grobe Umsetzungskonzept von OpenDataHub ODH in ersichtlich erl utert gt Parses file formats Stores uploaded data unchanged Metadata Share Data Create REST API Formats data into Transforms data into User Browser api v1 package Formatters Parsers document Get data in the format transformation CSV JSON Geo CSV JSON Geo Abbildung 2 5 Grobe Architektur Ubersicht 2 2 1 Internes Format Es wurden diverse Optionen sowohl zur Speicherung wie auch zur Transformation der Daten in Betracht gezogen und im Hinblick auf deren Vor und Nachteile bez glich Machbarkeit Komplexit t und Performance evaluiert Die Daten werden von Parser Modulen in sogenannte DataFrame Objekte 8 2 UMSETZUNG geladen Ein DataFrame ist ein Tabellen artiges Objekt der Pandas Python Bibliothek Pandas ist eine m chtige Data Analysis Bibliothek welche aufgrund der zugrunde liegenden NumPy Bibliothek sehr effizient ist Zu jedem Format kann auch ein Formatter Modul implementiert werden welches ein DataFrame entgegennimmt und einen Output des gew nschten Formates zur ckgibt 2 2 2 Schema Transformation Auch bei der Homogenisierung der Schemata wurden diverse M glichkeiten welche teilweise eng mit dem Format gekoppelt sind analysiert Schlussendlich wurde eine eigene Domain Specific Language DSL implementiert die OpenDataHub Query Language ODHQL ODHQL ist ein Subset v
114. it PyParsing ich kann dieses Modul nur empfehlen Auch die Zusammenarbeit im Team empfand ich als sehr positiv Trotz einiger kleiner Differenzen konnten wir immer miteinander diskutieren und eine L sung finden 3 3 2 Remo Liebi Im Rahmen dieses Projektes habe ich mich vor allem um das Front End gek mmert Ich war vorher mit Web Diensten vertraut habe allerdings noch nie mit AngularJS gearbeitet Es gelang mir dank der Hilfe von Fabio Scala und Christoph H sler schnell mich in diesem JavaScript Framework einzuarbeiten und zurechtzufinden Meine Studienarbeit habe ich gr sstenteils in Python geschrieben Dadurch kenne ich mich in dieser Sprache gut aus und konnte mich auch schnell in das Django Framework einarbeiten Highlight dieser Arbeit war f r mich die Implementation des Assistenten mit Hilfe von AngularJS Ich konnte meine Ideen direkt umsetzen und habe viel ber AngularJS gelernt Die Zusammenarbeit im Team empfand ich als angenehm und konstruktiv Wir konnten uns immer gut austauschen unsere Differenzen beseitigen und vom Know how der anderen profitieren 3 3 3 Fabio Scala Trotz Hindernisse und Startschwierigkeiten zu Beginn der Arbeit insbesondere durch das unreife Projekt dat sowie den nat rlichen Differenzen im Team ist es uns gelungen diese zu berwinden und eine vern nftige und moderne Webapplikation zu implementieren Aus diesem Grund kann ich die Bachelorarbeit als positive und lehrreiche Erfahrung einstufen
115. kation mit Datenmengen von maximal 500000 Datens tzen umgehen k nnen sofern gen gend Arbeitsspeicher vorhanden ist 22 3 Project dat 3 1 Einf hrung In der heutigen Gesellschaft wird der Austausch von Daten immer wichtiger Vermehrt werden grosse Datenmengen unterschiedlichster Art aus Forschung Regierung oder zivilen Kreisen zur allgemeinen Verwendung angeboten Nicht nur die Art der Daten ist jedoch vielfaltig sondern auch Datenformat oder Zugriffsart unterscheiden sich Das dat Projekt hat das Ziel die Integration sowie einen einheitlichen Zugriff solcher Datenquellen zu vereinfachen Als erstes Ziel dieser Arbeit sollte das noch junge Projekt dat anlysiert und dessen genaue Funktio nalitat und Funktionsweise dokumentiert werden Aufgrund der Tatsache dass dat noch relativ neu ist und sich in der Alphaphase befindet ist das Projekt nur wenig und sehr verstreut dokumentiert Dat hat im Jahr 2014 einen Gesamtbetrag von 310 000 von der Knight Foundation sowie der Sloan Foundation zur Weiterentwicklung des Projekts erhalten was als Indiz fiir ein vielversprechendes Projekt gilt 3 2 Was ist dat Das dat Projekt hat folgende Ziele what is dat e Daten sollen automatisch zwischen unterschiedlichen dat Instanzen synchronisiert werden k n nen e Unterst tzung grosser Datenmengen evtl mit h ufigen Aktualisierungen e Unterst tzung von tabellarischen oder unstrukturierten Daten e Plugin basierte Schnittstelle zu be
116. klich authentifiziert ist Nachteilig ist dass der Benutzer nicht verifiziert ist Benutzer m ssen ein Passwort speziell f r diesen Service erstellen um den pers nlichen Sicherheitsanspr chen zu gen gen 4 6 2 OAuth2 OAuth2 hat einen anderen Ansatz Soziale Netzwerke bieten sich an um mit den Login Daten des bereits bestehenden Accounts in einem solchen ein Account bei OpenDataHub zu erstellen So ist der Benutzer der sich registriert bereits authentifiziert und es kann davon ausgegangen werden dass es sich wirklich um diesen handelt Die H ufigkeit von Fake Profilen wird dadurch reduziert Auch muss sich der Benutzer kein weiteres Passwort merken 45 46 4 ANALYSE 4 6 3 Fazit Obwohl sich diese Methoden verbinden liessen setzen wir einzig und alleine auf die OAuth Methode Entscheid 4 6 Benutzer Authentifizierung Aufgrund der Entscheidung das Benutzer Handling einfach zu halten haben wir uns dazu entschieden nur auf die Methoden zur Authentifizierung per GitHub und Facebook zu basieren 4 7 Session Authentifizierung 4 7 1 Cookie Based Authentication Bei der Cookie Based Authentifizierung wird eine Session ID auf der Seite des Clients in einem Server Side Cookie gespeichert Dieses wird mit jedem Request an den Server bermittelt So kann der Server davon ausgehen dass es sich beim Client um den Inhaber der Session ID handelt 4 7 2 Token Based Authentication Ein aktuellerer Ansatz ist es einen sign
117. lcher Zeit die Daten als veraltet eingestuft werden und neu von der Online Quelle angefordert werden Wichtig dabei ist dass OpenDataHub die Daten nicht aktiv in diesem Intervall abfragt sondern erst dann wenn diese in OpenDataHub auch wirklich ben tigt werden 2 4 Daten transformieren Wichtig Zur Erstellung von Transformationen ist eine Anmeldung erforderlich Diese ist in beschrieben 135 136 2 BENUTZERHANDBUCH OpenDataHub ch ey D beta opendatahub ch transformation create Q Sn opendatahub Daten Teilen Neue Transformation Hilfe Abmelden amp fabioscala Start 7 Assistent Manuelles Bearbeiten Transformation Vorbereiten ASSISTENT STARTEN Gehen Sie in folgenden Schritten vor um eine Transformation mit dem Assistenten zu erstellen Starten Sie den Assistenten W hlen Sie die Tabellen aus die Sie verwenden m chten W hlen Sie die Felder in den Tabellen aus die Sie anzeigen m chten Verbinden Sie die Tabellen mittels JOIN oder UNION Sie k nnen nun zum manuellen Modus weiterfahren 2015 Geometa Lab HSR GitHub Abbildung 2 6 Startseite f r neue Transformation 1 beta opendatahub ch Neue Transformation aufrufen 2 Auf der Seite wie in abgebildet die Instruktionen lesen beachten 3 Man hat nun folgende zwei M glichkeiten e Der Assistent erlaubt mittels einigen Klicks eine simple Transformation bzw ODHQL e Im Manuelles Bearbeite
118. m stdout Cancel 6 T0DO M 9 Changes Abbildung 1 3 Ubersicht Einstellungen FileWatcher TypeScript F r die Verwendung von TypeScript muss das Paket tsc auf der lokalen Maschine installiert sein 1 2 5 Build Das ganze Projekt muss in der virtuellen Maschine VM gebuildet werden cd lt PROJECT SOURCE gt vm vagrant ssh verbindet direkt in die um pyb v startet den Build Prozess 1 2 6 grunt F r die Entwicklung im FrontEnd kann ein k rzerer Weg gew hlt werden Grunt Grunt wird wie folgt aufgef hrt vagrant ssh verbindet direkt in die um cd src main webapp in den FrontEnd Ordner wechseln grunt FrontEnd Build startet Dabei werden samtliche Less und TS Files kompiliert und geprift 123 124 1 ENTWICKLUNG 1 2 7 Deployment Seit der Vagrant Version 1 7 vom Dezember 2014 ist Deployment mittels Vagrant m glich Durch den Befehl vagrant push kann je nach Konfiguration auf Heroku SFTP und FTP sowie durch selbstgeschriebene Kommandozeilenskripte oder Atlas deployed werden Syntaxbeispiel f r einen FTP push vagrant deployment config push define ftp do push push host ftp test com push username benutzeri push password Passworti push secure false push destination push dir end Diese Konfiguration ist in unserem Vagrant File nicht enthalten und muss je nach FTP Server oder Heroku Instanz konfiguriert werden 1 2 8 Tests Beim Build Prozess werden Tests
119. mationen etc berlegungen und Evaluation zum Schema Mapping Sprache und Tools Pentaho Kettle ogrtools FME SQL Eigene Die Implementation die u a umfasst o Listen Anzeige bzw einfaches Suchen Filter von Daten o Publizieren von Daten o Storage File oder Database relational NoSQL o Beziehen von Daten BA_FS2015_OpenDataHub_HSR_Scala_Liebi_Huesler_v0 docx 28 03 2015 vii viii Hs Beam rn ame Bachelorarbeit FS 2015 COMPUTER SCIENCE 2 o Lesen Schreiben ausgew hlter Formate insbesondere CSV Shapefile GeoPacka ge GML Interlis etc z B mittels OGR bzw ogrtools o Schema Mapping Software Webseite mit Cloud Web Services mit Demonstration mind enthaltend die erw hnten Use Cases Angebot von vordefinierten parametrisierbaren Schema Transformationen Vorgaben Rahmenbedingungen Die Software soll Open Source und auf g ngigen Browsern und Linux Servern lauff hig sein Die SW Engineering Methode und Meilensteine werden mit dem Betreuer vereinbart Sourcecode und Software Dokumentation sind Englisch inkl Installation keine Benutzer dokumentation h chstens eine Online Kurzhilfe Das Software Frontend ist Deutsch optional auch Englisch Die Projekt Dokumentation und Pr sentation sind auf Deutsch Die Nutzungsrechte an der Arbeit bleiben bei den Autoren und gehen auch an die HSR Betreuer ber Die Softwarelizenz ist MIT Ein Video gem ss den Vorgaben des Studiengan
120. n Modus kann direkt mittels ODHQL eine Transformation ge schrieben werden In der Praxis empfiehlt sich eine Kombination dieser beiden Varianten Erst den Assistenten zu verwenden und die entstehende Abfrage dann manuell zu bearbeiten 2 4 1 Verwendung des Assistenten Mit dem Assistenten k nnen weniger versierte Benutzer schnell eine Transformation zur Selektion oder Zusammenf hrung von Daten erstellen 136 2 4 DATEN TRANSFORMIEREN 137 Datenselektion OpenDataHub ch x C B beta opendatahub ch transformation create Sn opendatahub Daten Teilen Neue Transformation Hilfe Abmelden amp fabioscala Start Assistent Manuelles Bearbeiten W hlen Sie die zu verwendenden Tabellen Suche Mitarb o Nur eigene Daten anzeigen Name Beschreibung EBly Mitarbeiterdaten XY AG fabioscala Enth lt alle Mitarbeiterdaten der XY AG employees csv 1 Tabelle ODH4001_employees 4 Spalten 1000000 Zeilen 10 25 50 100 2015 Geometa Lab HSR GitHub Abbildung 2 7 Daten zur Transformation selektieren 1 beta opendatahub ch Neue Transformation Assistent aufrufen 2 Mittels Suche die zu Transformierenden Daten in der Liste vorhandener Daten suchen 3 Die Daten mittels Klick aufklappen und die gew nschte Tabelle wiederum durch Klick zur Transformation hinzuf gen 137 138 2 BENUTZERHANDBUCH Feldselektion OpenDataHub ch x e gt C D beta
121. n Dazu auf PRODUCTION setzen DATABASE_URL definiert die Datenbank URL Format postgres benutzer password localhost 5432 datenbank GITHUB_SECRET Definiert den GitHub Secret Key f r OAuth2 GITHUB_PUBLIC Definiert den GitHub Public Key f r OAuth2 FACEBOOK_SECRET Definiert den Facebook Secret Key f r OAuth2 FACEBOOK_PUBLIC Definiert den Facebook Public Key f r OAuth2 DJANGO_SETTINGS_MODULE opendatahub settings es kann eine alternative Einstellungs Datei geladen werden PATH vagrant opendatahub interlis Pfad zum Interlis Compiler Cl False Reduziert die Tests f r Continuous Integration Plattformen Nicht lokal einsetzen 1 4 Verwendete Software In diesem Abschnitt wird die in OpenDataHub verwendete Software aufgelistet 1 4 1 Python Es wird Python 2 7 mit den in gelisteten Modulen ben tigt um OpenDataHub zu verwenden Diese sind auch in der Datei requirements txt im Quellcode Verzeichnis gelistet Zus tzliche nur zur Entwicklung ben tigte Module sind in sowie in requirements_dev txt gelistet 125 126 1 ENTWICKLUNG Name Version Beschreibung Django django toolbelt 0 0 1 Installiert einige der untenstehenden Packages gunicorn dj static automatisch dj database url 0 3 0 Helper um Datenbank URL aus der Umgebungsvariable zu lesen Django 1 7 5 Django Framework dj static 0 0 6 Static Asset Server f r Gunicorn gunicorn 19 2 1 WSGI Server psycopg2 2 6 PostgreS
122. n wie zum Beispiel XML erweitert werden 7 2 11 Unterst tzung f r weitere Transformationsarten Ogr2ogr erm glicht es Transformationen per SQL in einer Datenbank auszuf hren Dies k nnte auch in ODH implementiert werden w rde jedoch zu Performance Einbussen f hren 7 2 12 Bereinigung des REST API Das REST API funktioniert beinhaltet jedoch einige Inkonsistenzen bzw Unsch nheiten Ein Beispiel Bei Anfragen auf api v1 fileGroup wird das zur File Group geh rende Dokument zur ckgeliefert api v1 document lt id gt filegroup liefert alle zu einem Dokument geh renden File Groups Auch hier enth lt die Antwort das Dokument da derselbe Serializer verwendet wird Dies f hrt jedoch dazu dass bei Dokumenten mit mehr als einer File Group die Dokument Informationen mehrfach in der Antwort enthalten sind Stattdessen sollte in dieser Situation nur die Dokument URL geliefert werden 7 2 13 Templates in neuen Transformationen verwenden k nnen Anstatt ein Template zuerst als Transformation abzuspeichern k nnte es sinnvoll sein ein Template direkt in einer neuen Transformation verwenden zu k nnen 7 2 14 In Templates Spaltennamen berschreiben Im Moment k nnen im OpenDataHub die Tabellennamen generalisiert werden Wenn ein Template andere Spaltennamen als das referenzierte Dokument verwendet k nnen diese nicht automatisch ausgetauscht werden 7 2 15 Kategorien und Tags f r Dokumente und Transformationen In einer weit
123. n Funktionsaufruf besteht aus einem Namen sowie einer Liste von Argumenten in runden Klammern Funktionsaufrufe k nnen verschachtelt werden cast a pi float as pi concat POINT cast vO x string cast vO y string as geometry Datenquellen k nnen per Join verkn pft werden from Geb ude as geb join Strassen as str on geb str_id str id Unterst tzt werden Inner Join Left Right und Full Outer Join Dabei wird jeweils die einfachste Syntax verwendet Als Filter k nnen folgende Ausdr cke verwendet werden Relationale Operatoren Unterst tzt werden die Operatoren lt gt lt gt a nr gt 4 a active false Like Anders als bei SQL verwendet der Like Operator von ODHQL implementationsbedingt Regul re Ausdr cke Python Syntax a beschreibung like Z uii rich a beschreibung not like Z uii rich In Sucht den Ausdruck in einer Liste von Elementen a nr al 8 A DI Bee iene alm A 5 7 Null Check Pr ft ob ein Ausdruck Null bzw None ist a optional_field is null a mandatory_field is not null Die Resultate mehrerer Queries werden mit Union zusammengeh ngt Dies verh lt sich wie union all in SQL d h es findet keine Deduplizierung der Daten statt join left join right join und full join 3 Siehe https docs python org 2 library re html regular expression syntax 52 5 2 TRANSFORMATIONSSPRACHE ODHQL 5
124. n modulares und erweiterbares Konzept zur Konversion diverser Dateiformate sowie die Transformation mittels einer eigenen Domain Specific Language DSL mit dem Namen Open DataHub Query Language ODHQL entworfen und umgesetzt Die ODHQL wurde aufgrund des bereits vorhandenen SQL Know hows vieler Entwickler als Subset dessen umgesetzt Die funktionalen Anforderungen an die Plattform sowie die ODHQL wurde durch die Umsetzung zweier Anwendungs f lle getrieben Die Integration von Postadressen und Verkehrshindernisse f r die Traffic Obstruction Database TROBDB Das Resultat ist eine moderne mit Python 2 7 Django Framework und AngularJS umgesetzte HT ML5 Webapplikation mit der Daten diverser Formate ffentlich geteilt und durch Experten mit ODHQL Kenntnissen transformiert werden k nnen Diese lassen sich dann wiederum zur Weiterverwendung in einem beliebigen Dateiformat beziehen Die Erkenntnisse und das Resultat dieser Arbeit best tigen die Machbarkeit einer solchen Konversions und Transformationsplattform und k nnen als Grundlage f r weitere Entwicklungen verwendet werden Webseite beta opendatahub ch Management Summary Ausgangslage Den Schweizer Beh rden sowie Drittparteien steht die Wahl der eingesetzten Software Systeme frei Diese produzieren wiederum verschiedene Dateiformate und Schemata zum Austausch der Daten Durch den Einsatz einer Vielzahl an Systemen wird der Datenaustausch massiv erschwert Es wurde versucht
125. nem Node js Modul Unterst tzt wird die Ausf hrung von externen Programmen oder die Verwendung von Node js Modulen Ein Beispiel einer trivialen package json Konfiguration wird in aufgezeigt und gibt lediglich HELLO WORLD aus Programmcode C 2 Offizielles Gasket Beispiel name my test app dependencies transform uppercase 1 0 0 de gasket example at command echo hello world type pipe command transform uppercase type pipe I C 4 Schnittstellen API C 4 1 REST Der dat Server kann von jeder dat Instanz durch dat listen gestartet werden dat implementiert aktuell nur HTTP Basic Authentication mit einem einzelnen Benutzer welcher in dat json konfiguriert werden kann Falls ein Admin Benutzer konfiguriert ist k nnen nur angemeldete Sessions Daten ndern es k nnen jedoch immer noch alle Daten von allen Benutzern gelesen werden SSL wird bisher nicht unterst tzt GET Liefert die Webapplikation dat editor aus Antwort GET api Liefert allgemeine Informationen zur dat Instanz 148 C 4 SCHNITTSTELLEN API 149 Programmcode C 3 GET api dati H elbligiie version 6 9 6 changes 2 name dat test rows 53 approximateSize rows 3 kB GET api rows Liefert eine Liste von Eintr gen Default 50 Eintr ge Programmcode C 4 Antwort GET api rows a rows prename Leonie surname
126. nforderungen als Use Case Diagramm dargestellt und dient lediglich f r Aussenstehende zum Verst ndnis Die Akteure werden in genauer erl utert System Anbieten CRUD Bezug via Schnittstelle lt lt include gt gt Datenanbieter Drittentwickler Anmeldung Bezug Konversion lt lt include gt gt Registrierung Datenbezieher Format Modul bereitstellen Schema Transformation Experte Abbildung 2 1 bersicht Anforderungen 2 1 1 Konkrete Anwendungsf lle Post und Geb udeadressen Adressen im Allgemeinen k nnen auf unterschiedliche Art und Weise modelliert und abgespeichert werden Das klassische Beispiel ist die Adresse inklusive Hausnummer gegen ber zwei separaten 16 2 1 USER STORIES 17 Feldern Ziel ist es unterschiedliche Schemata von Postadressen als integriertes zu CSV generieren oder vorhandene Geb udeadressen mit Daten im MOpublic Format anreichern zu k nnen Verkehrshindernisse Die Webapplikation Traffic Obstruction Database TROBDB stellt Verkehrshindernisse der Schweiz auf einer Karte dar Diese Verkehrshindernisse werden von diversen Datenlieferanten in unterschiedli chen Datei Formaten und Schemata angeliefert Ziel ist es alle diese Verkehrshindernisse in einem einheitlichen Datei Format und Schema beziehen zu k nnen Als Datenquellen dienen Datenangebote des Bundes der Kantone sowie Liechtenstein Als Demons tration sollen fol
127. ng 1 2 1 PyCharm Wir nutzten zur Entwicklung von OpenDataHub die Entwicklungsumgebung PyCharm f r Python aus dem Hause JetBrains F r Studenten ist die Professional Edition kostenlos verf gbar 120 1 2 ENTWICKLUNGSUMGEBUNG 121 1 2 2 Projekt erstellen Nun kann ein PyCharm Projekt erstellt werden Dazu w hlt man Datei ffnen und w hlt den Ordner opendatahub aus Das Projekt wird erstellt 1 2 3 Python Interpreter beschreiben die Einstellungen die vorgenommen werden m ssen damit alle Debugging Features funktionieren Abbildung 1 1 bersicht Einstellungen Vagrant 121 122 1 ENTWICKLUNG Abbildung 1 2 Ubersicht Einstellungen Projektinterpreter 1 2 4 File Watchers Fur die Verwendung von TypeScript sollte ein File Watcher in PyCharm eingerichtet werden Dies wird in beschrieben 122 1 2 ENTWICKLUNGSUMGEBUNG 123 opendatahub EP Project gt opendatahub Sy gt h External Tools File Watchers For curre Name TypeScript Description Compiles ts files into js files Output Filters Show console Error Immediate file synchronization Trigger watcher regardless of syntax errors X Compile main files only File type B TypeScript files Scope Project Files Program Jusr local bin tsc Insert macro sourcemap FilePath Insert macro Insert macro sion js FileNameWithoutExtension js map Insert macro Create output file fro
128. nstellung passenden Frontend JavaScript Frameworks wurde um eine rapide Entwicklung mit geringen Support Risiken zu errei chen f r AngularJS und gegen Ember Knockout Backbone und andere entschieden und wir akzeptieren dass der Einsatz mit gewissen Einarbeitungsaufw nden verbunden ist poitour Es gibt eine grosse Anzahl solcher Bibliotheken doch eine der popul rsten ist sicherlich AngularJS Angular basiert auf dem MVC Prinzip und bietet viele Vorteile zum inter aktiven Bedienen einer Webseite Somit haben wir in der SA auf Angular JS gesetzt wohnortfinder Bootstrap Bootstrap ist das ideale Framework um rasch einen funktionierenden Prototypen im Web zu entwerfen Die Verwendung von Frontend Frameworks beschleunigt die Entwicklung da zu Beginn bereits klar ist welche Komponenten vorhanden sind und wie diese aussehen Die Integration von Bootstrap in AngularJS via Plugins vereinfacht die Verwendung der Frameworks enorm Ein Theme steuert das Look and Feel von Bootstrap Material Design for Bootstrap setzt die Design Vorgaben f r Material Ul auf Android 5 mit Bootstrap um und garantiert dadurch ein modernes Look and Feel Entscheid 4 5 Bootstrap als Designgrundlage Aufgrund der Vertrautheit mit Bootstrap haben wir uns f r die Verwendung von Bootstrap entschieden Als Theme wird Material Design for Bootstrap verwendet Menupunkte Die Menuf hrung soll schlicht und bersichtlich gehalten werden Der Prototyp wird folgend
129. ntwickler von dat Max Ogden verliert das Interesse am Projekt und dat wird auch nicht von der Community weiterentwickelt Pr vention Massnahme Absch tzung des Risikos durch die Aktivit ten der Entwickler sowie der Gr sse der Community Da dat grunds tzlich durch die Aufgaben stellung vorgegeben ist kann dieses Risiko nicht vermieden werden 3 2 Risiko berwachung Die Risiken wurden w hrend des gesamten Projektverlaufs periodisch berwacht und nderungen entsprechend protokolliert Idealerweise sollten die Risiken ber eine gewisse Zeit hinweg sinken 3 2 1 1 M rz 2015 Wie sich herausgestellt hat ist dat noch weit davon entfernt produktiv verwendet werden zu k nnen St ndige API Anderungen und fehlende Dokumentation machen es zu einem untragbaren Risiko Im wurde gegen den Einsatz von dat entschieden und somit die Risisken R31 bis R33 eliminiert 3 2 2 15 April 2015 Nachdem ein erster Prototyp der Parser und Formatter Konversions Module sowie der Transformations Sprache OpenDataHub Query Language implementiert wurde war die grunds tzliche Machbarkeit des Projekts bereits sichergestellt 3 2 3 15 Mai 2015 Das Risiko R36 es treten technische H rden auf die nicht vorhergesehen wurden und nicht zu bew ltigen sind ist im Zusammenhang der externen Bibliothek GDAL eingetreten Nach Evaluation diverser L sungsans tze wurde f r die stabilste Version mit gr sster Formatunterst tzung entschieden Es
130. obase import GeoFormatterBase from hub utils import ogr2ogr if ESRI Shapefile in ogr2ogr SUPPORTED_DRIVERS class Shapefile Format label ESRI Shapefile ogr_format ogr2ogr SHP description Ein urspr nglich f r die Firma ESRI entwickeltes Format f r Geodaten min extension shp classmethod def is_format cls file args kwargs return file extension shp class ShapefileFormatter GeoFormatterBase targets Shapefile supported_types Point LineString LinearRing Polygon MultiPoint classmethod def format cls dfs name format args kwargs return super ShapefileFormatter cls format dfs name format ESRI Shapefile shp xargs kwargs class ShapefileParser Parser accepts Shapefile classmethod def parse cls file format args kwargs with file file_group on_filesystem as temp_dir 61 62 5 DESIGN UND IMPLEMENTATION return gp read_file os path join temp_dir file name driver ESRI Shapefile 5 5 API Die Webapplikation kommuniziert mit dem Server ber ein Representational State Transfer REST API 5 5 1 Konzepte Folgende Konzepte werden von mehreren Endpunkten verwendet und werden daher separat aufgelistet Paging Paging erm glicht das limitieren der Anzahl Resultate welche eine Abfrage liefert Die Eintr ge pro Seite werden mit dem Parameter count gesteuert die
131. obe Architektur berlegungen f r ETL e Use Cases User Stories konkretisieren e Erste Human Computer Interaction and Design HCID berlegungen f r das Webfrontend e Einarbeitung Django Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 2 abgeschlossen 107 108 6 SPRINTS JIRA Key Summary DAT 14 Projektmeeting Woche 3 DAT 32 Sprint 1 Log DAT 33 Projektmeeting Woche 4 DAT 34 Organisation Planung amp Kommunikation DAT 36 Ubrige Aufwande Remo Sprint 2 DAT 37 Ubrige Aufwande Christoph DAT 38 Ubrige Aufwande Fabio DAT 40 Epics User Stories aufnehmen DAT 41 Architektur Backend DAT 43 HCID DAT 44 Django AngularJS Probleme Die Einrichtung der Infrastruktur inkl Cl und auto deployment auf Heroku hat mehr Zeit beansprucht als urspr nglich geplant 6 4 Sprint 3 Summary Sprint 3 Periode Stunden Soll Stunden Plan Stunden Ist 16 03 2015 12 00 Uhr 30 03 2015 12 00 Uhr 144h 145 h 204 3 h 108 6 4 SPRINT 3 109 207h 184h 161h 138h 115h 92h 69h 46h 23h 0 h Mar 16 Mar 30 Mar 30 Burndown Chart Sprint 3 Ziele Das Hauptziel dieses Sprints ist ein Fundament f r die restliche Applikation Entwicklung zu schaffen Es sollten diverse Dateiformate in eine geeignete Datenstruktur geladen werden um diese wiederum in andere Formate zu konvertieren bzw formatieren zu k nnen e Plugin Pluggable Interface f r Daten Extractors Parsers
132. ohne sich um Format Details k mmern zu m s sen Unterst tzt werden Formate wie CSV Excel und JSON aber auch Geo Formate wie GeoJSON GML Interlis 1 sowie Daten aus Web Feature Service WFS Endpunkten Des Weiteren besteht die M glichkeit aus einer Analyse der bereit gestellten Daten ein Interlis 1 Modell zu erstellen Transformationen Mit Hilfe eines Assistenten ist es Benutzern m glich die Grundlage einer Transformation auf einfache Art und Weise zu erstellen F r Experten steht mit OpenDataHub Query Language ODHQL eine an SQL angelehnte Abfrage Sprache bereit welche auch komplexere Abfragen erm glicht vi OpenDataHub ch x beta opendatahub ch transformation 2004 sp opendatahub Daten Teilen Neue Transformation Hilfe Abmelden amp fabioscala Metadaten Beschreibung TROBDB Baustellen Z rich WFS TROBDB Baustellen Z rich WFS Besitzer testuser Transformation CSV csv userid title description trob_start trob_end trob_interval direction diversi ESRI Shapefile shp Reto Leer tistrasse Netzausbau 2015 06 2015 06 NULL both Verkeh Excel xlsx Leuenberger Gossau ZH EKZ 08 26 mit GML gml Lichtsit GeoJSON geojson INTERLIS 1 itf Stephan Z rcherstrasse Erneuerung 2015 05 2015 11 NULL both Teilspe Odermatt H ttikon Werkleitungen 04 30 Umleitt INTERLIS 1 Modell ili Instandsetzung signalis JSON json Fahrbahn KML kml Beat Staubli Wetzikerstra
133. oll e b Spalte oder Wert der als Ersatz verwendet werden soll Beispiel NVL ODH12 title as title PAD strings width side Fullt die Zeichenkette auf die angegebene Lange mit Leerzeichen auf Parameter e strings Spalte oder Wert e width Gewunschte Lange e side Seite Kann left right oder both sein Beispiel PAD ODH4 name 20 right AS name RANGE start 1 steo 1 Liefert eine Sequenz von Ganzzahlen Geeignet um beispielsweise k nstliche IDs zu erstellen Parameter e start Erster Wert der Sequenz e step Abstand zwischen den Ganzzahlen 168 Beispiel RANGE AS id REPEAT strings times Wiederholt die Zeichenkette eine bestimme Anzahl mal Parameter e strings Spalte oder Wert welcher wiederholt werden solle e times Anzahl Wiederholungen Beispiel REPEAT Lorem ipsum dolor 20 AS filler REPLACKE strings pattern replace match_case True Ersetzt die angegebene Zeichenkette im Text Parameter e strings Spalte oder Wert in welchem gesucht werden soll e pattern Spalte oder Wert welcher gesucht werden soll e replace Ersatz Spalte oder Wert e match_case Optional Gibt an ob Gross und Kleinschreibung beachtet werden soll Default True Beispiel REPLACE ODH12 strasse str strasse AS strasse ROUND col decimals Rundet auf die angegebene Anzahl Nachkommastellen Parameter e col Spalte oder Wert der gerundet werden soll Muss vom Datentyp FLOAT
134. on i A conditions IsNullCondition InCondition lt lt Abstract gt gt FilterListBase left right PredicateCondition invert operator predicate left in_list fielc FilterAlternative I RE Operator Expression FilterCombination equals not_equals less less_or_equal greater greater_or_equal like not_like Abbildung 5 7 AST Filter 5 2 5 Interpreter Mit Pandas und NumPy ist bereits eine API f r viele SQL hnliche Operationen wie Selektion Joins und diverse String und Geometriefunktionen GeoPandas Erweiterung vorhanden Die Herausforde rung bei der Entwicklung des Interpreters liegt somit einerseits in einer performanten und m glichst fehlerfreien Ausf hrung andererseits der Erweiterbarkeit durch eigene Funktionen 55 56 5 DESIGN UND IMPLEMENTATION Abfrage interpretieren Ist UNION JOIN Tabellen 1 n verbinden WHERE Filtern der Daten ORDER BY Sortierung SELECT Selektion der gew nschten Felder Einzelne Abfragen interpretieren UNION Resultate zusammenf hren Abbildung 5 8 High level Ablauf der Abfrage Interpretation 5 2 6 Funktionen Die Funktionen der ODHQL wurden m glichst erweiterbar implementiert Neue Funktionen erben von der Klasse VectorizedFunction und implementieren die Methode apply Durch die Vererbung und der zugrunde liegenden Python Metaklasse wird die neue Funkt
135. on Planung amp Kommunikation Sprint 6 DAT 114 brige Aufw nde Sprint 6 DAT 115 TROBDB Transformation DAT 116 Template Transformationen DAT 117 Bugfixing DAT 119 OdhQL Benutzerdokumentation Probleme Die verschiedenen GDAL Versionen auf den verschiedenen Systemen Travis Heroku Entwicklung haben zu unterschiedlichem Verhalten und Fehlern in der Applikation gef hrt Neu muss auf allen Systemen die Bibliothek Version 1 11 1 selbst kompiliert werden statt via apt get 114 6 8 SPRINT 7 115 6 8 Sprint 7 Summary Sprint 7 Periode 11 05 2015 12 00 Uhr 26 05 2015 12 00 Uhr Stunden Soll 144h Stunden Plan 147h Stunden Ist 146 8 h 144h 126h 108h 90h 72h 54h 36h 18h 0 May 11 May 26 May 26 Burndown Chart Sprint 7 Ziele Die Kernfunktionalit t von OpenDataHub ODH steht und die Use Cases wurden weitestgehend umgesetzt Somit ist dieser Sprint als reiner Bugfixing oder Improvement Enhancement Sprint gedacht Vor allem im Bereich mit Geo Daten sind noch einige Fehlersituationen denkbar Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 7 abgeschlossen 115 116 6 SPRINTS JIRA Key Summary DAT 139 Bugfixing DAT 141 UI Tests DAT 143 Update amp Delete Package Documents DAT 148 Organisation Planung amp Kommunikation Sprint 7 DAT 149 Projektmeetings Sprint 7 DAT 150 brige Aufw nde Sprint 7 DAT 152 Logo erstellen DAT 175 Interlis Modell verwend
136. on SQL inklusive Unterst tzung einiger Geo Basisfunktionalit t analog der PostgreSQL Erweiterung PostGIS 2 2 3 Erweiterbarkeit Sowohl die Unterst tzung von Dateiformaten wie auch die Funktionen der OpenDataHub Query Language wurden mit Bedacht auf Erweiterbarkeit implementiert Eine Drittpartei kann durch Imple mentation eines speziellen Interfaces eigene Parser Formatter Paare oder gar ODHQL Funktionen zur Verf gung stellen welche nach einem Neustart der Applikation sofort verf gbar sind 2http pandas pydata org 3 http www numpy org 4 Die Persistierung der Daten in eine Postgres Datenbank impliziert beispielsweise die Verwendung von PostgreSQL zur Transformation 5 CSV KML Excel 3 Resultate und Ausblick 3 1 Zielerreichung Mit Ausnahme der Unterst tzung des Formats GeoPackage wurden alle in der Aufgabenstellung gestellten Ziele erreicht Der Grund f r die mangelnde GeoPackage Unterst tzung ist eine Serie von Fehlern in Geospatial Data Abstraction Library GDAL siehe Einige selbst gesteckte Ziele wie z B Integration SuisselD konnten wir aufgrund sich ver ndernder Priorit ten nicht erreichen OpenDataHub ch x D localhost 5000 5 ABP sp opendatahub Daten Hilfe Anmelden Registrieren Suche Titel Beschreibung Hinzugef gt Besitzer Test mockaroo com csv Testdaten Originalformat CSV vor 3 Tagen testuser 8 Test mockaroo com json Testdaten Originalformat JSON
137. or exists Pr ft ob eine dat Datenbank am angegebenen Pfad existiert dat close callback error Beendet den HTTP Server den RPC Client falls vorhanden und die Datenbank und r umt die dat PORT Datei auf dat destroy path callback error Ruft close auf und entfernt das dat Verzeichnis in path var headers dat headers Liefert ein Array mit den aktuellen Spalten Namen 156 C 4 SCHNITTSTELLEN API 157 dat getRowCount callback error count Ermittelt die aktuelle Anzahl Datens tze in der dat DB C 4 3 Python Mit datPython existiert eine sehr simple Python API welche folgende grundlegenden Operationen mittels der REST Schnittstelle von dat erm glicht info Generelle Informationen ber das dat Repository diff Gibt alle nderungen zur ck csv Gibt die Daten aus dem dat Repository als Comma Separated Values CSV formatierte Zeichenkette zur ck rows Gibt alle Zeilen im dat Repository zur ck dict Dasselbe wie rows jedoch als Dictionary put_json Importiert alle Datens tze einer JSON Datei put_csv Importiert alle Datens tze einer CSV Datei datPython ist zurzeit lediglich ein minimaler HTTP Wrapper und besteht aus knapp 60 Programmco dezeilen Die Installation mittels Python Package Index PyPI bzw pip w re zwar m glich jedoch nicht funktionsf hig Bei Verwendung dieses noch kleinen Moduls w re die Erstellung eines eigenen Forks zum jetzigen Zeitpunkt die beste L
138. osoft Excel arbeiten sfkeller oder Daten im Excel Format anliefern m ssen sowohl das alte Excel 2003 xls sowie das neue OpenXML xlsx Format unterst tzt werden 4 2 3 GeoJSON GeoJSON ist eine auf JSON basierende Schema Spezifikation f r Geo Daten Dieses Format ist heutzutage weit verbreitet und wird fast berall wo mit Geo Daten hantiert wird unterst tzt 4 2 4 GeoPackage GeoPackage ist ein relativ neues auf SQLite basiertes Format Es ist sehr nahe an SpatiaLite welches mit Version 4 2 auf GeoPackage wechselt 4 2 5 GML Geometry Markup Language GML ist ein auf XML basierendes Format f r Geo Daten und ist das Standard Ausgabeformat von WFS Servern 2 Achtung das prf Format von ESRI sieht sehr hnlich aus enth lt jedoch weniger Informationen 30 4 2 DATEIFORMATE 31 4 2 6 Interlis Interlis besteht aus einer Modellbeschreibungssprache und einem Transferformat Da es praktisch nur in der Schweiz zum Einsatz kommt ist die Unterst tzung in kommerzieller Software m ssig bis nicht vorhanden Interlis existiert in zwei Versionen Interlis 1 verwendet ein Datensatz basiertes Transfer Format w hrend f r Interlis 2 XML gew hlt wurde Mit wenigen Ausnahmen stellt Interlis 2 eine Erweiterung von Interlis 1 um Objekt orientierte Features dar 4 2 7 KML Keyhole Markup Language KML ist wie GML ebenfalls ein auf XML basierendes Format welches in Google Earth Verwendung findet Speziell bei KML ist d
139. own Backend Default require leveldown prebuilt db Benutzerdefinierte levelup Instanz Wenn diese Option vorhanden ist wird die leveldown Option ignoriert und alle Tabellen basierte Daten werden in dieser DB Instanz gespeichert blobs Benutzerdefinierte blob Datenbank Default require lib blobs js replicator Benutzerdefinierte Replicator Instanz Default require lib replicator js remoteAddress Falls angegeben startet dat im RPC Client Modus Default undefined manifest Wenn remoteAddress gesetzt ist wird dies als Manifest f r RPC verwendet skim Wenn true wird lazy auf BLOBs von einer nicht lokalen Quelle zugegriffen Default false transformations siehe Transformationen hooks siehe Transformationen onReady err Wird aufgerufen nachdem dat initialisiert wurde Wenn err gesetzt ist trat ein Fehler auf Transformationen Transformationen k nnen vor put oder nach get Operationen ausgef hrt werden Die Konfiguration erfolgt iber den options Parameter im Konstruktor Programmcode C 9 Beispiel einer Transformations Konfiguration transformations set transform uppercase put module lowercase stream js Folgende Datentypen sind m glich string Ausf hrbarer Befehl um die Daten zu transformieren Der Befehl erh lt durch Zeilenum br che getrennte JSON Datens tze NDJSON in STDIN Nach der Transformation werden die Daten wieder als JSON auf STDOUT erwartet object Objek
140. quence IF Sort rows Filter rows gt Unique rows soins Scripting Data Warehouse 2 Select values E Calculator A Add constants lt lchlator 1 B MaintainCustDim Mapping B tb E inine Experimental Deprecated e e amp amp E3 Favorite steps Abbildung 2 3 Transformations Beispiel aus der Pentaho Kettle Dokumentation Mit GeoKettle existiert eine Geo Erweiterung Diese wird jedoch angeblich nicht weiter entwickelt sfkeller 2 1 5 Yahoo Pipes Pipes erlaubt das Verkn pfen und Filtern von RSS Daten Interessant ist vor allem das User Interface welches die grafische Verkn pfung von Datenquellen erlaubt l http www geokettle org 2 2 KONVERSION UND TRANSFORMATION 7 amp pipes Webpage to RSS Pipe Loaded Ru Layout Expand All Collapse All x Back to My Pipes New Save a copy Default hhttp www google com search hi e Debug http www google com search hi e v i S 5 4 EG Base http www feedity c Port Hi Debugger none Abbildung 2 4 Pipe in Yahoo Pipes Yahoo hat am 4 Juni 2015 angek ndigt dass Pipes am 30 September 2015 abgeschaltet wird 2 1 6 OpenRefine org OpenRefine fr her bekannt als Google Refine ist eine Open Source Plattform zur Bereinigung und Transformation von Daten 2 2 Konversion und Transformation In diesem Abschnitt w
141. r ffentlichen Dieser Datensatz wird zentral bei swisstopo gef hrt und entspricht mit Ausnahme des entfernten Identifikators IDENT PLZ Zusatzziffern in der Tabelle PLZ dem TOPIC PLZOrtschaft der amtlichen Vermessung Der Datensatz ist fl chendeckend ber die ganze Schweiz und kann kostenlos bezogen werden Datensatz wird monatlich nachgef hrt Schlagworte adressen amtliche vermessung av egeoch geoportal ort ortschaft postleitzahl plz verwaltungseinheiten Daten und Ressourcen p CAPL_INTERLIS_LV03 zi CAPL_INTERLIS_LV95 zip NPAL_INTERLIS_LV03 zi Abbildung 2 1 Ein Daten Paket auf opendata admin ch datahub io Datahub io ist eine CKAN basierte Plattform zum Anbieten von Daten ae datahub Datasets Organizations About Blog Help EI The eas use and share data Datasets Y Organizations Clear All Add Dataset Global 3467 Senegal 548 Canada 514 Open Hampton Roads 390 9 584 datasets found Order by Relevance 2 Bio2RDF 377 ie ckan net 272 Planeta DATA it ckan net 263 Exportaci n de las apariciones en Internet medios online blogs sitios web corporativos boletines bioportal 243 oficiales y Redes Sociales flickr twitter linkedin facebook XLS no ckan net 232 teeing Open DRG 212 Interim Spain Monitor Show More Organizations Exportaci n de las apariciones en Internet medios online blogs sitios web corporativos boletines Oficiales
142. r AngularJS Services Controller und Direktiven erstellt Diese stellen sicher dass jeder Entwickler immer wieder dieselbe Grundstruktur verwendet Diese sind unter opendatahub idea settings jar abgelegt 103 6 Sprints 6 1 Sprint 0 Summary Sprint 0 Kickoff Periode 16 02 2015 22 02 2015 Stunden Soll 48h Stunden Plan Stunden Ist 42 25 h Ziele e Kickoff e Aufgabenstellung verstehen e Infrastruktur aufsetzen Abgeschlossen Folgende High level ohne Subtasks Tasks wurden w hrend des ersten Sprints erstellt und sogleich abgeschlossen JIRA Key Summary DAT 2 Infrastruktur aufsetzen Task DAT 3 Dokumentation aufsetzen Task DAT 4 Projektmeeting Woche 1 Kickoff DAT 15 Grobe Projektplanung DAT 16 Einlesen dat Probleme Aufgrund einer noch fehlenden Note war die Beteiligung von Christoph H sler an diesem Projekt ungewiss Diese Zweifel konnten rasch gekl rt werden und das Team ist froh ihn bei der Bachelorarbeit dabei zu haben 104 6 2 SPRINT 1 105 6 2 Sprint 1 Summary Sprint 1 Einarbeitung dat Periode 23 02 2015 01 03 2015 12 00 Uhr Stunden Soll 72h Stunden Plan 86 5h Stunden Ist 76 5h 144h 128h 112h 96h 80h 64h 48h 32h 16h 0 Feb 23 Mar 2 Mar 2 Burndown Chart Sprint 1 Die graue Fl che zeigt den Scope Change aufgrund der in genannten Gr nde Ziele e Dat Einf hrung abschliessen e Risikoanalyse abschliessen e Basis Setup Infrastruktur abschliessen Abgeschlos
143. rmat CSV private false owner ia 1 username testuser vfirsti namo u ast name nn 65 66 5 DESIGN UND IMPLEMENTATION Fe created_at 2015 06 01T12 35 31 4801352 type document preview http beta opendatahub ch api v1 document 1 preview template false dl ACO url http beta opendatahub ch api vi package 2001 name TROBDB Baustellen Februar 2015 description TROBDB Baustellen Februar 2015 private false owner id ily username testuser first_name t Wl last_name wu Fe created_at 2015 06 01T12 35 45 794037Z type transformation preview gt http beta opendatahub ch api vi transformation 2001 preview template false Die Endpunkte Suche und Sortierung unterst tzten Paging Package Details GET api v1 package lt id gt Liefert die Details zu einem Package Dies sind grunds tzlich dieselben Informationen wie in der Package Liste jedoch um einige weitere Details erg nzt Die Antwort sieht unterschiedlich aus je nachdem ob das Package ein Dokument oder eine Transformation ist Programmcode 5 7 Beispielantwort f r GET api v1 package 4 ia 4 url http beta opendatahub ch api v1 document 4 name Test Bahnhoefe gml Bahnhoefe gfs Bahnhoefe xsd description Testdaten Originalformat GML file_groups http beta opendatah
144. s 2 0 0betal f hrt der Versuch nach Interlis 1 zu konvertieren zu einem Segmentation Fault segfault Das Problem wurde vom Betreuer an den Treiber Entwickler weiter gemeldet In aktuellen nightly Versionen soll dies behoben sein dies wurde nicht verifiziert e Der GeoPackage Treiber wurde in GDAL 1 11 0 hinzugef gt Leider kann er in dieser Version nur als unausgereift bezeichnet werden Layer Namen werden ohne Bereinigung oder Maskierung als Tabellen Namen verwendet was zu Exceptions seitens SQLite fiihrt Wenn die Ursprungs Daten bereits eine Spalte namens fid beinhalten bricht die Konver tierung ab wegen doppelter Spalten Namen da der Treiber diese Spalte selbst nochmals hinzu generiert Reine Daten Tabellen werden nicht unterst tzt Diese sind zwar nicht Bestandteil des reinen GeoPackage Standards k nnen aber mit Extended GeoPackage realisiert werden Dies ist in GDAL erst ab Version 2 0 0 m glich GeoPackage Support wurde in GDAL 2 0 0 massiv verbessert Diese Version ist bei Abschluss der Arbeit jedoch noch in der Beta Phase weshalb diverse unserer Abh ngigkeiten dazu noch nicht kompatibel sind Entscheid 5 1 GDAL Version Zum Abgabe Zeitpunkt sind folgende GDAL Versionen verf gbar 1 10 1 1 11 0 2 und 2 0 0betal Wegen Problemen mit mehreren Treibern entfallen die Versionen 1 11 x Version 2 0 0betal entf llt wegen mangelnder Unterst tzung in unseren Abh ngigkeiten Daher wird vorerst
145. s werden die Caching Mechanismen von Django mit einigen Modifikationen Erweiterungen verwendet Folglich k nnen die Caching Backends jederzeit durch beliebige von Django unterst tzte Backends wie z B Memcached Filesystem etc ersetzt werden 5 3 1 Caches zeigt eine bersicht der in ODH eingesetzten Caches und deren Storage Backends L1 LocMemNoPickleCache L2 LocMemNoPickleCache L3 DatabaseCache Kurzlebig Langlebig Persistent Abbildung 5 9 Ubersicht der Caches 57 58 5 DESIGN UND IMPLEMENTATION Cache Beschreibung Level 1 Der Level 1 Cache ist ein In Memory Cache und sehr kurzlebig 60s Dieser wird haupts chlich verwendet um Zwischenresultate wie Format Konversionen oder Resultate einer Abfrage zu speichern damit der Benutzer im Webfrontend die Daten sofort mittels Pagination anschauen kann Level 2 Der Level 2 Cache ist ebenfalls ein In Memory Cache allerdings werden die Daten l nger vorgehalten 300s Darin werden haupts chlich Daten aus dem Level 3 Cache f r mehrere Minuten zwischengespeichert um Abfrage und Deserialisierungs Overhead zu vermeiden Level 3 Der Level 3 Cache ist mit Hilfe eines Datenbank Backends implementiert Der Cache speichert eingelesene Dateien im intermedi ren Format d h DataFrame Objekte sowie gespeicherte Transformationen ohne Online Datenquellen Tabelle 5 4 Beschreibung der Caches 5 3 2 Invalidierung berall wo Caching Mechanismen eingesetzt werden stellt s
146. sein e decimals Anzahl Nachkommastellen auf die gerundet werden soll Beispiel ROUND ODH2 fraction 4 AS fraction RTRIM strings Entfernt White Space vom Ende der Spalte oder des Wertes Parameter e strings TEXT Spalte oder Wert Beispiel 169 RTRIM ODH7 strasse AS strasse ST_Area geoms Berechnet die Flache der Geometrien in der Einheit des Koordinatensystems Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_Area Beispiel ST_X 0DH12 geometry AS area ST_AsText geoms Liefert die Geometrien als Well Known Text WKT Zeichenkette Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_AsText Beispiel ST_AsText ODH12 geometry AS wkt ST_Centroid geoms Berechnet den Mittelpunkt der Geometrien Parameter e geoms Spalte mit Geometrien Siehe auch PostGIS ST_Centroid Beispiel ST_Centroid ODH12 geometry AS point ST_GeomFromText wkts srid None Erstellt eine Spalte mit Geometrie Objekten aus einem Well Known Text WKT Parameter e wkts Spalte oder Wert mit WKTs e srid Optional die SRID der Geometrien Siehe auch PostGIS ST_GeomFromText 170 Beispiel ST_GeomFromText POINT 7 2234283 48 8183157 4326 AS hsr ST_SetSRID geoms srid Setzt das Koordinatensystem Spatial Reference Identifier kurz SRID einer Geometrie Spalte Parameter e geoms Spalte mit Geometrien e srid SRID der Geometrien Siehe auch PostGIS ST_SetSRID Beispiel ST_SetSR
147. sen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 1 abgeschlossen 105 106 6 SPRINTS JIRA Key Summary DAT 13 Projektmeeting Woche DAT 17 dat dokumentieren DAT 18 Risikoanalyse DAT 19 Infrastruktur aufsetzen DAT 24 Ubrige Aufwande Remo Sprint 1 DAT 25 Ubrige Aufwande Fabio Sprint 1 DAT 26 Ubrige Aufwande Christoph Sprint 1 DAT 30 Sprint 0 Log Probleme Wie sich herausgestellt hat ist dat noch nicht ansatzweise produktionsreif Aus diesem Grund muss das urspr ngliche Ziel der Arbeit eine Plattform basierend auf dat zu entwickeln angepasst werden Die Grundidee bleibt dieselbe nur das diese nun ohne dat und somit mit einem komplett anderem Technologiestack umgesetzt wird Aufgrund dieser Entscheidung wurde der Sprint vorzeitig nach einer Woche beendet und das weitere Vorgehen komplett neu geplant 6 3 Sprint 2 Summary Sprint 2 Periode 02 03 2015 12 00 Uhr 16 03 2015 12 00 Uhr Stunden Soll 144h Stunden Plan 144 3h Stunden Ist 157 3h 106 6 3 SPRINT 2 107 160h 140h 120h 100h 80h 60h 40h Mar 2 Mar 16 Mar 16 Burndown Chart Sprint 2 Ziele Im Hinblick auf die ver nderten Umst nde der urspr nglichen Aufgabenstellung muss ein Teil der Infrastruktur neu aufgesetzt werden Zudem stellt sich die Frage nach der groben Architektur des nun selbst zu implementierenden Extract Transform Load ETL Prozesses Infrakstruktur basierend auf Python aufsetzen Gr
148. skommen sodass diese f r alle Zielformate kompatibel ist Hierbei ist wichtig anzumerken dass diese Typen keine Keywords der Sprache sind sondern beispielsweise bei der Verwendung der CAST Funktion als Zeichenkette z B INTEGER bergeben werden m ssen Funktionen 165 CAST values datatype Konvertiert den Datentyp einer Spalte oder eines einzelnen Wertes Parameter e values Spalte oder Wert der konvertiert werden soll e datatype G ltiger ODHQL Datentyp Beispiel CAST ODH42 age INTEGER AS age CONCAT a D args Konkateniert eine Liste von TEXT Spalten oder Werten Parameter e args Liste von TEXT Spalten oder Werten Beispiel CONCAT ODH5 given_name ODH5 surname AS name CONTAINS strings pattern match_case True Pr ft ob eine Zeichenkette in einem Text enthalten ist Kann als Bedingung verwendet werden Parameter e strings Spalte oder Wert in welchem gesucht werden soll e pattern Spalte oder Wert welcher gesucht werden soll e match_case Optional Gibt an ob Gross und Kleinschreibung beachtet werden soll Default True Beispiel CONTAINS ODH9 haltestelle Hauptbahnhof AS ist_hb COUNT strings pattern z hlt die Anzahl Vorkommnisse des Musters im Text Parameter e strings Spalte oder Wert e pattern Regularer Ausdruck Siehe Regex Dokumentation Beispiel COUNT ODH3 description d AS numbers ENDSWITH strings end 166 Pr ft ob ein Text mit einer
149. sse Neubau 2015 01 2015 12 NULL both Durchfi XML xml Baretswil Radweg 26 15 Richtur Original Baretsv Resultat einer Transformation Die Resultate von Transformationen k nnen wie alle anderen Daten auch in beliebigen Formaten bezogen werden Erweiterung Neue Formate sowie Funktionen f r die Abfrage Sprache k nnen mit relativ wenig Aufwand hinzuge f gt werden Ausblick F r die Weiterentwicklung von OpenDataHub bestehen diverse M glichkeiten Hier eine Auswahl e Wechsel auf neue Versionen der zur Format Unterst tzung verwendeten Bibliotheken e Erweiterung der Web Applikation evtl Integration mit bereits vorhandener Software e Ausbau des Transformations Assistenten um weitere Features e Unterst tzung f r weitere Formate vi vii E UNIVERSITY OF APPLIED SCIENCES RAPPERSWIL Bachelorarbeit FS 2015 E E ren science 1 OpenDataHub HSR Teilen Beziehen und Konvertieren von Daten Bachelorarbeit Fr hlingssemester 2015 Studiengang Informatik Aufgabenstellung Der Austausch von strukturierten Daten d h der Datenaustausch zwischen unabh ngigen Or ganisationen ist nicht einfach In einer idealen Welt einigt man sich auf einen gemeinsamen Da tenaustausch Mechanismus beschreibt Datenmodelle f r verschiedene Anwendungsbereiche und jedes beteiligte System ist daf r besorgt dass die Daten gem ss diesem Modell in einem einheitli chen Format importiert bearbeitet und wieder exportiert werd
150. stehenden Datenbanken Formaten e Unterst tzung f r automatisierte Workflows F r den Umgang mit verschiedenen Datenformaten k nnen Transformationen dat js api definiert werden welche entweder vor Schreib oder nach Lese Operationen ausgef hrt werden 1 Milliarden von Datens tzen bzw Speicherbedarf im TB Bereich 23 24 3 PROJECT DAT 3 3 Architektur dat speichert Daten auf zwei verschiedene Arten e F r Tabellen Daten wird LevelDB verwendet Da LevelDB ein austauschbares Backend hat k nnen diese Daten auch in einer SQL Datenbank wie Postgres gespeichert werden e BLOB Daten werden standardm ssig im File System per local blob store gespeichert Dies kann ebenfalls durch eine kompatible Implementation ausgetauscht werden dat Editor Level DB Ser Postgr Tabular Data local blob store Blob Storage clone push pyll blob Store ae o T Abbildung 3 1 dat Architektur Ubersicht Direkt mit dat wird auch der dat editor geliefert welcher als rudimentares Web GUI dient Der Editor sowie das REST API werden gestartet wenn dat listen aufgerufen wird Andere dat Instanzen verwenden das REST API fiir die Synchronisation 24 3 4 USE CASES 25 Transform Transform Cite eee eee eee Se eee EEE EBEN eee eee eel put bSsssesessssssse ssssesesssessssssssssssssscssesssssesssesssssssse get csv JSON ProtoBuf Abbildung 3 2
151. sten Schritt die Technologie dat erforschen und die Machbarkeit absch tzen In einem ersten Schritt die Technologie dat erforschen und die Machbarkeit absch tzen Verwendung von Atlassian JIRA was sich in der Praxis mehrfach bew hrt hat Atlassian JIRA bietet umfangreiche Auswertungsm glichkeiten T gliche und W chentliche Auswertungen planen Burndown Charts zur fr hzeitigen Erkennung Umfang der Sprints zu Beginn provisorisch festlegen W chentliche Projektsitzungen Arbeit vor Or an der HSR Slack als Kommunikationsplattform Der Kunde setzt die Priorit ten vor jedem Sprint neu H here Gewalt Fr hzeitige Einarbeitung H here Gewalt keinen Ein uss M glichst Oft die commits auf den Server pushen Automatisches Backup des Notebooks Evaluation zu Beginn des Projekts Absch tzung durch Gr sse der Community Anzahl Commits Aktivit t Regelm ssige Backups Machbarkeit fr hzeitig absch tzen Tabelle 3 1 Alle ber cksichtigten Risiken Massnahme bei Eintritt Agile Vorgehensweise erlaubt Anpassungen und Repriorisierung der Anforderungen Agile Vorgehensweise erlaubt Anpassungen und Repriorisierung der Anforderungen Agile Vorgehensweise erlaubt Anpassungen und Repriorisierung der Anforderungen Change Request als neue User Story in den Product Backlog aufnehmen Alternative Technologie suchen Einbezug externer Experten z B aus dem IFS Alternative Technologie suchen Einbezug externer Expert
152. sultat liefert kann direkt als Bedingung verwendet werden Mehrere Bedingungen k nnen mit and und or verkn pft und mit runden Klammern gruppiert werden WHERE t a IS NOT NULL AND t b IN 1 2 3 OR t b gt 20 Sortier Klausel Es kann sortiert werden nach Feld Name Alias oder Position in der Feld Liste ORDER BY 1 ODH4 name DESC surname ASC 164 Union Die Resultate mehrerer Abfragen k nnen mithilfe von Union kombiniert werden Zu beachten sind folgende Punkte Union verh lt sich wie UNION ALL in SQL d h es wird keine Deduplizierung der Eintr ge vorgenommen Die einzelnen Abfragen m ssen kompatible Feldlisten liefern d h gleiche Feld Zahl und Feld Typen Sollten Geometrie Spalten vorhanden sein so werden die Geometrien in das Referenzsystem der ersten Abfrage umgewandelt Es ist somit n tig dass f r alle Geometrien ein Referenzsystem bekannt ist Als Feld Namen werden im Resultat die Feld Namen der ersten Abfrage verwendet Datentypen ODHQL unterst tzt zurzeit folgende Datentypen INTEGER 32 Bit Ganzzahl Wert BIGINT 64 Bit Ganzzahl Wert SMALLINT 16 Bit Ganzzahl Wert FLOAT 64 Bit Fllesskommazahl DATETIME Datum und Zeit TEXT Zeichenkette beliebiger L nge GEOMETRY Geometrie Objekte Nicht n her spezifiziert d h es k nnen Geometrien verschiedener Art in einer Spalte vorhanden sein Der Experte ist selbst daf r Verantwortlich dass gleiche Typen bei einer Transformation herau
153. t ein Dokument Es gelten folgende Einschrankungen e Nur die Meta Daten Name Beschreibung Privat k nnen aktualisiert werden e Nur der Eigent mer eines Dokuments kann aktualisieren 5 5 7 Transformationen Transformations Liste GET api v1 transformation Die Transformations Liste ist identisch zur Package Liste mit der Ausnahme dass nur Transforma tionen aufgef hrt werden Siehe f r Details Transformations Details GET api v1 transformation lt id gt Identisch zu Package Details mit der Ausnahme das nur Transformationen unterst tzt werden Siehe f r Details Transformation erstellen POST api vl transformation Erstellt eine neue Transformation f hrt die erwarteten Parameter auf 69 70 5 DESIGN UND IMPLEMENTATION Parameter Beschreibung name Name der Transformation max 200 Zeichen description Beschreibung der Transformation keine Limitation private default false Steuert ob die Transformation fiir andere Benutzer sichtbar ist transformation ODHQL Statement welches die Transformation definiert Falls die refe renzierten Datenquellen nicht existieren wird ein Template erstellt Tabelle 5 12 Parameter f r Erstellung einer Transformation Hinweis Vor der Erstellung einer Transformation sollte gepr ft werden ob das ODHQL Statement korrekt ist Siehe dazu Programmcode 5 10 Beispielanfrage f r POST api v1 transformation name Beispiel description D
154. t mit einem der folgenden Feldern command Gleiche Funktionalit t wie oben module Per require ladbares Node js Modul Das Modul muss einen Streams2 Passthrough Stream exportieren mit objectMode true Falls das Modul installiert werden muss sollte die Abh ngigkeit direkt in package json eingetragen werden array Array von Transformationen welche nacheinander ausgef hrt werden 152 C 4 SCHNITTSTELLEN API 153 Hooks Aktuell existiert nur ein einzelner Hook listen Wird ausgef hrt wenn der dat Server an einen Port bindet Ein Hook muss als Node js Modul wie in gezeigt vorliegen Programmcode C 10 Hook Beispiel module exports function hook dat done do stuff with dat must call done when the hook is done initializing even if you call it immediately done Nach erfolgreicher Initialisierung muss die Funktion done zwingend aufgerufen werden get key options callback error value Findet den zum Key geh renden Datensatz falls vorhanden und bergibt das Resultat an den callback options Objekt mit folgenden Feldern version Erlaubt das finden einer spezifischen Version Default aktuellste Version put key value options callback error newVersion F gt einen neuen Datensatz in die Datenbank ein Der Key kann optional als Parameter oder als value key bergeben werden Bereits bestehende Eintr ge werden nur berschrieben wenn value version mit der aktuellsten in
155. tert die Package Struktur und Inhalt der Python Module Alle Python Module die sich im plugins Modul befinden werden automatisch geladen Darin befinden sich auch Beispiel Plugins einer ODHQL Funktion sowie zur Erweiterung der Format Unterst tzung 48 5 1 ARCHITEKTUR 49 Alle Formate Parser Formatter Basis f r Exception und Warning Diverse Helper Funktionen Package f r drop in wie z B CSV Excel KML etc Handling Alles rund um ODHQL Tabellen serializers Datenbank Modellklassen REST API opendatahub Django Projektmodul und diverse common utilities a Plugins utilities amp loader Eigene Django Middleware Ben tigte Datenstrukturen f r Parser Interpreter Funktionen File Handling und In Memory Serialisationsmodule f r die Plugins wie Formate oder ODHQL Funk tionen Entry Points f r HTTP Requests API bzw Controller Python Unit Tests authentication User Management amp Authentication OAuth Abbildung 5 2 Python Packages 5 1 2 Klassen Im folgenden werden einige besonders wichtige Klassen dargestellt zeigt die erstellten Django Models Diese sind alle von django db models base Model abge leitet 1 siehe auch https docs djangoproject com en 1 8 topics db models 49 50 5 DESIGN UND IMPLEMENTATION PackageModel name description private owner created_at Fr TransformationModel referenced_transformations transformation
156. ther dat dat pull http localhost 6461 push data to another dat 146 C 2 DATSCRIPT 147 dat push http localhost 6461 delete the dat folder removes all data history dat clean view raw data in the store npm install superlevel g superlevel dat store dat createReadStream C 2 Datscript Datscript ist eine DSL f r dat die es erm glicht Befehle zu konfigurieren sowie mehrere Befehle zu sogenannten Pipelines zu verkn pfen Obschon Datscript an diversen Stellen erw hnt wird und ein Repository auf GitHub besteht so ist es bisher lediglich ein Konzept und wurde noch nicht implementiert Es ist zu vermuten dass Datscript gar nicht implementiert wird und durch das in beschriebene Gasket ersetzt wurde Programmcode C 1 Datscript Beispiel validate cli args args url import another datscript file import foo ds set env var for all run commands to use env foo bar run a pipeline hoists run pipeline import run a command from node_modules bin or PATH run foobar define main default pipeline pipeline main run pipeline import define pipeline w piping pipeline import run foobar run dat import json 1 Lediglich ein Beispiel f r das Konzept keinerlei Programmcode vorhanden 147 148 C DAT SCHNITTSTELLEN C 3 Gasket Gasket ist eine Node js basierte Pipeline Engine Die Konfiguration geschieht entweder im JSON Format direkt in package json oder aber in ei
157. tion anhand der Inline Dokumentation im Code und liefert das Resultat als HTML Seite zur ck 74 5 6 USER INTERFACE 75 5 6 User Interface 5 6 1 Authentifizierung Zur Authentifizierung der Benutzer wird der OAuth 2 Standard verwendet Dieser erlaubt ein Login mit einem GitHub Facebook oder anderem Konto Implementiert wurde dieser Standard auf der REST Seite mit Hilfe von verschiedenen Django Plugins Beispielsweise wurde python social auth verwendet um den Benutzer gegen ber diesen Diensten zu authentisieren Die REST Schnittstelle wird dann ber einen Token gesichert 5 6 2 Transformationen erstellen Wir wollten das Erstellen einer Transformation so einfach wie m glich gestalten Zu diesem Zweck haben wir uns fr h dazu entschlossen einen Wizard zu implementieren welcher die Erstellung einer Transformation vereinfachen soll In den fr hen Phasen des Projektes war es notwendig den Wizard zu verwenden In der gelieferten Beta Version ist der Wizard optional Die Transformation kann auch ber den manuellen Editor erstellt werden dann m ssen allerdings entweder die Tabellennamen bekannt sein oder es kann nur ein Template erstellt werden 75 76 5 DESIGN UND IMPLEMENTATION oo lt localhost a OpenDataHub ch oO doc8 w Test Bahnhoefe shp Bahnhoefe shx Bahnhoefe dbf Bahnhoefe ili testuser fg8 Bahnhoefe ili doc9 gt Test employees csv festuser
158. tion mit dem aktualisierten Datensatz aufgerufen dat listen port callback error Startet den HT TP Server port Zu verwendender Port Default 6461 bzw der n chsth here freie Port dat clone remote callback Initialisiert ein neues dat falls nicht bereits vorhanden und erstellt einen lokalen Klon von remote Kann schneller sein als pull falls der Server schnellere clone F higkeiten hat z B liveBackup von hyperleveldb 155 156 C DAT SCHNITTSTELLEN dat push remote callback error Synchronisiert das lokale dat mit dem remote Server indem die lokalen Anderungen tiber HTTP gepusht werden remote HTTP Basis Adresse des Servers z B http localhost 6461 dat pull remote callback Synchronisiert das lokale dat mit dem angegebenen Server indem die Anderungen vom Server bernommen werden remote HT TP Basis Adresse des Servers Default Adresse des Server von dem diese dat Instanz geklont wurde falls vorhanden dat init path callback Erstellt eine neue dat Datenbank in path dat Diese Methode wird Standardm ssig aufgerufen bei der Erstellung einer dat Instanz var paths dat paths path Liefert ein Objekt mit diversen relevanten Pfaden mit path als Basis Programmcode C 11 Beispiel Pfade mit als Basis dire a oe dati dat level dat store dat Porter dat PDRTE blobs dat objects package dat json dat exists path callback err
159. tung Abbildung 4 3 Slack Screenshots 4 4 2 Fazit Die interne Kommunikation wurde vollumf nglich ber Slack abgewickelt F r die Kommunikation mit dem Betreuer und anderen Partnern wurde nach wie vor E Mail verwendet da wir Prof Stefan Keller nicht von dieser Plattform begeistern konnten Die Vorteile f r uns lagen auf der Hand Wir konnten unsere Mailboxen entlasten und haben unsere gesamte Kommunikation automatisch archiviert 4 5 Integrationsumgebung Die Applikation wird nach jedem erfolgreichen Build durch Travis auf Heroku deployed Die Integra tionsinstanz dient zu Demozwecken an Sitzungen und stellt zudem sicher dass die Webapplikation auch im kompilierten Zustand funktioniert https slack com integrations 3 Transpilierung von TypeScript sowie Konkatentierung und Minification aller Ressourcen 100 5 Qualitatsmanagement 5 1 Reviews Um die Qualit t der umgesetzten Tasks zu erh hen und sicherzustellen wurde ein Review Prozess eingesetzt Jeder Task darf erst abgeschlossen werden wenn ein anderes Teammitglied das Resultat grob angeschaut und f r gut befunden hat Um diesen Prozess einzuhalten wurde ein eigener Jira Workflow verwendet Dsl m Abbildung 5 1 Jira Review Workflow Der in dargestellte Prozess stellt sicher dass alle Tasks erst in den Review Status versetzt werden 101 102 5 QUALITATSMANAGEMENT m ssen Von diesem Status aus kann der Task entweder durch den Reviewer g
160. ub ch api vi document 4 filegroup private false owner ia 1 username testuser first_name Jast_name un gt 66 5 5 API 67 Fe created_at 2015 06 01T12 35 32 2414072 preview http beta opendatahub ch api v1 document 4 preview type document Programmcode 5 8 Beispielantwort f r GET api v1 package 2001 MED 0 Olle url http beta opendatahub ch api vi transformation 2001 name TROBDB Baustellen Februar 2015 description TROBDB Baustellen Februar 2015 transformation SELECT t Federf hrende Stelle as userid substring t Bauarbeiten 1 100 as title t Bauarbeiten as description to_char to_date concat extract t Dauer d d 2 7 nvl extract t Dauer d 4 extract t Dauer d 4 hda hm 4Y Y m d as trob_start add year from end date if not present tomchar homdate exchracit Gee Dauer 2 ANNIN YY m d as trob_end null as trob_interval both as direction null as diversion_advice CH as country t Bauarbeiten as reason t Strecke as object_name street as object type closed as trob_type ST_SetSRID ST_GeomFromText CONCAT POINT CAST t Zentroid X m cE ext M CASIMGE NU Zentroid Y mI etext ico peo Dras geometry from ODH8_Baustellen Februar 2015 as t private false owner nig 1 3 username
161. umente unterst tzt werden Siehe f r Details Dokument Erstellung POST api v1 document Erstellt ein neues Dokument f hrt die erwarteten Parameter auf Parameter Beschreibung name Dokument Name max 200 Zeichen description Beschreibung des Dokuments keine Limitation private default false Steuert ob das Dokument f r andere Benutzer sichtbar ist format default null Format der hochgeladenen Daten Wenn nicht angegeben wird versucht das Format automatisch zu erkennen Tabelle 5 10 Parameter f r Dokument Erstellung 68 5 5 API 69 Zus tzlich wird eine der folgenden Optionen ben tigt file Direkter Datei Upload In diesem Fall wird die Anfrage als Multipart Form Request erwartet Es kann mehr als eine Datei auf einmal hochgeladen werden Diese werden dann dem selben Dokument zugeordnet nach Datei Namen ohne Erweiterung in File Groups gruppiert url Erstellt ein Dokument mit einer URL als Datenquelle Dies kann entweder ein WFS Endpoint oder eine HTTP URL sein Zus tzlich kann der Parameter refresh angegeben werden welcher steuert wie oft die Daten abgerufen werden sollen in Sekunden Erlaubt sind Werte von 60 1 Minute bis 604800 1 Woche Programmcode 5 9 Beispielanfrage f r POST api v1 document name aasdfas description asdfasdf url http maps zh ch wfs TbaBaustellenZHWFS refresh 3600 Dokument Update PATCH api v1 document lt id gt Aktualisier
162. ung oder Korrektur von bereits abgelieferten Daten 25 26 3 PROJECT DAT e Ersatz der bisher verwendeten f r jede Regierungsstelle neu kreierten und teuren Portale durch eine standardisierte L sung Siehe auch https github com maxogden dat issues 153 3 5 CLI Das dat Command line interface CLI dat ist das einzige Werkzeug um ohne API mit dem Repository zu interagieren und bietet folgende Basisfunktionalitat e Erstellung neuer dat Repositories Intanzen mit dat init e Import von CSV oder JSON Dateien mit dat import dat Server und Webfrontend starten mit dat listen Klonen eines kompletten remote Repositories dat Repostitories analog Git mit dat clone e Lokale Anderungen ebenfalls analog Git wieder zuriick ins remote Repository synchronisieren mit dat push Rudiment re Manipulation und Ausgabe von einzelnen Zeilen des Repositories mit dat rows bzw dat cat Die abschliessende Liste von zurzeit unterst tzten Befehlen ist in zu finden F r fortgeschrittenere Verwendung ist das CLI jedoch nicht geeignet da viele Optionen fehlen Stattdessen sollte das JavaScript API verwendet werden Sp tere Versionen sollen auch Branches erlauben sowie mit nderungskonflikten umgehen k nnen 3 6 Frontend Dat bietet ein minimales Webfrontend welches hnliche Operationen wie mit dem CLI wie z B Import Export sowie das Betrachten der Datens tze erm glicht Einen Ausschnitt ist folgender zu sehen
163. ut unused BUILD FAILED flake8 found 4 warning s 5 2 2 TypeScript Zur Formatierung des Quellcodes wurden die Standardregeln der Entwicklungsumgebung angewendet Diese sind unter opendatahub idea settings jar abgelegt Auch hier wurde zur Pr fung und Einhaltung von TypeScript spezifischen Regeln ein Linter tslint verwendet und mittels Build Server erzwungen Die Regeln sind in opendatahub src main webapp tslint json konfiguriert Da eine Typisierung in TypeScript optional ist gilt der Grundsatz dort wo es Sinn macht das heisst konkret 1 Namenskonventionen Modularitat 2 PyCharm von JetBrains IntelliJ IDEA 3http flake8 readthedocs org http www pylint org 102 5 2 PROGRAMMIERRICHTLINIEN 103 e alle Variablen die ein TypeScript Interface besitzen z B AngularJS Services e alle public Funktionen und Methoden die auch exportiert werden und somit irgendwo Wieder verwendung finden sowie deren Attribute Nicht zu annotieren sind inline Lambda Funktionen ausser wenn f r deren Parameter ein Interface existiert Ein Beispiel Output von tslint sieht folgendermassen aus Running tslint files tslint task app scripts app config ts 2 3 comment must start with a space app scripts app config ts 21 3 comment must start with a space app scripts app config ts 21 8 file should end with a newline app scripts app ts 37 11 comment must start with lowercase letter app scripts app ts 5 9
164. vergibt er einen Namen sowie eine Beschreibung und klickt auf den Speichern Button 6 Eine gr ne Erfolgsmeldung erscheint und nach kurzer Zeit wird der Benutzer zur Detail Ansicht der neuen Transformation weitergeleitet 6 a Die Transformation ist fehlerhaft Eine rote Fehlermeldung zeigt detailliertere Informatio nen zum Problem an Testperson 1 1 Der Benutzer verwendet den Assistenten als Startpunkt und will anschliessend in den Editier Modus wechseln Dazu muss er erst nach oben scrollen was er als m hsam bezeichnet 2 Das Hilfe Icon funktioniert nicht Die Punkt Hilfe im Menu schon ffnet die Hilfe aber im selben Browser Fenster Der Benutzer muss die Abfrage nochmals neu zusammen klicken 3 Nach der Eingabe eines fehlerhaften Queries stellt der Benutzer fest dass die Fehlermeldung ung nstig platziert ist unterhalb der Vorschau 4 Der Benutzer hat einige Schwierigkeiten mit der Erstellung des Queries Er hat zwar die Vorlesung Dbs1 an der HSR besucht verwendet SQL aber sehr selten Mit Hilfe der Dokumentation gelingt es schliesslich doch 82 6 2 UNIT TESTS 83 6 1 5 UI05 Daten beziehen Anmeldestatus Nicht angemeldet Aufgabe Um die Daten in seinem System weiterverwenden zu k nnen will der Benutzer die Resul tate der vorhin erstellten Transformationen als GML Datei herunterladen Walkthrough 1 Der Benutzer sucht die Transformation in der Daten Liste und klickt auf den Namen 2
165. weitergegeben Slack bietet Team Kommunikation auf hohem Niveau mit der M glichkeit Services wie GitHub Jira Travis Cl E Mails usw zu integrieren So konnte an einem zentralen Ort Bezug auf Commits E Mails vom Betreuer und Failing Builds genommen werden Durch die Verwendung eines dedizierten Tools zur Kommunikation konnte das E Mail Postfach von Bachelorarbeit relevanten Themen freigehalten und direkten Bezug auf konkrete Ereignisse genommen werden zeigt Screenshots aus dem Mac Client von Slack mailsfromsfk documentation related github documentation iS sfkeller Sg Herr H sler ba doc master 1 new commit by Fabio Scala 72b93dd added some todos Fabio Scala SB Travis Cl Hier die besprochenen Checkliste Tipps von mir zur Doku der BA Build 38 ffced21 of hsr ba fs15 dat ba doc master by Fabio Scala failed in 13 min 31 sec n 2 Par Nachster Sitzungstermin ist Mi 13 30 PM Fabio Scala 9 ohcmon github documentation LG S Keller ba doc master 1 new commit by Fabio Scala 13d1339 missing comma again Fabio Scala PS An alle Hier noch ein weiterer Geodaten Hub Server jedoch spezifisch AD Travis CI PP b J er r 3 ke _ http koop dc esri com Esri ist Markf hrer mit einem Marktanteil von bis z Build 40 1341339 of hsr ba fs15 dat ba doc master by Fabio Scala passed in 17 min 47 sec 7 B Studiengang L und R auf dieser Basis a Git und Travis b Automatische E Mail Weiterlei
166. wurden w hrend Sprint 5 abgeschlossen 112 6 7 SPRINT 6 113 JIRA Key Summary DAT 88 Online Daten auto refresh DAT 94 Interlis Kompatibilitat DAT 95 CRUD Transformationen DAT 96 Caching DAT 97 Ubrige Aufwande Sprint 5 DAT 98 Organisation Planung amp Kommunikation Sprint 5 DAT 99 Projektmeetings Sprint 5 Neu werden alle eingelesenen geparsten Dateien in verschiedenen Caches abgelegt was die Interakti on im User Interface erheblich verschnellert Zudem werden WFS Datenquellen automatisch erkannt und k nnen ebenfalls verwendet werden Das User Interface zur Erstellung der Transformationen ist nach wie vor in Entwicklung Probleme Meinungsverschiedenheiten in Team Diese konnten durch Diskussion beigelegt werden 6 7 Sprint 6 Summary Sprint 6 Periode 27 04 2015 12 00 Uhr 11 05 2015 12 00 Uhr Stunden Soll 144h Stunden Plan 151 5h Stunden Ist 167 h 113 114 6 SPRINTS 207h 184h 161h 138h 115h 92h 69h 46h 23h Apr 27 May 11 Burndown Chart Sprint 6 Ziele Dieser Sprint ist der letzte Feature Sprint Insbesondere die Transformationen sollten in ihrer Basis funktionalit t fertig implementiert werden Zudem sollen die diversen Quellen der TROBDB sauber mittels ODHQL Transformationen integriert werden Abgeschlossen Folgende High level ohne Subtasks Jira Tasks wurden w hrend Sprint 6 abgeschlossen JIRA Key Summary DAT 112 Projektmeetings Sprint 6 DAT 113 Organisati
167. zieren k nnen sodass ich diese auf der Plattform weiterverwenden kann Akzeptanzkriterien Gegeben Daten sind Online in einem von der Applikation unterst tzten Format verf gbar wenn ich die Daten publiziere dann sollen diese von der Applikation automatisch aus der angegebenen Quelle in die Applikation geladen werden und zur Verf gung stehen User Story 2 3 Private Daten Als Datenanbieter will ich Daten als Privat markieren k nnen sodass diese nur von mir ersichtlich und beziehbar sind und nicht der ffentlichkeit zur Verf gung stehen Akzeptanzkriterien Gegeben Das Formular zur Publikation von Daten wenn ich den Eintrag als Privat markiere dann sollen die Daten f r anonyme oder andere Benutzer nicht mehr in der Liste von verf gbaren Daten gelistet sein und jeglicher Zugriff darauf verweigert werden 19 20 2 ANFORDERUNGEN User Story 2 4 Modul anbieten Als Datenanbieter bzw Schema Format Experte will ich Python Module Plugins welche eine gegebene Schnittstelle implementieren anbieten um die bereitgestellten Daten Formate unterst tzen zu k nnen Akzeptanzkriterien Gegeben Einer vordefinierten Schnittstelle zur Programmierung eines solchen Moduls einem Beispiel eines solchen Moduls wenn ein solches Modul bereitgestellt wird dann soll das Format von der Applikation unterst tzt werden 2 1 5 Daten transformieren Epic 3 Transformation Als Experte will ich Transformationen mitt

Download Pdf Manuals

image

Related Search

Related Contents

機能追加に伴う取扱説明書記載内容の変更について  Übersetzung des Originals  Easy RGB(W) Remote controller User Manual  azwloz`o - - Billiger.de  User Manual  User Manual Product Introduction  取扱説明書はこちら(PDF:10.35MB)    Télécharger  La chance, mode d`emploi  

Copyright © All rights reserved.
Failed to retrieve file