Optimizing map content for performance
The way you set up your data and how you use it can be optimized to improve performance in ArcMap. Many factors play a role in speed including the format of the data source; the data's location; and the properties you set for the layers, data frames, and layouts. Below are some guidelines for maintaining performance when setting up data and working with the contents of your map.
Setting up your data
Choosing the format in which to store your data is often a balance of many factors including the needs of your organization or users, purpose of the data, size of the data, analysis or data maintenance requirements, and so on. However, in terms of speed, shapefiles are generally fastest, followed by personal geodatabases, then file geodatabases. For optimal map performance, the data in your map should reside locally on the computer that is being used to view it rather than on a remote machine. For maps that will typically display relatively small areas of large datasets, serving data via ArcSDE will yield significant performance benefits over storing this same data in files.
Avoid personal geodatabases for any situation where you must have multiuser access or are serving the map, since this format was not designed for these purposes.
Here are some additional considerations for setting up your data:
- Keeping all projections the same—If possible, keep all data in a single projection and use the same projection in the data frame when working in ArcMap. This is particularly important to keep in mind when editing data or authoring data to be served. When all layers are in the same projection, the performance penalty incurred by on-the-fly projection calculations can be avoided.
- Working with joined or related data—Data from appended fields accessed through joins and relates can be used to symbolize and label features, to perform queries, and for many other operations. However, accessing data through joins and relates can slow performance. See Essentials of joining tables for details on optimizing table joins. In addition, you can simply export the data to new feature classes that contain the joined or related information.
- Using attribute or spatial indexes—If the data source allows it, index any fields used for querying or rendering. Indexes are specific to each data format. For more information, see Modifying indexes in shapefiles by adding a spatial index and A quick tour of setting a spatial index(geodatabases). The geoprocessing framework also provides a tool to create attribute indexes: the Add_Attribute_Index tool.
- Simplifying data—Use simplified or generalized versions of layers when displaying at smaller scales. For example, a detailed map of world coastlines may draw slowly at full scale. If this layer is simplified to have fewer vertices and line segments, it will draw much faster with little difference in appearance at a small scale. In addition, simplified data can improve performance for querying and identify operations.
Optimizing layers, rasters, and layouts
One of the first and easiest steps you can take is to look through your map and remove any unused layers and data frames. Then, check both the page layout and data views and ensure that your map document is clear of data frames and layers that are unrelated to the map's purpose. In addition, in layout view, look through your map elements and remove any unnecessary ones.
Once you've done this, the sections below provide additional considerations for improving performance. For information on symbology and performance, see Optimizing map symbols for performance.
- Use basemap layers to optimize drawing performance. See Working with basemap layers for more information.
- Hiding certain layers and features automatically—Two of the best ways to optimize layer drawing are to draw them
only at appropriate scales and use attribute queries to avoid
drawing unnecessary features.
If you don't need to display a certain layer when your map is at a certain scale, turn on scale dependency. For example, if you are zoomed out to a country boundary, you can use scale dependency to have a detailed city transportation layer turn off automatically. You should draw detailed layers only at larger (zoomed-in) scales. If a detailed layer needs to be drawn at smaller scales, use simpler symbology at that scale to expedite drawing. To learn how to set scale dependency, see Displaying layers at certain scales.
A definition query can act as a filter to limit the amount of data on the map. For example, if you are creating a map of a state and your feature class contains data for the entire country, you can use a definition query to display only those features that fall within the state's boundary. To learn how to use definition queries, see Displaying a subset of features in a layer.
- Building a local cache of map data—If you're working with data stored in a geodatabase or from an ArcIMS feature service, building an ArcMap feature cache can often speed up common mapping tasks. The ArcMap feature cache allows you to temporarily store the features in the current map display in ArcMap to your local machine's memory. Because retrieving the features from local memory is a fast operation, using the feature cache will often result in performance improvements. Some of the activities that can often benefit from a feature cache include drawing large or complex datasets, labeling, editing, selecting features, retrieving the same features for multiple layers on a map, and drawing features using a definition query. To learn more about the feature cache and when to use it, see Working with the feature cache.
- Displaying rasters—To speed up raster drawing, you can employ several techniques, such
as keeping the display quality as coarse as possible, using an
appropriate resampling method, and displaying the raster in its
native projection rather than projecting it on the fly. In
addition, you should build pyramids for your raster. Pyramids can speed up the display of
raster data by retrieving only the data at a specified resolution
that is required for the display.
For a list of other ways to improve performance when working with rasters, see Improving the display of raster data.
- Improving performance in layout view—While in layout view, look at the border of your data frames. Round corners, backgrounds, and shadows will slow down performance. Eliminating these effects and setting these properties to square corners can improve drawing performance of the data frame in layout view. You can change these properties by right-clicking the data frame, clicking Properties, then clicking the Frame tab.
Optimizing maps to be served with ArcGIS Server
The tips for optimizing maps also provide performance benefits for authoring maps to be served with ArcGIS Server. In addition, here are some other tips specific to maps to be served. For more tips, see Publishing map services.
When serving maps, design the map for the intended audience. Include the appropriate layers and symbology, but do not include anything that the audience does not require for this application. Remove any map layers or data frames that are not needed for the intended application. Consider making only a few layers visible by default, since users can turn on layers as they need them.
While using a cached map service is always the fastest way to serve map services because the map is only rendered once at the time the cache is created, creating a cached map is not always practical for dynamic or changing data. When it is not appropriate to rely on cached maps, following the tips in these sections of the help will also improve performance while preparing dynamic map documents and delivering them through your map service.