Map service log codes

Release 9.3 E-mail This Topic Printable Version Give Us Feedback

This topic lists codes for log messages that you'll see when working with map services. Each list of codes is followed by one or more examples showing how a log file would look with some of the messages.

This topic has two main parts:

MapServer messages

This following table lists log messages generated by ArcGIS Server map services and explains some of their common causes. Detailed log messages range from code 10000 - 10799 while errors and warnings range from 10800 - 10999.

Code number Text Comments
10000 GetDocumentInfo has started. Provides a set of map service properties that can be used to describe the general content of the service.
10001 GetDocumentInfo has completed. Use this code to determine how long it takes this method to process.
10002 GetMapCount has started. Returns the number of maps (data frames) in a map service.
10003 GetMapCount has completed. Use this code to determine how long it takes this method to process.
10004 GetMapName has started. Returns the name of the map (data frame) as indicated by the index value provided.
10005 GetMapName has completed. Use this code to determine how long it takes this method to process.
10006 GetDefaultMapName has started. Name of the active map (data frame) in a map service.
10007 GetDefaultMapName has completed. Use this code to determine how long it takes this method to process.
10008 GetServerInfo has started. Returns information about the present state of a map (data frame).
10009 GetServerInfo has completed. Use this code to determine how long it takes this method to process.
10010 ExportMapImage has started. Generates a dynamic map image from a data frame (map) in an ArcGIS Server map service.
10011 ExportMapImage has completed. Use this code to determine how long it takes this method to process.
10012 ExportScaleBar has started. Generates a scale bar image for a data frame (map) in an ArcGIS Server map service.
10013 ExportScaleBar has completed. Use this code to determine how long it takes this method to process.
10014 Find has started. Searches the attributes of one or more layers in a data frame, in a map service for a given search string.
10015 Find has completed. Use this code to determine how long it takes this method to process.
10016 Identify has started. Returns map features and their attribute values based on a spatial search.
10017 Identify has completed. Use this code to determine how long it takes this method to process.
10018 QueryFeatureCount has started. Returns the number of the features that meet the query filter selection criteria for the specified layer id.
10019 QueryFeatureCount has completed. Use this code to determine how long it takes this method to process.
10020 QueryFeatureIDs has started. Returns a set of feature ids that meet the query filter selection criteria for the specified layer id.
10021 QueryFeatureIDs has completed. Use this code to determine how long it takes this method to process.
10022 QueryFeatureData has started. Returns a record set of features (geometry and attributes) that meet the query filter selection criteria for the specified layer id.
10023 QueryFeatureData has completed. Use this code to determine how long it takes this method to process.
10024 QueryFeatureCount2 has started. Returns the count of the features that meet the query filter selection criteria for the specified layer description.
10025 QueryFeatureCount2 has completed. Use this code to determine how long it takes this method to process.
10026 QueryFeatureIDs2 has started. Returns the IDs of the features that meet the query filter selection criteria for the specified layer description.
10027 QueryFeatureIDs2 has completed. Use this code to determine how long it takes this method to process.
10028 QueryFeatureData2 has started. Returns a record set of features that meet the query filter selection criteria for the specified layer description.
10029 QueryFeatureData2 has completed. Use this code to determine how long it takes this method to process.
10030 QueryHyperlinks has started. Returns feature geometry and associated hyperlink url for visible layers within a defined map extent.
10031 QueryHyperlinks has completed. Use this code to determine how long it takes this method to process.
10032 ComputeScale has started. Calculates the scale of the specified map (data frame) at the given map extent for an image with the given size.
10033 ComputeScale has completed. Use this code to determine how long it takes this method to process.
10034 ComputeDistance has started. Calculate the distance between two points in a map (data frame).
10035 ComputeDistance has completed. Use this code to determine how long it takes this method to process.
10036 ToMapPoints has started. Converts points from screen coordinates to map coordinates.
10037 ToMapPoints has completed. Use this code to determine how long it takes this method to process.
10038 FromMapPoints has started. Converts map coordinates to screen coordinates.
10039 FromMapPoints has completed. Use this code to determine how long it takes this method to process.
10040 GetLegendInfo has started. Returns legend information, such as layer name, group heading, classification labels and symbol swatches, for layers in a map.
10041 GetLegendInfo has completed. Use this code to determine how long it takes this method to process.
10042 GetSQLSyntaxInfo has started. Returns SQL syntax information for the specified layer.
10043 GetSQLSyntaxInfo has completed. Use this code to determine how long it takes this method to process.
10044 GetSupportedImageReturnTypes has started. Returns the supported formats for retrieving images generated by a map service.
10045 GetSupportedImageReturnTypes has completed. Use this code to determine how long it takes this method to process.
10046 IsFixedScaleMap has started. Determines if a map (data frame) has a cache. The cache may be a single fused map or a layer cache.
10047 IsFixedScaleMap has completed. Use this code to determine how long it takes this method to process.
10048 HasSingleFusedMapCache has started. Determines if a map (data frame) has fused cache. Each map in a map service can only have one fused cache.
10049 HasSingleFusedMapCache has completed. Use this code to determine how long it takes this method to process.
10050 GetTileCacheInfo has started. Get cache configuration properties for a given map.
10051 GetTileCacheInfo has completed. Use this code to determine how long it takes this method to process.
10052 GetTileImageInfo has started. Get information about the image format of the cache tiles.
10053 GetTileImageInfo has completed. Use this code to determine how long it takes this method to process.
10054 GetMapTile has started. Returns the image tile from a fused map cache for a specific location.
10055 GetMapTile has completed. Use this code to determine how long it takes this method to process.
10056 HasLayerCache has started. Determines if a given layer in a map (data frame) has a layer cache.
10057 HasLayerCache has completed. Use this code to determine how long it takes this method to process.
10058 GetLayerTile has started. Returns the image tile from a layer cache for a specific location.
10059 GetLayerTile has completed. Use this code to determine how long it takes this method to process.
10060 GetVirtualCacheDirectory has started. Gets the virtual directory containing the cache tiles for a given layer within a map (data frame).
10061 GetVirtualCacheDirectory has completed. Use this code to determine how long it takes this method to process.
10062 GetCacheName has started. Gets the cache name for a given layer within a map (data frame).
10063 GetCacheName has completed. Use this code to determine how long it takes this method to process.
10064 GetCacheDescriptionInfo has started. Gets the cache description information for a given map. Includes cache control info, tile cache info, tile image info, and cache type info.
10065 GetCacheDescriptionInfo has completed. Use this code to determine how long it takes this method to process.
10066 GetCacheControlInfo has started. Gets the cache control information for a given map. Primarily used to determine if client caching is allowed.
10067 GetCacheControlInfo has completed. Use this code to determine how long it takes this method to process.
10068 GetServiceConfigurationInfo has started. Returns a set of name-value pairs that contain information on map service configuration restrictions.
10069 GetServiceConfigurationInfo has completed. Use this code to determine how long it takes this method to process.
10070 ExportLayout has started. Generates an image of the layout, based on the given page description object, and writes the image to a specified file on disk.
10071 ExportLayout has completed. Use this code to determine how long it takes this method to process.
10072 ExportLegend has started. Exports a legend to an image file. Not available through internet connection to map service.
10073 ExportLegend has completed. Use this code to determine how long it takes this method to process.
10074 ExportNorthArrow has started. Exports a north arrow to an image file. Not available through internet connection to map service.
10075 ExportNorthArrow has completed. Use this code to determine how long it takes this method to process.
10076 FromPagePoints has started. Converts a page coordinate to a screen location. Not available through internet connection to map service.
10077 FromPagePoints has completed. Use this code to determine how long it takes this method to process.
10078 ToPagePoints has started. Converts a screen location to a page coordinate. Not available through internet connection to map service.
10079 ToPagePoints has completed. Use this code to determine how long it takes this method to process.
10080 ApplyMapDescription has started. Applies the current state of the map description to the map server object. Not available through internet connection to map service.
10081 ApplyMapDescription has completed. Use this code to determine how long it takes this method to process.
10082 RefreshServerObjects has started. Updates the server info based on the current state of the underlying fine-grained objects. Not available through internet connection to map service.
10083 RefreshServerObjects has completed. Use this code to determine how long it takes this method to process.
10084 Find for layer <layer name> has started. Searches the attributes for a specific layer in a data frame, in a map service for a given search string.
10085 Find for layer <layer name> has completed. Use this code to determine how long it takes this method to process.
10086 Identify for layer <layer name> has started. Returns map features and their attribute values based on a spatial search for a specific layer.
10087 Identify for layer <layer name> has completed. Use this code to determine how long it takes this method to process.
10088 QueryHyperlinks for layer <layer name> has started. Returns feature geometry and associated hyperlink url for a specific layer within a defined map extent.
10089 QueryHyperlinks for layer <layer name> has completed. Use this code to determine how long it takes this method to process.
10090 GetLegendInfo for layer <layer name> has started. Returns legend information, such as layer name, group heading, classification labels and symbol swatches, for a specific layer in a map.
10091 GetLegendInfo for layer <layer name> has completed. Use this code to determine how long it takes this method to process.
10092 MapReaderOpen has started. Opens an mxd or pmf file stored at the specified path.
10093 MapReaderOpen has completed. Use this code to determine how long it takes this method to process.
10094 Preparation for method: <method name> has started. Use this code to determine how long it takes this method to process.
10095 Preparation for method: <method name> has completed. Use this code to determine how long it takes this method to process.
10096 QueryOperation_Start This message is used for QueryFeatureData and QueryFeatureData2.
10097 QueryOperation_End Use this code to determine how long it takes this method to process.
10098 ImageGeneration_Started This is the created of the image file by the map service.
10099 ImageGeneration_End Use this code to determine how long it takes this method to process.
10800 MapServerFailed A number of errors may occur during the MapServer:Connect method. Details of the specific error should be written within the text of the message.
10801 The layer <layer name> in Map: <map name> is invalid. Would occur when there is layer with a broken link in the map being served. The map should be checked for layers having broken links to their data. These should be repaired and the map service refreshed after the repair.
10802 InvalidLicense
10803 Unsupported request name
10804 The requested capability is not supported. These are the capabilities set by the ArcGIS Server administrator.
10805 Invalid or Invisible field in SubField of the QueryFilter This message results when the QueryFilter in a QueryFeatureData or QueryFeatureData2 contains and invalid field. An invalid field can be either a field that is marked as not visible in the original map document being served or by specifying a field in the query that does not exist in the map service.
10806 Service is Disconnected From Data This warning would occur when attempting to perform one of the following methods on a map service layer that is not connected to its data source: Find, Identify, QueryFeatureCount, QueryFeatureCount2, QueryFeatureIds, QueryFeatureIds2, QueryFeatureData, QueryFeatureData2, QueryHyperlinks, GetLegendInfo and GetSQLSyntaxinfo.
10807 The document contains secure (password-protected) layers. Maps containing secure layers cannot be served. In order to successfully serve the map, layers requiring a password must be removed from the map.
10808 File <file name> is invalid. File <file name> does not exist.Access to file <file name> is denied. In order to successfully serve a map document the MXD (map document) must be valid and accessible to all appropriate ArcGIS Server SOC accounts. Something may have corrupted the file and the MXD may need to be recreated. The permissions to the MXD file and the directory it resides in should also be checked.
10809 PMF File <file name> is only readable by the ArcReader application. PMFs (Published Map File) can be configured such that only ArcReader can open the document. PMFs configured in this way cannot be served. In order to serve such a map, a new PMF will need to be authored such that applications other than ArcReader can open the PMF.
10810 This PMF cannot be served because the following functionality in it has been disabled: <name of functionality> PMFs (Published Map File) can be configured such that the PMF restricts specified functionality. This functionality can include: export, find, identify, to change views, to access hyperlinks, to change layer visibility, measure, query, query value, and to view the TOC. Whenever functionality has been disabled in the publishing a PMF, the PMF cannot be served. In order to serve such a map, a new PMF will need to be authored such that no functionality is disabled.
10811 PMF File <file name> is password protected and cannot be used for a server. PMFs (Published Map File) that are password protected cannot be served. In order to serve the map a new PMF will need to be authored without password protection.
10812 PMF File <file name> has timed out. PMFs (Published Map File) can be authored with a timeout option. Once the date of the timeout has been exceeded the PMF cannot be opened and a map service based on such a PMF can no longer be served.
10813 Unable to read the specified PMF document. In order to successfully serve a PMF (Published Map File), the PMF must be valid and accessible to all appropriate ArcGIS Server SOC accounts. The PMF may need to be recreated. The permissions to the PMF file and the directory it resides in should also be checked.
10814 Cannot open PMF file <file name>. Probable cause: The PMF file is inaccessible to Server. In order to successfully serve a PMF (Published Map File), the PMF must be valid and accessible to all appropriate ArcGIS Server SOC accounts. The PMF may need to be recreated. The permissions to the PMF file and the directory it resides in should also be checked.
10815 PMF File <file name> contains a Globe, and cannot be opened by the MapServer. PMFs (Published Map File) can contain globes. Such PMFs cannot be used to author a map service. In order to create a map service the globe must be removed from the map and the PMF republished.
10816 PMF Document <file name> cannot be opened. In order to successfully serve a PMF (Published Map File), the PMF must be valid and accessible to all appropriate ArcGIS Server SOC accounts. The PMF may need to be recreated. The permissions to the PMF file and the directory it resides in should also be checked.
10817 PMFInvalidFileType In order to successfully serve a PMF (Published Map File), the PMF must be valid and accessible to all appropriate ArcGIS Server SOC accounts. The PMF may need to be recreated. The permissions to the PMF file and the directory it resides in should also be checked.
10818 PMFUnknownError
10819 MissingParameter A request made to the map service is missing a required parameter.
10820 OutputDirectoryNotFound The Output directory is where ArcGIS server creates temporary files for the map service. This directory is specified by the ArcGIS Server Administrator when publishing a map service and is part of the map service configuration. This directory must exist and be accessible to the map service SOC account. Check the existence and the accessibility of this directory.
10821 OutputDirectoryAccessDenied The Output directory is where ArcGIS server creates temporary files for the map service. This directory is specified by the ArcGIS Server Administrator when publishing a map service and is part of the map service configuration. This directory must exist and be accessible to the map service SOC account. Check the existence and the accessibility of this directory.
10822 PropertyFilePathUndefined This error occurs when MapServer cannot find the property for FilePath in the propertyset.
10823 IsCacheMissing IsCached is a map service configuration indicating if the map service has a cache. Check the configuration file to make sure this setting is present and is set appropriately.
10824 CacheOnDemandMissing CacheOnDemandMissing is a map service configuration indicating if the map service provides on demand caching. Check the configuration file to make sure this setting is present and is set appropriately.
10825 IgnoreCacheMissing IgnoreCacheMissing is a map service configuration indicating if the map service is to ignore an existing cache. Check the configuration file to make sure this setting is present and is set appropriately.
10826 ClientCachingAllowedMissing ClientCachingAllowedMissing is a map service configuration. Check the configuration file to make sure this setting is present and is set appropriately.
10827 MapServer::OnStart() failed: can't create temp directory name. MapServer create a directory for each map service underneath the arcgisoutput directory. These directories are used for WMS files if the WMS capability is enabled for the service. This error may occur if the SOC account cannot create the directory. Make sure that the SOC account has proper permission to the arcgisoutput directory.
10828 MapServer::OnStop() failed: can't create temp directory name. MapServer create a directory for each map service underneath the arcgisoutput directory. These directories are used for WMS files if the WMS capability is enabled for the service. This error may occur if the SOC account cannot create the directory. Make sure that the SOC account has proper permission to the arcgisoutput directory.
10829 Invalid service configuration. A service disconnected from data cannot ignore cache. A map service disconnected from its data needs to use a cache. In cases where the map service is disconnected from its data the property IgnoreCache must be false.
10830 Invalid service configuration. A service cannot be in Cache On Demand mode and disconnected from the data. A map service using Cache on Demand cannot be disconnected from its data.
10831 Invalid service configuration. A service cannot be in Cache On Demand mode and ignore cache. A map service using Cache on Demand needs to use a cache. When a map service is using Cache on Demand the property IgnoreCache must be false.
10832 MapServer construction failed. Unable to obtain pointer to IServerEnvironment.
10833 Does not have Server Object administration privileges.
10834 Unable to connect to the cache
10835 The configuration could not be started because the WMS capability requires an assigned output directory. Please assign an output directory to this service.
10836 MapNotFound Many requests require a mapname as a parameter. This error occurs when the value of mapname in a MapServer request does match a valid, available map service name.
10837 General Geodatabase error There are a number of things that can cause an error within the Geodatabase. This Map Server error wraps any Geodatabase error in a single Map Server error code.
10838 No Layer found with ID: <ID number> LayerID suppied was incorrect.

