ArcGIS Server lets you create cached map services. These can be consumed by various applications (ArcGIS Desktop, web apps, etc) I would like to get an idea on which areas of my cache are getting hit the most. I would like to visualise these results using a heat map overlaid onto the same cached map. I was thinking of utilising something like the HeatMapsAPI and one of the APIs provided by ESRI (Javascript API should be sufficient)

I know the cached maps might be slightly changing at v10 of ArcGIS Server, but im trying to think of the best way of determining which tiles get requested the most without putting a significant load on either ArcGIS Server or the web server (IIS).

I was originally thinking looking at the actual cache directory under the arcgiscache folder, and perhaps hooking into the Date Accessed attribute (but have little idea on how to actually implement this).

I would like to hear from anyone who has experience with ArcGIS Server, on if they have any suggestions on how to do this?

  • How do I go about getting this moved to the GIS site?
    – jakc
    Dec 27 '10 at 10:14

The company I work for (Latitude Geographics) makes a product called Geocortex Optimizer that can do this for you.

It analyzes both your ArcGIS Server logs and your IIS logs to determine what parts of your maps are being requested:

Sample Heat Map

That's the results of some stress testing we did on it, so it's not as representative of the final result. (Normally you only get really "hot" zones over urban centers)

If you want more information, use the "Request a demo" function on our web site.


Another method is to build something into the client which records the usage. (This is what the HeatMapAPI is basically doing.)

Overly simplified: Record the extents or user clicks, or tiles into a database. Then create a ArcGISServer service that renders from that database. Add this as a layer to the map.

You could also try using the HeatMapsAPI service also: http://www.heatmapapi.com/HeatmapGenerate2WS.asmx. They have examples for server-side clients. From the looks of the service, I suspect it could be utilized from a client-side client also.


You might be able to use your web server log to find out which images were requested. It's not ideal since you would have to "backtrack" from the file name and directory to determine where the user viewed, but you'll have access to the "Level" they viewed (since it's part of the folder structure) in addition to the image file names requested.

Once you've built up a decent amount of information from the log, you could look at the images most frequently accessed (i.e. physically view them) to determine where the requests are being made.


Although not a direct answer for this Question, perfHeatMap is a great tool for understanding which parts of your dynamic map services render the slowest, visualising the output as a heatmap.

This tool samples a defined geographic area of interest at defined scales by performing REST exportMap operations against a map service. The resulting feature class may be displayed via ArcMap with a graduated color scheme on the response time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.