21

I have a polygon shapefile that has a 100MB .dbf, and 500MB .shp file component. The reason it is so large, is that it is classified as a landbase for a whole district.

Everytime I view the file in ArcCatalog, or ArcMap, and move the view window slightly, the entire file needs to redraw from scratch. I have tried spatial indexing and importing into a geodatabase - neither approach provides any noticable performance improvement with respect to rendering.

Esri's help page suggests that that to improve shapefile performance, the user can generalize the file. While this would obviously work, I do not want to lose any information. Splitting the file up is not ideal since I am doing a lot of geoprocessing/queries with its entire area. I guess I could avoid viewing the entire area at once - but sometimes, for example, it is good to see what parts of the file a query has selected.

Is there any other approach I could take to improve rendering performance?

(In theory, building shapefile "pyramids" would be ideal - I'm unsure why ArcGIS has never supported such an approach - at least that I am aware of...)

5
  • 2
    Having such a large shapefile, is just asking for trouble. In my experience, Large shapefiles tend to corrupt very easily. Get it in a File Geodatabase, to avoid corruption. Better drawing performance would be an added bonus. Oct 24, 2012 at 5:49
  • As I breifly note above, I found that importing a large shapefile into a gdb creates no improvement - from a purely rendering point of view. You are quite right though that from a general perspective it makes little sense to not have a large shp file in a gdb (for all sorts of reasons).
    – youzer
    Oct 24, 2012 at 19:27
  • 2
    Have you considered using a raster instead of a shapefile? Oct 30, 2012 at 20:06
  • i am confused in one thing what if file size is 2gb and computer memory is also 2gb then how arcgis will handle this file data as it will conume full memory Nov 10, 2015 at 8:42
  • if you've got millions of small polygons, should've used raster is the infamous saying (unless you are making a soils layer...) Jan 11, 2016 at 22:23

7 Answers 7

21

My thoughts are:

  1. Export your shapefile to a file geodatabase feature class - I think its drawing performance will be better but am not sure by how much
  2. If you are using ArcGIS Desktop 10.0 or later move it into a Basemap Layer - this will improve drawing performance dramatically
  3. If you like the sound of pyramids for vector data, be sure to vote for this ArcGIS Idea.
3
  • 3
    Except you can't do analysis or selections on basemap layers IIRC.
    – blah238
    Oct 24, 2012 at 4:50
  • 4
    Suspect that could be gotten around by having second layer in TOC pointing at same source and not a basemap layer, which is usually turned off but can be displayed when required for analysis or selection.
    – PolyGeo
    Oct 24, 2012 at 5:34
  • PolyGeo - thanks for answer. I tried baselayer and indeed a major performance improvement is when "zoom to layer" is clicked, the file does not render from scratch. The workaround you suggest given blah238's comment would perhaps work from some projects, but I found an addtional thing that limites the use of baselayer is that you cannot visualize the dbf using any symbology. With this limitation I might as well generlize the file for reference (not a baselayer), then unhide the "real" layer when needed. Not really a great solution.. I'll be voting "pyramids" idea as you suggest!
    – youzer
    Oct 24, 2012 at 19:41
6

There are many tips for improving ArcMap performance which might help, but here's three suggestions I've used.

  1. I'd make sure the Data Frame coordinate system matches my shapefile's and any other layers I have on in the TOC; but the fewer layers to be displayed the better.
  2. I'd only use my symbology based on simple lines and fills without transparency or other complexities.
  3. If you need both an overview and the ability to pan around up close, consider using the magnifier or viewer.
1
  • generally very good advice. I did indeed implement all of these in my initial tests - it seems that more/different tricks are needed to deal with very large feature classes / shapefiles.
    – youzer
    Oct 24, 2012 at 20:04
4

You can improve rendering by setting the layer display parameters so that the layer will not display at large scales (e.g. >1:10,000). You can find this option in the layer properties: Layer Properties > General Tab > "Don't show layer when zoomed out beyond..."

Also, storage location matters--for example, if it is stored on an old server with poor bandwidth, you are guaranteed to have poor performance. I routinely handle 1GB+ vector data over a server, which makes me question whether your system specs need to be updated (for reference, I'm running 12GB RAM, 2nd gen i7, average graphics card).

enter image description here

3

Do you need to render the map to make your queries? What if you ran python scripts and accessed the data without drawing the map? I'm not sure your exact process, needs, etc, but a thought.

3

As a bit of a followup to Aaron's answer, you could also use a definition query to limit the number of results returned for visualization (and it includes analysis - I believe it functions a lot like a selection). If not all features are needed for viewing at any given moment and you're not switching regions a ton, a definition query could be a workable solution, though not an exact answer to your question or needs.

3

I hear your frustration. I routinely work with large shapefiles like this and don't have display problems, in general. I agree with all the comments above, especially making sure everything is in the same projection, including the data frame. I assume you have copied the file locally and are not trying to access it over the network? One thing that will cause display issues with shapefiles this size is if there are an extreme amount of vertices, as in a stream network. The only solution I have found to this is creating a python script to do layer definitions on the fly so I am only drawing a few at a time. Another thing would be to update your computers graphic memory and graphic card.

0

Create Spatial Index. That will make the rendering faster.

1
  • 1
    Welcome to GIS SE! As a new user please take the tour. A good answer should be include not only what to do, but also how to do it. Please edit your answer to include steps involved in solving the problem. Additionally an explanation as to how it solves the problem would be helpful as well.
    – Midavalo
    Dec 19, 2020 at 16:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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