Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

There are a couple of requirements that must be met before this can occur though:

  • The client configuration must be setup to utilise fixed scales and they must match those of the ArcGIS server map cache.
  • The users browser must be able to directly connect to ArcGIS server (unless you're using a pre-generated tile cache being served directly via a web server).

If the version of ArcGIS server you're running supports it then the update will work with:

  • Fused and multi-layer map caches
  • Dynamic and pre-generated map caches
  • Compressed and exploded map caches

Configuring the server side map engine

...

A map service with a fused map cache.

Code Block
xmlxml
linenumberstrue
xml
<arcgisws:mapserver id="raster.fused">
	<url>http://arcserver:8399/arcgis/services/AerialPhotography/MapServer</url>
	<format>image/jpg</format>
	<transparent>false</transparent>
	<background>white</background>
	<selection>false</selection>
	<acetate>false</acetate>
</arcgisws:mapserver>

A map service with a multi-layer map cache

Code Block
xmlxml
linenumberstrue
xml
<arcgisws:mapserver id="raster.multilayer">
	<url>http://arcserver:8399/arcgis/services/Water/MapServer</url>
	<format>image/png</format>
	<transparent>true</transparent>
	<selection>false</selection>
	<acetate>false</acetate>
</arcgisws:mapserver>

A map service with no map cache

Code Block
xmlxml
linenumberstrue
xml
<arcgisws:mapserver id="vector">
	<url>http://arcserver:8399/arcgis/services/Main/MapServer</url>
	<format>image/png</format>
	<transparent>true</transparent>
</arcgisws:mapserver>

...

The following sample show how the three map engines would need to be configured in a toc model (this assumes that the vector map engine has three layers, the multilayer two layers and the fused layer always has one, and because we didn't set 'username' to true in the map engine config the layer ids are numeric indexes)

xml
Code Block
xml
linenumberstrue
xml
<toc:model id="sample">
	<mapengine>vector</mapengine>
	<entry label="Roads" layer="0"/>
	<entry label="Properties" layer="1"/>
	<entry label="Suburbs" layer="2"/>
	<entry label="Water Valves" mapengine="raster.multilayer" layer="0"/>
	<entry label="Water Pipes" mapengine="raster.multilayer" layer="1"/>
	<entry label="Aerial Photography" mapengine="raster.fused" layer="0"/>
</toc:model>

...

The configuration for the client would be something similar to

Code Block
xmlxml
linenumberstrue
xml
<client:config id="sample">
	<!-- standard config items appear here -->
	<view id="com.cohga.html.client.map.mapView">
		<!-- standard map view config items appear here -->
		<!-- we must set the scale to match the map caches -->
		<scales>
			<scale>1000</scale>
			<scale>10000</scale>
			<scale>100000</scale>
			<scale>1000000</scale>
		</scales>
		<!-- now add the three map engines -->
		<mapEngine id="raster.fused">
			<options>
				<transitionEffect>resize</transitionEffect>
				<alpha>true</alpha>
			</options>
		</mapEngine>
		<mapEngine id="raster.multilayer"/>
			<options>
				<transitionEffect>resize</transitionEffect>
				<alpha>true</alpha>
			</options>
		</mapEngine>
		<mapEngine id="vector">
			<options>
				<transitionEffect>resize</transitionEffect>
				<alpha>true</alpha>
				<ratio>1.2</ratio>
			</options>
		</mapEngine>
	</view>
</client:config>

...

Sometimes the tile cache will not align exactly with the vector data, this can be corrected by specifying a tileOffset, in either the server map engine or client map engine configs. The tileOffset specifies an x and y shift that should be performed on the tiles before being displayed.
If we wanted to fix the fused map cache in the server configuration then we'd change it to

xml
Code Block
xml
linenumberstrue
xml
<arcgisws:mapserver id="raster.fused">
	<url>http://arcserver:8399/arcgis/services/AerialPhotography/MapServer</url>
	<format>image/jpg</format>
	<transparent>false</transparent>
	<background>white</background>
	<selection>false</selection>
	<acetate>false</acetate>
	<tileOffset x="-15.5" y="6"/>
</arcgisws:mapserver>

to do it in the client we'd change the client config to be

xml
Code Block
xml
linenumberstrue
xml
<mapEngine id="raster.fused">
	<options>
		<transitionEffect>resize</transitionEffect>
		<alpha>true</alpha>
		<tileOffset x="-15.5" y="6"/>
	</options>
</mapEngine>

...

Currently this must all be performed in the client configuration, so for our fused map engine we'd need to change it to something like the following:

Code Block
xmlxml
linenumberstrue
xml
<mapEngine id="raster.fused">
	<url>http://arcserver/arcgiscache/AerialPhotography/Layers/_alllayers</url>
	<options>
		<useArcGISServer>false</useArcGISServer>
		<type>jpg</type>
		<transitionEffect>resize</transitionEffect>
		<alpha>true</alpha>
		<tileOffset x="-15.5" y="6"/>
	</options>
</mapEngine>

...

As part of the process of setting up the client side map tiling the Weave server will set the client map engine type to either 'agstiled' or 'agsrest' (depending upon the type of map cache created in AGS, fused vs. multi layer) UNLESS it's already explicitly set to something. We can take advantage of this to set the map type to 'weave', which is the default if not specified anyway, thereby stopping the alterations from taking place.

xml
Code Block
xml
titleDisabling the use of client side tile caching.
linenumberstrue
xml
<mapEngine id="raster.fused">
	<type>weave</type>
	<options>
		<type>jpg</type>
		<transitionEffect>resize</transitionEffect>
		<alpha>true</alpha>
	</options>
</mapEngine>

...

If you're accessing a remote AGS map engine and the response time from that engine is slow then you can turn on local caching of the tiles so that the Weave server will keep a local copy of each tile that's downloaded, this will improve the response the next time the tile is needed.

xml
Code Block
xml
titleEnabling local caching of tiles
linenumberstrue
xml
<arcgisws:mapserver id="vector">
	<url>http://arcserver:8399/arcgis/services/Main/MapServer</url>
	<format>image/png</format>
	<transparent>true</transparent>
	<cachetiles>true</cachetiles>
</arcgisws:mapserver>

...

Tiles can be set to expire after a certain period if it's believed that the underlying tiles will change over time, this is done by setting a cacheexpiry value to the number of minutes that a tile should be valid for.

Code Block
xmlxml
titleExpiring tiles after 1 week
linenumberstrue
xml
<arcgisws:mapserver id="vector">
	<url>http://arcserver:8399/arcgis/services/Main/MapServer</url>
	<format>image/png</format>
	<transparent>true</transparent>
	<cachetiles>true</cachetiles>
	<cacheexpiry>10800</cacheexpiry>
</arcgisws:mapserver>

...