Example

This example explains error messages you might see if you sent a query to a map service using a non-existent field name.

Method Message Elapsed Code
MapServer.QueryFeatureData QueryFeatureData has started. 10022
MapServer.QueryFeatureData Preparation for method: QueryFeatureData has started. 10094
MapServer.QueryFeatureData Preparation for method: QueryFeatureData has completed. 0.00111 10095
MapServer.QueryFeatureData Query Operation for method: QueryFeatureData has started. 10096
GeoDatabase Error :A column was specified that does not exist. A column was specified that does not exist 10837
MapServer.QueryFeatureData QueryFeatureData has completed. 0.01171 10023
MapServer.QueryFeatureData Method failed.HRESULT = 0x80040358 : This is a FACILITY_ITF error that is specific to the interface that returned this error. See the documentation of the interface that returned this error for information about this HRESULT. 0.0138 100005

Two errors are returned. One, using code 10837 is generated by MapServer. Code 10837 is a generic code used by MapServer for all errors generated by the geodatabase. The text of the message will be "GeoDatabase Error :" followed whatever text the geodatabase provides. In this example the geodatabase generated text is "A column was specified that does not exist."

Another error message, code 100005, is also reported for the same issue. This message is system generated message. This redundancy is expected.

Carto messages

When logging is set at Info:Detailed map services provide messages from two sources: methods from the MapServer and methods from Carto. Carto is the package of objects that actually draws the map. The Carto messages refer to actual sub-processes that occur within a map server context when a client calls ExportMapImage.

