Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am working on a ESRI Flex based application that will display data from a Dynamic Map Service. It need to be Dynamic, since the end user should have the option to turn on & off layers. This is possible only with Dynamic Map services & not Tiled map services.

What are some of the steps that can be taken to increase the speed with which tiles are sent to the client by the server?

I am looking at ESRI's Dynamic Maps available on ArcGIS online, and they are quite fast. Any idea on how they get such good performance?

share|improve this question
3  
You can use separate tiled map services for each layer, and then turn each on or off. –  Seth P. Dec 3 '10 at 19:03
    
@Seth: I ended up with the same conclusion as you. With the number of Layers that we are using & expected number of simultaneous Users, separate tiled map services give the best performance. –  Devdatta Tengshe Dec 4 '10 at 5:23
    
We are having the same problem, I've sent an enhancement request to ESRI to get support for parallel execution of the layers in dynamic map services, I think that would boost the performance a lot. –  MathiasWestin Dec 23 '10 at 8:36
add comment

3 Answers 3

up vote 9 down vote accepted

You may have already done this but it's worth mentioning for others that might come along. Spending some time using the Map Service Publishing toolbar in ArcMap can make a world of difference in the performance of a dynamic map service. The Analyze Map tool works well for finding issues that slow down map services. Also, saving and publishing as a map service definition (MSD) rather than an MXD allows for significant performance increases.

Some links:

share|improve this answer
    
While other answers raise valid points, I had already considered those. The Seminar you have linked to, provided me with some information that I was not aware of in addition to all the solutions suggested by others. Hence I'll mark your answer as accepted, since your links provide more points and a wholistic way of solving the Issue. –  Devdatta Tengshe Dec 4 '10 at 5:28
add comment

A few other points to add to DavidF's answer:

  • If you can, make sure to use an optimized (MSD) based service. They do draw faster than a regular (MXD) service, and the process of creating the MSD service will run some analysis on your map which can expose issues that could lead to slow draw times.

  • Use simplified renderers where possible. Avoid complex drawing operations like dithering, color gradients, and raster markers.

  • Use the minimum amount of data that satisfies your business requirements. If you have attributes in your data that will not be used for drawing the map, remove them. Even if you do need to report on the data, you can obtain it as required from the client (although this adds extra programming work)

  • Turn on verbose logging for your map and review the log files to see what ArcGIS Server does when you draw a map. Instructions for configuring verbose logging are on Esri's blogs site. That's for version 9.3, but the config location is the same for ArcGIS 10.

Remember, tuning is a very specific operation that is very subjective and specific to what you are doing; comparing the performance of your own map with itself will be more valuable than comparing your performance to someone else's.

share|improve this answer
    
I have tackled the first three points, but can you shed some more light on 'Verbose logging for the map'? I tried to find this out, but the only links I find are about ArcIMS services. –  Devdatta Tengshe Dec 4 '10 at 5:15
    
I've added a link to Esri's blog about ArcGIS Server logging. –  mwalker Dec 10 '10 at 23:55
    
Thanks for the Link. –  Devdatta Tengshe Dec 11 '10 at 15:26
add comment

I would assume that you would just like for any live web map service, you make your map server 'think' as little as possible. In other words, pre-compute everything that you can.

  1. Put all of your data in the same SRS so there is no projection happening 'on-the-fly'.
  2. Create spatial indexes on your data.
  3. Build generalized overviews of your data and use scale dependency to select the appropriate layer for a particular scale. (e.g. it makes no sense to draw a poly with 10,000 vertices if the output image is only 250 x 250 pixels.)
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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