Malawi Atlas
Jakob MikschFOSSGIS-Konferenz 2019
2Jakob Miksch
Jakob [email protected]
Wissenschaftlicher Mitarbeiter - Z_GIS
OSGeo Charter Member
Maptime Salzburg
Geo-AnwendungenPostGIS, SQL, Python, R, Java, Javascript,
OpenLayers, Web, Android, QGIS, Bash, GDAL/OGR, OpenStreetMap, Routen-Planung,
GeoServer, Spatial Analysis, . . .
3Jakob Miksch
Universität Salzburg: 18.000 Studierende, 3.000 MA
Z_GIS
~85 MA, ~80% drittmittelfinanziert
MSc Applied Geoinformatics: ~35 Studierende jährlich
PhD GIScience: ~45 DoktorandInnen
4Jakob Miksch
Z_GIS Forschung
5Jakob Miksch
2014 2019
https://github.com/zgis/malawi_atlas_public
6Jakob Miksch
Architektur
7Jakob Miksch
Demo
8Jakob Miksch
PostgreSQL + PostGIS
9Jakob Miksch
PostGIS
10Jakob Miksch
Benennung
nsanje.ngo_mapping_ta_summaries_coopi_2018
Gebiet (=Schema)
grobe Bezeichnung
genaue Bezeichnung
Quelle
Jahr
11Jakob Miksch
12Jakob Miksch
Ext JS
13Jakob Miksch
OpenLayers + GeoExt
14Jakob Miksch
Diagramme
15Jakob Miksch
Druck-Funktion
16Jakob Miksch
17Jakob Miksch
Upload von Daten
18Jakob Miksch FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
19Jakob Miksch
FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
20Jakob Miksch FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
21Jakob Miksch
Malawi Atlas
Malawi Atlas
Jakob MikschFOSSGIS-Konferenz 2019
● Source code ist offen● Kooperation mit COOPI und Concern Worldwide● Neu-Entwicklung eines 5 Jahre alten Portals● Bericht über verwendete Technologien● Ausblick auf Alternative Technologien
2Jakob Miksch
Jakob [email protected]
Wissenschaftlicher Mitarbeiter - Z_GIS
OSGeo Charter Member
Maptime Salzburg
Geo-AnwendungenPostGIS, SQL, Python, R, Java, Javascript,
OpenLayers, Web, Android, QGIS, Bash, GDAL/OGR, OpenStreetMap, Routen-Planung,
GeoServer, Spatial Analysis, . . .
● Wissenschaftlicher Mitarbeiter am Z_GIS● Programmiert hauptsächlich● Maptime Salzburg
3Jakob Miksch
Universität Salzburg: 18.000 Studierende, 3.000 MA
Z_GIS
~85 MA, ~80% drittmittelfinanziert
MSc Applied Geoinformatics: ~35 Studierende jährlich
PhD GIScience: ~45 DoktorandInnen
4Jakob Miksch
Z_GIS Forschung
● GIScience Lab – meine Arbeitgruppe● ISI - Kooperation
5Jakob Miksch
2014 2019
https://github.com/zgis/malawi_atlas_public
● War eine Arbeit für eine andere Forschungsgruppe● GUI hat sich nur wenig verändert● Das meiste ist im Hintergrund passiert
● Code strukturierter● Namen ordentlicher● Update der Software und Libraries
6Jakob Miksch
Architektur
● Alte und neue Architektur ist gleich● Klassische Kombination PostGIS+GeoServer● Haben überlegt was anderes zu nehmen, doch
mehr dazu später● Um das Upgrade leichter zu machen, haben wir die
selbe Technolgie gewählt
7Jakob Miksch
Demo
8Jakob Miksch
PostgreSQL + PostGIS
● PostGIS ist eine Erweiterung von PostgreSQL● Sehr mächtige Datenbank● Speziell für räumliche Funktionen●
9Jakob Miksch
PostGIS
Bennenung der Tables sehr wichtig> 100 Tables waren uneinheitlich benannt
10Jakob Miksch
Benennung
nsanje.ngo_mapping_ta_summaries_coopi_2018
Gebiet (=Schema)
grobe Bezeichnung
genaue Bezeichnung
Quelle
Jahr
● Schemas nach Regionen sortiert● Reine Tabellen ohne Relationen● Benennung wichtig●
11Jakob Miksch
● Bennenung der Layer und der Styles in GeoServer auch wichtig
● Vektordaten über Postgres● Rasterdaten im Filesystem → Pyramiden bauen ist
wichtig● OpenAerialMap für große Bilder, redirect mit
GeoServer● Styling mit SLD● Eigener Daten-Ordner macht Sinn● Plugins für GeoPackage, Druck, Diagram-
Rendering, ...
12Jakob Miksch
Ext JS
● Web-Framework● Gute Dokumentation● Wenig Aktivität in Foren● Data Store● Wenn man sich anpasst hat man ein leichtes Leben● Code wird strukturiert in Komponenten● Update von Ext JS 4 → Ext JS 6● Lizenz GPL oder closed source
13Jakob Miksch
OpenLayers + GeoExt
● OpenLayer 2 → OpenLayers 4, aktuell ist OL5● Von 2 auf 3 großer Sprung → Rewrite● OpenLayers wird für die Kartendarstellung
genommen● GeoExt stellt eine Verbindung zwischen den Ext JS
Data Store her● Zusammenarbeit mit Meggsimum
14Jakob Miksch
Diagramme
● Diagramme können gut mit ExtJS gemacht werden● Viele Einstellungen● Liest den Ext JS Data Store
15Jakob Miksch
Druck-Funktion
● GeoServer Print Plugin● Basiert auf MapFish Print Version 2● Aktuell ist MapFish Print 3 (aber komplettes
Rewrite basierend auf Jasper Reports)● Einrichtung nicht ganz trivial, funktioniert aber
zuverlässig ● Komplett im Backend● Ein JSON mit der Konfiguration wird im Frontend
erstellt
16Jakob Miksch
• Vorher Dokumentation PDF• Mit Sphinx kann man PDF und Website machen• Ermöglicht dynamische Inhalte wie gifs• Dokumenation lässt sich angenehm mit git
versionieren• Schreiben im RST-Format etwas ungewohnt• Etabliert in OpenSource Welt
17Jakob Miksch
Upload von Daten
● Eher kompliziert● Upload in Postgres mit QGIS● Styling mit QGIS und/oder GeoServer SLD● Layerinfo mit Metadaten in Website Source Code
→ pragmatisch aber hat Nachteile
18Jakob Miksch FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
● Gesamt Übersicht● Möglichkeiten Backend und Frontend zu machen● Backend weniger Möglichkeiten● Frontend sehr heterogen
19Jakob Miksch
FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
● Vektor: Postgres, MariaDB, MySQL, GeoPackage● Raster: Postgres, GeoPackage, File System● Geodaten Server:
● GeoServer: fast alles Möglich, Java● MapServer: sehr stabil, C++● Deegree: standard-konform● QGIS Server: nicht so verbreitet, Styling der
Daten aber per GUI möglich, Druckvorlagen können per GUI gestaltet werden
● Metadaten: mit bestehenden Programmen machen anstatt per Website
20Jakob Miksch FRONTEND
BACKEND
deegree
GeoServer
QGIS Server
MapServer
Geospatial Data Server
pyCSW
GeoNetwork
GeoServer CSW
GeoNode
Metadata Catalog
Vector Storage
GeoPackage
PostgreSQL
MariaDB
Raster Storage
GeoPackage
PostgreSQL
GeoTIFF
+Map Library
Webframework
Leaflet
OpenLayers
Angular
React Vue.js
Ext JS
MapFish Mapbender
MapStore GeoMoose
Custom Stack Pre-Bundled Stack
Pylons
Ext JS
OpenLayers
GeoExt
React
OpenLayers
Leaflet
React
OpenLayers
Symfony
JQuery
OpenLayers
Web Feature Service (WFS)
Web Map Service ( WMS )
Catalog Service for the WebAPI(CSW)
Custom Stack:● Alles selber bauen● Hohe Freiheit● Hoher Aufwand der Erstellung und Wartung
Prebundled Stack:● Weniger Aufwand zu installieren● Erweiterungen nur begrenzt möglich● Update mit weniger Aufwand● Man bekommt viel Geschenkt
21Jakob Miksch
Malawi Atlas