How to cache map services
You can create a cache of a map service in ArcPad for use when you are offline. Esri published map services from ArcGIS Online, or your own map services published on ArcGIS Server can be cached as long as the map service:
- uses the WGS 1984 Web Mercator Auxiliary Sphere projection
- has a tile cache on the server that includes Level 0 (L0) representing the world extent
- is shared publicly
Prepare an ArcGIS Server map service for caching in ArcPad
ArcGIS Online already has map services that meet the above criteria and are ready for use in ArcPad. When using ArcGIS for Server, you must first prepare the service.
- Open ArcMap.
- Open your map document that contains the data to be published as a map service.
- Temporarily add a basemap service from ArcGIS Online.
The purpose for adding this basemap, is to set the full map extent before publishing. A good way to ensure that your map uses WGS 1984 Web Mercator is to add the basemap first, then add your data to the map.
- Once the basemap is added into the table of contents, right-click on it and choose Zoom To Layer. This will zoom your map extents out to the world level.
- Remove the ArcGIS Online map service from ArcMap.
- Save the map document.
- On the File menu choose Share As, then choose Service.
Choose to publish the service, nominate the ArcGIS Server and service name, and proceed to the Service Editor dialog.
- Browse to the Caching tab and choose to Draw this map service using tiles from a cache and ensure that the ArcGIS Online / Bing Maps / Google Maps tiling scheme is being used. Choose the tile levels, starting from L0.
- Browse to the Caching Advanced Settings tab and choose JPEG for the tile format.
- Click on Advanced and ensure that Allow clients to cache tiles locally is enabled.
- Click OK.
- Proceed to publishing the service and building the tiles.
Depending on your ArcGIS Server configuration, you may have to explicitly set the service to be shared publically. To confirm that your service is public, open the ArcGIS Server Manager web page and on the Manage Services tab, click the Sharing Properties icon along-side your service. In the Sharing Properties dialog, check the Everyone (Public) check-box, and click Save.
Create a cache from a map service in ArcPad
- Open ArcPad.
- Choose the tool Add Data From Server.
- In the URL drop-down menu choose http://services.arcgisonline.com for an ArcGIS Online map service, or enter the address of your own server, and click the Refresh button.
- From the list select a map service, for example World_Imagery (MapServer).
At this point, if you were to browse to C:\Users\[UserProfile]\Documents, you will see a World_Imagery.nmf file and a corresponding hidden folder, called World_Imagery. This folder stores the actual tiles being downloaded organised in folders representing each level, for example L0, L1, L2.
- Click OK.
The basemap will display in ArcPad. If you have no other data in your map, the full map extent will appear. In the tile folder you will typically see L0 and L1 tiles. If you already have data in your map, perhaps features in your local area, only tiles in your map vicinity will download. For example, if you zoom to an extent at which L7 tiles are expected, you will typically see L7 and perhaps L6 tiles in the tile folder. It is exponentially quicker to download the tiles of a higher level, hence these may display before the lower level (yet expected) tiles appear.
- Proceed to zoom in to generate the remaining tiles for your required area in the tile folder.
ArcPad honors the tiling scheme of ArcGIS Online/Bing Maps/Google Maps, which has a total of 20 levels ranging from L0 to L19. You will always have L0 and any number of levels up to L19.
Any tiles that have been download will remain on your device. If you then choose to use this map service in an offline environment, it is recommended that you uncheck the Default to Automatic Refresh check-box on the Server tab of the Options dialog. This will mean that when you pan or zoom to an area that you do not have a tile for, ArcPad will not automatically attempt to connect to the service to refresh the tiles. Only the tiles that you already have cached will be displayed.