Code number Text Comments
103000 Beginning of layer draw: <layer name> The layer draw is part of the geography phase.
103001 End of layer draw: <layer name> Use this code to determine how long it takes a layer to draw.
103002 Beginning of group layer draw: <layer name> The group layer draw is part of the geography phase.
103003 End of group layer draw: <layer name> Use this code to determine how long it takes all the member layers of a group layer to draw.
103004 Beginning of geography phase This is the phase in which the features of individual layers draw. This phase includes executing a query (code 103021) against the layer's data along with the actual drawing of layer features. Also, for layers based on feature classes, a count of feature being drawn is reported (code 103019).
103005 End of geography phase Use this code to determine how long it takes all layers in the map to draw.
103006 Beginning of annotation phase This is the phase in which graphics, labeling and annotation draw.
103007 End of annotation phase Use this code to determine how long it takes graphics, labeling and annotation in the map to draw.
103008 Beginning of selection draw phase This is the phase in which selected features draw.
103009 End of selection draw phase Use this code to determine how long it takes selected features in the map to draw.
103010 Beginning of graphic selection draw phase This is the phase in which selected graphics draw.
103011 End of graphic selection draw phase Use this code to determine how long it takes selected graphics in the map to draw.
103012 Beginning of custom draw phase of the map This is the phase in which custom features or elements draw. This is also known as the "after draw". These features or elements are often generated by extension software. It is important to note that these are not custom layers.
103013 End of custom draw phase of the map Use this code to determine how long it takes in the custom features or elements custom features or elements map to draw.
103014 Beginning of the graphics drawing This is part of the annotation phase.
103015 End of graphics drawing Use this code to determine how long it takes graphics in the map to draw.
103016 Beginning of the labeling This is part of the annotation phase.
103017 End of the labeling Use this code to determine how long it takes labeling in the map to draw.
103018 Labeling Layers: This is the list of layers in the map that are being labeled. Also included is the list of layers that provide barriers to label placement.
103019 Feature count: This is the count of features drawn for a particular layer at a given extent.
103020 Graphic count: This is the count of graphics drawn for a particular layer at a given extent.
103021 Executing query Use this code to determine how long it takes for a layer based on a feature class to query the database when drawing.
103022 Drawing as masking layer Layer being used as masking layer
103800 LayerDrawingError Indicates that a drawing error has occurred.

