Open Source im professionellen Einsatz

© Sebastian Duda, 123RF.com

Die Web-GIS-Frameworks Open Layers, Mapfish und Mapbender

Web-Globus

, ,

Immer mehr Online-Kartendienste setzen auf Open-Source-Tools. Dieser Artikel stellt mit Open Layers, Mapbender und Mapfish die drei bekanntesten vor und zeigt ihre Einsatzgebiete.

Geomarketing, Umsatz- und Bedarfsanalysen, Informationen für Touristen und Bürger: Auf mehr und mehr größeren Webseiten tauchen interaktive Karten auf. Google trat den Boom mit Maps, Earth und Street View los und für viele Anwender ist es schon selbstverständlich, das Hotel "um die Ecke" schnell übers Internet oder Smartphone ausfindig zu machen und raumbezogene Daten übersichtlich in klick-, pan- und zoombaren Karten zu durchforsten.

Dieser Artikel untersucht drei ausgewählte Produkte aus dem Bereich der Geo-Informatik, mit denen sich kartenbasierte Anwendungen einfach und professionell erstellen lassen: Mapbender [1], Open Layers [2] und Mapfish [3].

Die Programme verfolgen zwar unterschiedliche Ansätze, lassen sich aber auch hervorragend kombinieren. Denn nur auf den ersten Blick erfüllen sie den gleichen Zweck, Karten anzuzeigen und dem Benutzer grundlegende Navigationsmöglichkeiten zu bieten. Viele Unterschiede manifestieren sich eher im Inneren des Webservers.

Open Layers

Open Layers haben die Initiatoren als Alternative zu den proprietären Google-Maps-Lösungen entwickelt, es liegt mittlerweile in Version 2.10 vor. Unkompliziert erlaubt es dynamische Karten auf der eigenen Webseite. Die Hauptmotivation der Entwickler ist die Benutzerfreundlichkeit, was vor allem dem Einsatz von Kachelungsdiensten zu verdanken ist (siehe Kasten "Bildkacheln oder Webservice?"). Auch wenn Open Layers Dutzende anderer Formate nutzt (Abbildung 1) und viele moderne GIS-Standards beherrscht, haben solche Kachel-Services Vorteile: Sie stellen die Karten über einfache und bewährte Verzeichnisdienste eines Webservers bereit und gewähren so eine hohe Skalierbarkeit.

Bildkacheln oder Webservice?

In Web-basierten Kartendiensten stellt sich vor allem bei Vektordaten häufig die Frage, ob die Software die vorliegenden Geo-Informationen nativ darstellen und per standardisiertem Web Map Service (WMS, [4]) einbinden soll oder ob sie fertige, vorgerechnete Kartenkacheln nutzt, so wie Google Maps das macht.

Immer aktuell oder immer schnell?

WMS-Dienste greifen bei jedem Kartenaufruf auf die Datenquelle zu, die Darstellung ist also immer aktuell. Kacheln dagegen können keine dynamischen Daten enthalten. Wer also sich schnell ändernde Inhalte visualisieren will, für den hat die Kachelung eher Nachteile.

Mit Geo Web Cache [5] gibt es zwar eine von mehreren Kachelungslösungen, die bei geänderten Daten bis auf den Server durchgreifen. Das hebelt allerdings die Vorteile schneller Antwortzeiten und überschaubarer Netzlasten mindestens teilweise wieder aus, von der zusätzlichen Komplexität einer weiteren Server-Softwarekomponente ganz zu schweigen.

Koordinatensysteme und Projektionen

Ein weiterer klarer Vorteil des WMS-Standards ist die Unterstützung unterschiedlicher Koordinatensysteme und Kartenprojektionen aus einer Datenquelle. Vereinfacht gesagt kann ein Datenbestand, der beispielsweise im metrischen Koordinatensystem Gauß-Krüger vorliegt (wie bei vielen Katasterdaten der Regelfall, [6]), auch in einer anderen Projektion auf der Karte erscheinen. Die Software rechnet ihn on the Fly um und stellt auf Wunsch auch unterschiedliche Datenbestände überlagernd dar.

Bei gekachelten, also vorab in Rasterbilder umgewandelten Daten muss der Server dagegen für jedes Koordinatensystem und jede Projektion einen eigenen Bestand an Rasterkacheln anlegen und vorhalten. Das führt schnell zu sehr großen Datenmengen auf dem Webserver, deren Erzeugung bei höheren Zoomstufen Stunden in Anspruch nimmt, bei großen Projekten auch Tage.

Auch hier helfen zwar Programme wie Geo Web Cache oder Mapproxy [7], allerdings bedarf es beim Planen einer Kartenanwendung einer gründlichen Untersuchung, ob die Vor- oder die Nachteile eines gekachelten Dienstes überwiegen. Eine generelle Aussage dazu gibt es nicht, es hängt ganz vom Datenbestand und Einsatzzweck der Anwendung ab. Jeder Webseitenbetreiber muss selbst abwägen, ob er die eigenen Daten hochperformant als Kacheln oder hochdynamisch als WMS-Dienst an den Browser ausliefern möchte.

