Allgemein
Der Begriff Kachelung (engl. tiling) steht für die Methode, Karten in kleinere, vordefinierte
Bildkacheln zu zerlegen, diese auf einen Server abzulegen und zur Verfügung zu stellen.
Jede Kachel wird dabei durch einen Request vom Server angefordert und vom Client zur
Gesamtkarte zusammengefügt. Ziel ist die Erhöhung der Benutzerfreundlichkeit durch bessere
Performance in der Anzeige von Karten.
Anders als bei klassischen WMS besteht ein kachelnder Dienst aus festen Zoomstufen, die
in einem bestimmten Verhältnis zueinander stehen. Der Aufbau solcher Bildpyramiden erfolgt dabei üblicherweise durch quadtrees, bei denen eine Kachel, in der
Regel 256 x 256 Pixel breit, jeweils vier Kacheln der nächst tieferen Zoomstufe repräsentiert.
Der Maßstab ändert sich dabei jeweils um den Faktor 2.
Clientseitige Kachelung
Web Map Clients werden immer leistungsfähiger und können Funktionen, wie das Überlagern
von Layern übernehmen, die bisher nur serverseitig erledigt wurden. Bei der Verwendung von
kachelnden Diensten übernimmt der Client das Verwalten der Kacheln, d.h. die einzelnen
Kacheln über Requests anfordern, diese im HTML Dokument positionieren, zur Anzeige
bringen und schliesslich wieder löschen, wenn sie den Anzeigebereich verlassen.
Durch die vordefinierte BoundingBox wird für jede Zoomstufe ein virtuelles Gitternetz
(engl. grid) erstellt und im Referenzsystem positioniert. Mit Hilfe dieses Netzes wird es
möglich, jedem Platzhalter eine Kachel zuzuordnen. JavaScript Clients, wie Openlayers
oder Google Maps, realisieren den Aufbau solcher Gitter mit einer Folge von <div> oder
<img> Elementen, welche über das DOM angesprochen werden können. Befindet sich ein
Platzhalter im geforderten Anzeigebereich, wird über das src Attribut mit Hilfe einer
definierten Schnittstelle die Grafik angefordert und angezeigt. Verlässt er den
Bereich, wird das <div> bzw. <img> Element wieder geleert und gelöscht. Das Grundprinzip
der clientseitigen Verwaltung der Kacheln ist bei Flash oder Java Clients äquivalent.
Um die Karte beim Verschieben schneller zur Verfügung zu stellen, kann ein Puffer außerhalb
des Anzeigebereichs angegeben werden, der, obwohl noch nicht sichtbar, schon vorgeladen
wird. Dieser darf jedoch nicht zu groß gewählt sein, da sonst das Datenvolumen unnötig
steigt und die Perfomance der Anwendung darunter leidet. In der Praxis hat sich ein Puffer
von zwei Reihen um den Anzeigebereich bewährt.
Caching
Durch clientseitiges Speichern der Kacheln (engl. caching) kann sowohl die Latenzzeit
beim erneuten Laden der Kacheln, als auch die Netzbelastung reduziert werden
1. Dadurch wirkt die Web Map Anwendung flüssiger und erhöht die
Usability. Vor allem für statische Daten, welche sich selten ändern, ist das Cachen eine
sehr effektive aber dennoch oft vernachlässigte Variante, Netz- und CPU Ressourcen zu
minimieren. Wird jedoch zu lange, statt auf die Originalquelle, auf den clientseitigen Speicher
zugegriffen, werden dem Nutzer vermeintlich aktuelle Informationen dargestellt, die jedoch
schon veraltet sind. Ein gutes Mittelmaß für die Dauer des Cachen ist hier wichtig.
Schnittstellen
Am 12.09.2006 kam es auf der FOSS4G24 Konferenz in Lausanne zur “Map Tiling Bird of a
Feather session” mit der Absicht, einen Weg zu finden, Web Maps für dynamische Clients
effektiv zu kacheln und zu cachen. Die daraus entstandenen Empfehlungen TMS und
WMS-C sind für die Kommunikation zwischen Tile Caching fähigem Client und Server zur
Zeit am weitesten verbreitet, jedoch nicht standardisiert. Seit April 2010 hat das OGC nun
den ersten Standard im Bereich der kachelnden Dienste veröffentlicht.
Tile Map Service Specification
TMS ist der erste Vorschlag, welcher aus einer Gruppe von Teilnehmern entstand, die an
einer Client-Server-Lösung im Bereich Tile Mapping interessiert waren. Es ist weder ein
offizieller Standard, noch wird es von der OSGeo als offizielles Projekt oder Arbeit der
Organisation betrachtet.
2 Jedoch wird er nach wie vor in der Praxis eingesetzt.
Vor allem die weit verbreitete Implementierung des WMS-C/TMS Servers TileCache von MetaCarta
nutzt nach wie vor diese Schnittstelle. Der Zugriff auf die Kacheln wird hierbei über eine REST
Schnittstelle bereit gestellt.
WMS Tiling Client Recommendation
Diese Empfehlung beschreibt Erweiterungen und Einschränkungen der OGC WMS 1.1.1
Spezifikation, um mittels getMap Request auf gekachelte Karten zuzugreifen. Voraussetzung
für das sogenannte WMS Tile Caching ist, dass Kacheln mit einer festen Breite und Höhe
georeferenziert in festgelegten Maßstäben vorliegen. Die Capabilities müssen mit diesen
Informationen in Form eines Profils erweitert bzw. spezifiziert werden. Im Gegensatz zum herkömmlichen
WMS Request sind an Hand dieser Angaben die URL Parameter einzuschränken, um eine gültige Kachelanfrage
durchführen zu können.
3
Web Map Tile Service Implementation Standard
Im April 2010 veröffentlichte das OGC den ersten Standard für Web Map Tile Services.
Dieser ging aus der OSGeo Tile Map Service Specification hervor und unterstützt ressourcenund
prozedurorientierte Architekturstile.
4
Im praktischen Teil der Arbeit wird der WMTS exemplarisch mit HTTP KVP umgesetzt.
SOAP und REST Implementierungen für WMTS werden durch den von Herrn Thomas Jurk
aufgesetzten Tile Service GeoWebCache zum Zeitpunkt der Bearbeitung noch nicht unterstützt,
weshalb sich hier auf den prozedurorientierten Architekturstil mit KVP konzentriert
wird.
Aufbau Im Gegensatz zu TMS und WMS-C, bei denen die Bildpyramide durch die Ausdehnung
der entsprechenden Karte bzw. des Layers definiert wird, erfolgt hier eine Trennung. Das
Gerüst der Bildpyramide ist hier als räumliches Konstrukt mit bestimmter Ausdehnung in
einer Anzahl von festen Maßstäben in einem festen Koordinatenreferenzsystem zu betrachten
und steht erst einmal für sich allein. Die Karte wird nun durch Parameter in diesem Gerüst
positioniert. Dieses Bildpyramidengerüst wird TileMatrixSet genannt und sollte eine möglichst
große räumliche Ausdehnung besitzen. Vorteil hierbei ist, dass verschiedene Layer oder
auch Dienste auf ein und dasselbe TileMatrixSet zugreifen und dadurch besser überlagert
werden können. Die, bei kachelnden Diensten, eher eingeschränkte Interoperabilität soll
dadurch verbessert werden.