Example: Connect to a map service (ArcMap client)

This example explains detailed messages you might see when connecting to a map service in ArcMap. The logs have been edited to highlight specific MapServer related messages and to remove Info2 messages.

When ArcMap connects to a map service (HTTP connection) seven requests are made: GetDefaultMapName, GetServerInfo, IsFixedScaleMap, GetSupportedImageReturnTypes and GetLegendInfo. The first request is GetDefaultMapName.

Method Message Elapsed Code
MapServer.GetDefaultMapName GetDefaultMapName has started. 10006
MapServer.GetDefaultMapName GetDefaultMapName has completed. 0.00032 10007

GetDefaultMapName returns the name of the active map in the map service. In this example it took MapServer 0.00032 seconds to complete the GetDefaultMapName request. The next request is GetServerInfo.

Method Message Elapsed Code
MapServer.GetServerInfo GetServerInfo has started. 10008
MapServer.GetServerInfo GetServerInfo has completed. 0.06732 10009

GetServerInfo returns information about the present state of the map, such as which layers are visible (turned on). In this example it took MapServer 0.06732 seconds to complete this request. Next is GetCacheDescriptionInfo.

Method Message Elapsed Code
MapServer.GetCacheDescriptionInfo GetCacheDescriptionInfo has started. 10064
MapServer.GetCacheDescriptionInfo GetCacheDescriptionInfo has completed. 0.0003 10065

GetCacheDescriptionInfo returns cache description information for a given map. This includes cache control info, tile cache info, tile image info, and cache type info. In this example it took MapServer 0.0003 seconds to complete this request. After making a GetCacheDescriptionInfo request, ArcMap makes a HasSingleFusedMapCache request.

Method Message Elapsed Code
MapServer.HasSingleFusedMapCache HasSingleFusedMapCache has started. 10048
MapServer.HasSingleFusedMapCache HasSingleFusedMapCache has completed. 0.0003 10049

HasSingleFusedMapCache determines if the map service has a fused cache. In this example it took MapServer 0.0003 seconds to complete this request. The next request is IsFixedScaleMap.

Method Message Elapsed Code
MapServer.IsFixedScaleMap IsFixedScaleMap has started. 10046
MapServer.IsFixedScaleMap IsFixedScaleMap has completed. 0.00032 10047

IsFixedScaleMap determines if the map service has a cache. This could be either a fused or multilayer cache. In this example it took MapServer 0.00032 seconds to complete this request. The next request is GetSupportedImageReturnTypes.

Method Message Elapsed Code
MapServer.GetSupportedImageReturnTypes GetSupportedImageReturnTypes has started. 10044
MapServer.GetSupportedImageReturnTypes GetSupportedImageReturnTypes has completed. 0.0003 10045

GetSupportedImageReturnTypes provides the list of supported image formats. In this example it took MapServer 0.00032 seconds to complete this request. The final request is GetLegendInfo.

Method Message Elapsed Code
MapServer.GetLegendInfo GetLegendInfo has started. 10040
MapServer.GetLegendInfo GetLegendInfo on layer 'Layer #1' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Layer #1' has completed. 0.00206 10091
MapServer.GetLegendInfo GetLegendInfo on layer 'Layer #2' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Layer #2' has completed. 0.00087 10091
MapServer.GetLegendInfo GetLegendInfo on layer 'Group Layer member #1' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Group Layer member #1' has completed. 0.001 10091
MapServer.GetLegendInfo GetLegendInfo on layer 'Group Layer member #2' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Group Layer member #2' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Group Layer member #2' has completed. 0.00086 10091
MapServer.GetLegendInfo GetLegendInfo on layer 'Raster layer' has started. 10090
MapServer.GetLegendInfo GetLegendInfo on layer 'Raster layer' has completed. 0.00087 10091
MapServer.GetLegendInfo GetLegendInfo has completed. 0.01252 10041

GetLegendInfo returns the legend information for each layer. Each layer that supports a legend has a start and a completed messaged logged with the time it takes to package the legend information for that layer.

Example: ExportMapImage