Abbildung 1: Open Layers ist nicht auf Geodaten beschränkt, sondern dient auch als komfortabler Viewer für vielerlei Bildformate, hier für ein Mandelbrot-Fraktal.

Open Layers ist im Grunde eine Javascript-Bibliothek, die Karten in andere Webanwendungen einbettet. Die Grundfunktionen orientieren sich an denen von Google Maps, übertreffen diese jedoch in einigen Bereichen. Zoom-Funktion mit Mausrad, Slippy-Map, Kachelung, Web-Map-Service-Unterstützung (WMS, [4]), aber auch temporäre Objekte und eine umfangreiche Web-basierte Rendering-Engine gehören dazu.

Die Konfiguration erfolgt über eine recht einfache Syntax, die der Administrator in einer HTML-Seite hinterlegt. Listing 1 zeigt das wohl einfachste Hallo-Welt-Beispiel aus der Dokumentation, eine Weltkarte im Vollbild, generiert aus WMS-Links. Für kompliziertere Beispiele sind gute Javascript-Kenntnisse erforderlich. Mit steigender Funktionalität der Anwendungen kann das schnell recht anspruchsvoll werden.

Listing 1

openlayers.html

01 <?xml version="1.0" encoding="iso-8859-1"?>
02 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
03 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
05 <head>
06 <style>
07  html,body {
08   height: 99%;
09   width: 99%;
10  }
11  #map {
12   width: 100%;
13   height: 100%;
14   border: 1px solid black;
15  }
16 </style>
17 <script src='http://openlayers.org/api/OpenLayers.js'></script>
18 </head>
19 <body>
20  <div id='map'></div>
21  <script type="text/javascript">
22   var map = new OpenLayers.Map('map',{maxResolution: 0.703125} );
23   var wmscURL = [
24    "http://wmsc1.terrapages.net/getmap?",
25    "http://wmsc2.terrapages.net/getmap?",
26    "http://wmsc3.terrapages.net/getmap?",
27    "http://wmsc4.terrapages.net/getmap?"
28   ];
29   var terrapagesStreetLayer = new OpenLayers.Layer.WMS( 'TerraPages Street',wmscURL, {layers: 'UnprojectedStreet', format: 'image/jpeg' }, {buffer: 1, isBaseLayer: true} );
30   map.addLayer(terrapagesStreetLayer);
31   map.zoomToMaxExtent();
32  </script>
33 </body>
34 </html>

Als reiner Javascript-Kartenviewer ist Open Layers nicht mit Mapbender oder Mapfish zu vergleichen. Diese beiden Projekte decken ein viel breiteres Spektrum ab und sind sich konzeptionell ähnlicher: Sowohl Mapfish als auch Mapbender bestehen beispielsweise aus einer Client- und einer Serverkomponente.

Mapbender

Mapbender ([8], Abbildung 2) ist das älteste der drei Projekte und als mandantenfähiger Kartenviewer konzipiert, der eine einfache Administration per Weboberfläche erlaubt. Er zielt auf Anwender, die große Mengen an Kartendiensten einer Vielzahl von Benutzern in unterschiedlichen Konfigurationen zur Verfügung stellen möchten, aber selbst nicht programmieren wollen. Mapbender ist quasi das CMS für Geo-Inhalte. Sowohl die eingebundenen Datendienste als auch bestimmte Funktionen wie das Editieren oder das Hinzuladen weiterer Dienste lassen sich einzelnen Nutzern oder Nutzergruppen (Rollen) zuordnen. Damit das klappt, müssen die Dienste den gängigen Standards und Normen im GIS-Bereich entsprechen, also den Vorgaben der ISO sowie des Open Geospatial Consortiums (OGC).

Abbildung 2: Mapbender wird gerade vollständig überarbeitet, seine Stärken liegen im unkomplizierten Einbinden externer Datenquellen. Die Abbildung zeigt das Geoportal für Fahrradtouristen in Rheinland-Pfalz.

Als Basis bedarf es eines Webservers mit PHP, MySQL oder PostgreSQL und einer Datenbank mit dem Namen »mapbender« . Nach ein wenig Konfigurationsarbeit (gut dokumentiert im Mapbender-Wiki) trägt der Admin in der Datei »mapbender.conf« den Datenbank-Server und -Port sowie Zugangsdaten ein (in der neuesten Version übernimmt das ein GUI) und spezifiziert gegebenenfalls Mailserver, Logging-URLs und Modulpfade:

define("DBSERVER", "Host");
define("PORT", "Port");
define("DB", "Database");
define("OWNER", "Owner");
define("PW", "Password");

Externe Geodatendienste bindet der Anwender im Web-GUI per Mausklick ein, in der Regel kommen hier die langen WMS-URLs zum Einsatz.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook