ArcGIS Server 10.1 Services - the fundamentals

More than one map service?

A colleague came to me one day and asked about map services, he was interested in how a dynamic service would perform against a tiled image map service and how snapping and other editing type functions would perform. So far so good, however, as we chatted it became obvious that there was some confusion over the different service types available with one name freely being interchanged with another name. For example, he asked about an image map service. I replied that this was actually two different service types but I knew what he meant! I took out my pad and pen and started to draw a diagram of the various services available. The key thing to remember is that one is trying to share a resource to a client via a service. The service is a means for a client to access a resource. A service cannot exist without a resource, while a resource can exist without a corresponding service. The relationship is one-way. Understanding this should make things easier to understand. 

A resource can be anything you want to share so it might be a map document, a globe, a locator, or a geodatabase connection. Stored on the ArcGIS Server, a service allows shared access to these resources to a number of different clients via HTTP; many of whom might not have any GIS software installed, let alone Esri-based services. The server stores the resource locally (usually), hosts the service providing access to the resource and sends back a result to a client either as an image or a bit of XML. This is all transmitted over HTTP to ensure network independent access and maximum interoperability.

How can I use these services?

The good news is that you can use a simple web browser to connect to most of these services. ArcGIS applications, such as ArcGIS Desktop, can also act as clients to GIS services but for most, a relatively up-to-date web browser should be fine. Now after, connecting to a service you have, in most cases, the same level of access to the resource that you would have if the resource were located on your machine. A map service, for example, allows client applications to access the contents of a map document on the server in much the same way that they would if the map were stored locally. So one should be able to see all the user created rendering and labels and annotations in a map document, now on the web.

This chart summarizes the main ArcGIS services that people are familiar with and the resource required for each:

Resource I want to share:

Shared as a service through:

A map document (.mxd) and all its data and rendering.

Map service.

A bunch of rasters on disk and not accessed through a map document.

Image service.

A file geodatabase or an ArcSDE connection (.sde)

Geodata service.

An address locator (.loc).

Geocode service.

There are other services, not as commonly used so they have been omitted for now to improve clarity. There are more details here: 

http://resources.arcgis.com/en/help/main/10.1/#/What_types_of_services_can_you_publish/01540000042s000000/

 

Enabling capabilities

Now, you have published a GIS resource to the server and shared it as a service! However, you also need to enable ‘capabilities’ that define the different methods clients can use via the service. For example, you might enable the Mobile Data Access on a specific map service to allow a user to extract and download data to a mobile device.

Each service has at least one capability available and one that is default (i.e. always ‘on’). It is up to the ArcGIS Server administrator to decide on what capabilities are required and this is driven by the needs of the users. The screenshot below has the Mapping and KML capability enabled for a map service.

What capability?

Some of the more common capabilities for services include the following:

  • KML capability enabled for any map service allowing the content to be consumed inside Google Earth
  • Feature access capability enabled for any map service that provides access to vector features       

Where’s the map service capability for cached tiles?

A common misconception is that a map cache is a capability of the map service. However, due to the specific nature of map tiles; it is a special option available for a map service only and selected separately. By default, a map service serves its content dynamically – that is the map is drawn when requested by a user. Once the map image is created, it then serves it up to a client as an image. Each pan and zoom will generate a new request that is satisfied dynamically. This is ideal when there’s an application that requires real-time display of data or if the data consumed by a map service changes frequently.

Cached map services should be considered if the need for speed is paramount and the underlying data does not change too often.

However, a more detailed discussion of map caching under ArcGIS Server 10.1 is outside the scope of this post. A good explanation of map caching for ArcGIS Server 10.1 and the options can be found here: 

http://resources.arcgis.com/en/help/main/10.1/#/What_is_map_caching/01540000048q000000/ 

Summary

ArcGIS Server takes any GIS resource, such as your local map document or your geodatabase and shares it to a wider audience through a web server using standard interoperable protocols and specifications. There are several types of services each dependent on the different GIS resource type available. Each service has a number of capabilities that can be enabled to allow different levels of functionality and access. A cached map service is not a capability but an alternative to the default, dynamic creation of maps.