This example explains detailed log messages that you might see when you request a dynamic map image from a map service using the ExportMapImage method. The logs have been edited to highlight specific MapServer related messages and to remove Info2 messages.

There are nine parts to the ExportMapImage process. In order, these include:

  1. Receipt of request
  2. Preparation of the map
  3. The Geography phase - drawing of each map layer
  4. The Annotation phase - drawing of graphics, labeling and annotation
  5. Selection Drawing
  6. Graphic Selection
  7. After draw - drawing of custom features
  8. Image generation
  9. Process completed and result sent

After the ExportMapImage request is received by the server, the first step is to prepare the map.

Method Message Elapsed Code
MapServer.ExportMapImage ExportMapImage has started. 10010
MapServer.ExportMapImage Preparation for method: ExportMapImage has started. 10094
MapServer.ExportMapImage Preparation for method: ExportMapImage has completed. 0.14895 10095

Preparation includes applying the MapDescription to the map and setting up the map to draw. This includes applying any necessary geotransformations or applying a selection to any of the layers. In this example the preparation took 0.14895 seconds. The next step is to draw the map. Drawing the map encompasses a number of phases.

The first phase is the geography phase.

Method Message Elapsed Code
Map.Draw Beginning of geography phase. 103004

This is the phase in which the features of individual layers draw. Here is an example for a layer named "Layer #3".

Method Message Elapsed Code
Map.Draw Beginning of layer draw: Layer #3 103000
FeatureLayer.Draw Executing query. 0.00332 103021
UniqueValueRenderer.Draw Feature count: 51 103019
Map.Draw End of layer draw: Layer #3 0.10421 103001

Layer #3 is a feature layer. Therefore, a query against the database is executed (code 103021). The elapsed time for this query is 0.00332 seconds. This time is included in the elapsed time for the entire draw (code 103001). Do not add this time to the "End of layer draw (code 103001) time. The count of features being drawn, that is, the number of features within the specified map extent, for this layer is reported as 51. Also, notice that the type of renderer is reported within the method. In this example, Layer #3 is using a unique value renderer.

When the layer is a non feature layer only the Beginning of layer draw (code 103000) and End of layer draw (code 103001) are reported. Here is an example for a raster layer.

Method Message Elapsed Code
Map.Draw Beginning of layer draw: Raster layer 103000
Map.Draw End of layer draw: Raster layer 0.64353 103001

Below is an example of the log messages for a group layer along with the message indicating the end of the geography phase (code 103001).

Method Message Elapsed Code
Map.Draw Beginning of group layer draw: Group Layer 103002
GroupLayer.Draw Beginning of Layer Draw: Group Layer member #2 103000
FeatureLayer.Draw Executing query. 0.02128 103021
SimpleRenderer.Draw Feature count: 168 103019
GroupLayer.Draw End of Layer Draw: Group Layer member #2 0.02934 103001
GroupLayer.Draw Beginning of Layer Draw: Group Layer member #1 103000
FeatureLayer.Draw Executing query. 0.00898 103021
SimpleRenderer.Draw Feature count: 13 103019
GroupLayer.Draw End of Layer Draw: Group Layer member #1 0.01678 103001
Map.Draw End of group layer draw: Group Layer 0.04732 103003
Map.Draw End of geography phase. 1.01074 103005

