WMTS + ECW = Het beste van 2 werelden
Blog

WMTS + ECW = Het beste van 2 werelden

By Wim Bozelie on

Beperkingen van  WMS

Iedereen die een beetje thuis is in de GIS-wereld, heeft ooit wel eens te maken gehad met een WMS. Het Open Geospatial Consortium, ofwel OGC, stond eind vorige eeuw aan de wieg van dit acroniem. De WMS (Web Map Service) is ondertussen een volwassen en wereldwijde standaard geworden. Overal ter wereld zijn services beschikbaar waardoor u plaatjes kunt opvragen van publieke geografische data. Die wordt vrijwel steeds on-the-fly gerenderd. Bijna alle tools die iets met geodata kunnen, laten de gebruikers toe een WMS request te versturen naar een server. Het gestandaardiseerde protocol is zodanig goed ingeburgerd, dat vrijwel alle dialecten eruit zijn verdwenen. Door op een geijkte manier een deeltje van onze aardbol, met behulp van coördinaten en een projectiesysteem, in een schermdeel te plaatsen (met hoogte- en breedteopgave), levert WMS nog steeds de meest vrije manier om plaatjes op te vragen.

Maar deze vrijheid heeft ook een keerzijde. Door random requests toe te laten op zowel grootte van de plaatjes als op locatie, kan de performance van een WMS server sterk worden geconditioneerd. Het zou niet de eerste keer zijn dat een of andere print service een zodanig groot request stuurt, dat de WMS server het simpelweg begeeft. Uiteraard heeft men langs de server-zijde mechanismen ingebouwd die dergelijke grote requests beperken, en ook sommige client-applicaties sturen uit zichzelf requests die niet groter zijn dan 256 × 256.

WMTS – hoe werkt het?

Deze maatstaf werd ook gebruikt voor een nieuwe standaard, de WMTS. Deze standaard was het antwoord op de vele onstane initiatieven rond tile serving. De grootste eigenschap van deze servers is dat de data zelf in tiles wordt gegoten met standaard afmetingen en op verschillende niveaus. Men krijgt zodoende een soort pyramidevorm waarbinnen we als het ware een beperkte keuze krijgen aan requests. Men noemt deze manier ook wel eens xyz, waarbij x en y de rij en de kolom weergeven van de tile en z het gewenste niveau. Binnen een bepaalde projectie is elk deel van de wereld, of deel van de wereld met betrekking tot de projectie, vast gedefinieerd.

Dit opent meteen enkele perspectieven: een vastgedefineerd deel laat ons toe om de antwoorden op requests op voorhand al te genereren. Dit is wat er gebeurt op de zogenaamde cache servers. Men slaat bepaalde tiles op om latere requests rechtstreeks vanuit de cache te serveren, waardoor er een enorme performantiewinst in zit. De cache-strategie kan hierbij reactief (alleen wat al gevraagd is in de cache bergen) of proactief (wanneer alles op voorhand wordt gegenereerd) zijn. Mass market mapservices zoals Google Maps of Bing Maps gebruiken data farms die de opslag van al die tiles mogelijk maken. Men moet rekenen dat elk niveau een exponentieel aantal nieuwe tiles met zich meebrengt: level 0 heeft 1 tile, level 1 heeft 4 tiles, level 2 heeft 16 tiles, level 3 heeft 64 tiles en zo verder. Dit kan gaan tot ongeveer 20 niveaus. Men kan al meteen zien dat er zich een ander probleem stelt: de cache die nodig is om een dergelijke WMTS altijd even performant te maken, is gigantisch groot. En data-opslag is vandaag ook helemaal niet gratis.

WMTS + ECW

Dit is nu precies wat de WMTS server in Apollo Essentials omzeilt. In plaats van het oorspronkelijk bestand in onnoemelijk veel tiles te vergroten, wordt dit bestand eerst kleiner gemaakt door de ECW-compressie. De tiles worden door de server op verzoek aangemaakt. Maar het feit dat de requests klein blijven (256×256) en het feit dat het decoding mechanisme van ECW naar jpg of png zeer performant is, maken dat de server even snel performt als een cache server. Of hoe je toch snelheid kan behouden zonder dure investeringen in hardware voor opslag te moeten doen.

Het beste van twee werelden dus.

Probeer deze winnende combinatie uit op: http://apollo.imagem.nl/AGIV_WMTS.htm