<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.1 (Win32)" />
<style type="text/css"><!--
<!
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
>
--></style>
In deze wiki wordt uitgelegd hoe de tiling layer is te gebruiken
in combinatie met een normale WMS service (WMS-c). Het voordeel
hiervan is dat de kaart in kleine gedeeltes wordt opgehaald. Tevens
kan de client deze cachen (mits de juiste headers worden geset door
de service). Er wordt niet gecached aan de server kant!
Voordat service kan worden geconfigureerd in flamingo moeten we
een aantal gegevens van de server weten. Als voorbeeld nemen we de
Kaartenbalie Public WMS service:
http://public-wms.kaartenbalie.nl/wms/nederland
Als we de getCapabilities openen zien we volgens de WMS standaard
een aantal gegevens die we nodig hebben voor het configureren van de
TMS layer in flamingo.
De resoluties moeten we zelf bepalen/berekenen. Dit is eigenlijk
heel makkelijk. De resolutie is het aantal mapunits per pixel. Dus in
ons geval met srs EPSG:28992 meters per pixel. We willen beginnen met
als hoogste level 1 tile voor de gehele service.
– We gaan er
even van uit dat we tiles willen hebben van 256 bij 256.
– Volgens de getCapabilities is de totale bbox van de service:
12000,304000,280000,620000.
Dit betekent dat voor de breedte (
280000 – 12000 ) / 256 = 1046.875
Voor de hoogte betekent dit: ( 620000 – 304000 ) / 256 =
1234.375
We pakken hiervan de hoogste (minst gedetaileerde) zodat beide
passen in een tile van 256 x 256.
Daarna bepalen we voor ons zelf de de zoomscalefactor.
Bijvoorbeeld 2 en zo maken we de gewenste resoluties:
De eerste zal dus zijn 1234.375
De tweede (1234.375/2) 617.1875
De derde (617.1875/2) 308.59375
etc....
We bepalen zelf hoeveel resoluties we willen.
Als we deze gegevens invullen in onze Tiling Layer krijgen we het
volgende stukje XML:
<fmc:Map....>
.....
<fmc:TilingLayer id="publickb"
serviceurl="http://public-wms.kaartenbalie.nl/wms/nederland"
resolutions="1234.375,617.1875,308.59375,154.296875,77.1484375,38.57421875,19.287109375,9.6435546875,4.82177734375,2.410888671875,1.2054443359375,0.60272216796875,0.301361083984375,0.1506805419921875,0.07534027099609375,0.037670135498046875,0.018835067749023438,0.0094175338745117188,0.0047087669372558594,0.0023543834686279297"
serviceenvelope="12000,304000,280000,620000" type="wmsc">
<TilingParam name="Layers">basis,wegen,water</TilingParam>
<TilingParam name="SERVICE">WMS</TilingParam>
<TilingParam name="VERSION">1.1.1</TilingParam>
<TilingParam name="REQUEST">GetMap</TilingParam>
<TilingParam name="STYLES"> </TilingParam>
<TilingParam name="SRS">EPSG:28992</TilingParam>
</fmc:TilingLayer>
......
</fmc:Map>
De width en height hoeven niet ingevuld te worden omdat deze al
default op 256 staan.
In de tilinglayer worden wat WMS parameters toegevoegd zoals:
-
De gewenste layers
-
Service WMS
-
Versie van de Service
-
Request GetMap
-
De Styles
-
De SRS
Om het WMS-c tilen te optimalizeren kan er in flamingo voor worden
gezorgd dat er vaste resoluties worden gebruikt voor het inzoomen en
uitzoomen. Als dit gelijk wordt getrokken met de geserveerde
resoluties van de zojuist ingevulde tilling layer wordt de client
cache optimaal gebruikt.
Het instellen van vaste zoomlevels kan
door aan het Map component een 'minscale' en 'zoomscalefactor' mee te
geven. Voor ons voorbeeld zal dit inhouden dat we de minimale
gedefineerde resolutie van de service moeten gebruiken als 'minscale'
(0.0023543834686279297) en als zoomscalefactor de factor waarmee we
de vorige zoomlevel kunnen berekenen. In het voorbeeld zou de
zoomscalefactor 2 moeten zijn. Want 2 x de resolutie van zoomlevel N
= de resolutie van zoomlevel N-1. (2 x 0.0023543834686279297 =
0.0047087669372558594).