In this example the group layer, "Group Layer" ahs two member layers: "Group Layer member #1" and "Group Layer member #2". Each member layer is drawn and messages are logged based on layer type as previously described. Notice that the end of group layer draw has a code (103003) different than the end of layer code (103001). The elapsed time for the group layer draw is the sum of the elapsed time of all the member layers within the group layer.

The next phase in drawing the map is the annotation phase. This phase includes drawing graphics, annotations and the labeling of map features.

Method Message Elapsed Code
Map.Draw Beginning of annotation phase. 103006

If there are graphics within the map extent being drawn a count will be reported (code 103020).

Method Message Elapsed Code
Map.Draw Beginning of the graphics drawing. 103014
CompositeGraphicsLayer.Draw Graphic count: 3. 103020
Map.Draw End of the graphics drawing. 0.00128 103015

In the example above there are 3 graphics within the map extent being drawn and it takes 0.00128 seconds to processes this. It is important to note that even if there are no graphics in the map there will still be a minimal amount of processing that the software will need to do to cycle through each phase.

Next in the annotation phase is "on-the-fly" feature labeling. Any number of layers can be labeled with any number of placement rules defined. Every time a map extent changes feature are labeled anew. This requires the labeling engine to recalculate label positions based on the rules set in the served map document. Each layer in the map that is to be labeled is listed (code 103018) along with a list of layers being used as barriers to label placement.

Method Message Elapsed Code
Map.Draw Beginning of the labeling. 103016
Map.Draw Layers being labeled: Group Layer member #1,Layer #1. Barriers in labeling. 103018
Map.Draw End of the labeling. 0.20395 103017
Map.Draw End of annotation phase. 0.21024 103007

In this example there are two layers being labeled: "Group Layer member #1" and "Layer #1". None of the layers are used as barriers.

The last three phases are the selection draw phase, the graphics selection draw phase and the custom draw phase. The selection draw refers to any map features that are selected. In the example below there are six features selected. In most cases there will be very little for the map server to process for any of these three phases.

Method Message Elapsed Code
Map.Draw Beginning of the selection draw phase. 103008
Map.Draw End of the selection draw phase. 0.20223 103009
Map.Draw Beginning of graphics selection draw phase. 103010
Map.Draw End of graphics selection draw phase. 0.00029 103011
Map.Draw Beginning of the custom draw phase of the map. 103012
Map.Draw End of the custom draw phase of the map. 0.00028 103013

The final step in the ExportMapImage process is the actual image generation.

Method Message Elapsed Code
MapServer.ExportMapImage Image Generation for method: ExportMapImage has started. 10098
MapServer.ExportMapImage Image Generation for method: ExportMapImage has completed. 0.25913 10099
MapServer.ExportMapImage ExportMapImage has completed. 1.84224 10011

In this example it took 0.25913 seconds for the image (in this example a PNG) to be generated. The overall ExportMapImage took 1.84224 seconds to process.

It is important to note that there will be a difference how long it takes a MapServer request to process and how long it takes a binary request to be processed for the same request. This is difference is the amount of time it takes for the server to write the response to the stream.

Example: QueryFeatureData

This example shows detailed log messages that you might see when you query data in a map service using the QueryFeatureData method. The logs have been edited to highlight specific MapServer related messages and to remove Info2 messages.

Method Message Elapsed Code
MapServer.QueryFeatureData QueryFeatureData has started. 10022
MapServer.QueryFeatureData Preparation for method: QueryFeatureData has started. 10094
MapServer.QueryFeatureData Preparation for method: QueryFeatureData has completed. 0.00111 10095
MapServer.QueryFeatureData Query Operation for method: QueryFeatureData has started. 10096
MapServer.QueryFeatureData Query Operation for method: QueryFeatureData has completed. 0.95778 10097
MapServer.QueryFeatureData QueryFeatureData has completed. 0.96118 10023