Tiling ondersteuning voor ArcGis is pas beschikbaar vanaf commit: 668 en zal dus als officiele release in flamingo 3.2.2 beschikbaar zijn.
Een onofficiele 3.2.1_snapshot_668 release is te vinden op:
http://svn.flamingo-mc.org/trac/wiki/DownloadSection
Voorbeeld:
http://documentation.flamingo-mc.org/flamingo_demo/flamingo.html?config=config_tiling_arc.xml
Verzamelen benodigde informatie
Om een ArcGis tiling layer in te
stellen moet je een aantal dingen weten:
-
De url naar de service
-
De resoluties van de verschillende
tiling nivo's als komma gescheiden lijst.
-
De BBox van de service (wat wordt
er gedekt met de getilde service)
-
De tile grote (de grote in aantal
pixels van een enkele tile)
Voor Arcgis zijn al deze parameters te
vinden op de pagina van de mapservice. Bijvoorbeeld:
http://testgisopenbaar2.overijssel.nl/ArcGIS/rest/services/ondergronden/ondergrond_beige/MapServer
Onderaan de
pagina is alle info te vinden onder 'Tile Info:'
1. De url naar
de service.
Meestal
is te tile set te vinden op /tile/ achter de mapserver url. Dus voor
ons voorbeeld:
http://testgisopenbaar2.overijssel.nl/ArcGIS/rest/services/ondergronden/ondergrond_beige/MapServer/tile/
Wil je hier zeker
van zijn doe dan het volgende:
Klik op een
willekeurige 'Start Tile' link op de pagina.

Er wordt dan een
plaatje geopend. De link naar dat plaatje is belangrijk,
bijvoorbeeld:
http://testgisopenbaar2.overijssel.nl/ArcGIS/rest/services/ondergronden/ondergrond_beige/MapServer/tile/0/0/0
Je kan hier x/x/x
(waar x een willekeurig getal is)er afhalen, dan hou je de url naar
de tiling service over dus:
http://testgisopenbaar2.overijssel.nl/ArcGIS/rest/services/ondergronden/ondergrond_beige/MapServer/tile/
2.
De resoluties van de verschillende tiling nivo's als komma gescheiden
lijst.
Met
resolutie wordt bedoelt: Het aantal "Map-Units" (in het geval van
EPSG:28992 dus meters) per pixel.
Op
de "Mapserver" pagina van de service zijn deze per level te
vinden:

Deze
getallen zijn zo groot omdat in het voorbeeld de tiling lagen zijn
ingericht op basis van schalen dus level 0 is bijvoorbeeld 1:600 000.
Dit zorgt er voor dat je geen mooie getallen krijgt bij de resolutie.
In
ons voorbeeld zal de lijst met resoluties dus zijn:
158.750317500635, 145.521124375582, 132.291931250529, 119.062738125476, 105.833545000423, 92.6043518753704, 79.3751587503175, 66.1459656252646, 52.9167725002117, 39.6875793751588, 26.4583862501058, 21.1667090000847, 17.1979510625688, 13.2291931250529, 9.26043518753704, 6.61459656252646, 3.96875793751588, 2.64583862501058, 1.32291931250529, 0.264583862501058, 0.132291931250529
Het is niet nodig om alle resoluties op
te nemen. Je kan ook alleen de gewenste resoluties opnemen in de
lijst. Voor optimaal gebruik moet het wel zo zijn dat de resoluties
die gekozen zijn voorkomen op de pagina.
De resoluties moeten altijd van groot
naar klein worden opgenomen.
Puur technisch zou het handiger zijn om
de tiling nivo's op basis van Resoluties te maken zodat er niet van
die lange getallen worden gevormd.
3. De BBox van
de service.
De
bbox van de service geeft aan wat het gebied is dat gedekt wordt door
deze tiling service. Deze kan worden gevonden op de 'Mapserver'
pagina van ArcGis onder het kopje "Full Extent":

De
bbox form je door "xmin,ymin,xmax,ymax".
Dus
de bbox is in ons voorbeeld is:
"150000,431520,298480,580000"
4.
De tile grote
Ook
de tile grote is te vinden op de "mapserver" pagina:

In
dit voorbeeld is de tile grote in pixels dus 512x512.
Configureren Flamingo-mc
Om
een tiling layer te configureren in Flamingo-mc moet je een stukje
XML toevoegen aan de <Map>:
<fmc:TilingLayer
id="ondergrond" serviceurl="[SERVICEURL]"
resolutions="[RESOLUTIE LIJST]"
serviceenvelope="[BBOX TILING SERVICE]"
type="arcgisrest" tileheight="[TILE HOOGTE]"
tilewidth="[TILE BREEDTE]"></fmc:TilingLayer>
De dik gedrukte
stukken tekst tussen '[' en ']' moeten worden vervangen door de
eerder opgezochte informatie:
[SERVICEURL]
= de url naar de service (punt
1)
[RESOLUTIE
LIJST]= De komma gescheiden
lijst met resoluties (punt 2)
[BBOX
TILING SERVICE] = De bbox van
de service (punt 3)
[TILE
HOOGTE]= De hoogte van een tile
in pixel (punt 4)
[TILE
BREEDTE]= De breedte van een
tile in pixel (punt 4)
In
ons voorbeeld zal het stukje xml er dus als volgt uit komen te zien:
<fmc:TilingLayer
id="ondergrond"
serviceurl="http://testgisopenbaar2.overijssel.nl/ArcGIS/rest/services/ondergronden/ondergrond_beige/MapServer/tile/"
resolutions="158.750317500635,145.521124375582,132.291931250529,119.062738125476,105.833545000423,92.6043518753704,79.3751587503175,66.1459656252646,52.9167725002117,39.6875793751588,26.4583862501058,21.1667090000847,17.1979510625688,13.2291931250529,9.26043518753704,6.61459656252646,3.96875793751588,2.64583862501058,1.32291931250529,0.264583862501058,0.132291931250529"
serviceenvelope="150000,431520,298480,580000"
type="arcgisrest" tileheight="512"
tilewidth="512">
</fmc:TilingLayer>
Het
veld "type" is ook erg belangrijk. Hiermee wordt aangegeven dat
het een ArcGis Map Cache Tiling service is op basis van een REST api.
Optimalizeren
Flamingo
is zo gebouwd dat het default werkt met vrije zoom schalen. Dat wil
zeggen dat je vrij bent om te zomen naar een bepaalde resolutie en
dat die resoluties niet vast liggen. Met de tiling layer is dit ook
mogelijk. Als de door de gebruiker gekozen resolutie tussen 2 tiling
nivo's ligt haalt de tiling layer het meest gedetaileerde nivo van de
2 op en verkleind de tiles (resampling) zodat ze op de goede locatie
komt. Er worden dus ook meer tiles opgehaald dan als je precies op
een aangeboden resolutie de tiles ophaalt.
De
vraag is of je dit moet willen. Om optimaal gebruik te maken van
Tiling wil je juist niet dat de plaatjes groter/kleiner worden
gemaakt maar op de juiste grote worden getoond. Je hebt namelijk niet
voor niks alle nivo's van tiling gedefineerd in de service en de
plaatjes worden minder mooi doordat ze verkleind worden.
Je
kan flamingo zo instellen dat je gebruik maakt van vaste zoom nivo's
zie:
Vaste zoomschalen/ resoluties instellen