I have two polygon shapefiles of the same region from two different years (1985 and 1997) and I need to analyse the differences between the two shapefiles resulting in a third polygon shapefile displaying only differences.

The shapefiles cover an inner-city area with buildings, parks, sealed/unsealed areas and water areas. I need to find out for example if a building was de-/constructed or if a park was moved or closed or similar things. Any differences between the shapes.

I need the output to be in a third, new shapefile.

Is there an automated way to achieve this?

I am working with the proprietary file geodatabase in ArcGIS 10.1, so I'd prefer solutions in ArcMap.

I thought it might be possible to work with topology analysis in ArcGIS but I'm not quite sure for example how to compare shapes by attributes: Each shape has a field "type" in the attribute table and I need to compare not only the shapes but the types of the polygons.

Note, Finding differences between shapefiles using ArcGIS for Desktop? sounds similar, but I'm looking for an output in a polygon shapefile format.

This is a change detection process on vector data (no remote sensing issue). There are some nice comments in this answer but no solutions at all.


3 Answers 3


There are a few ways to do this. I have completed this in the past with great results using a combination of attributes and raster processing. The premise of the process is to assign each feature with a value of n (1, 2, 4, 8, 16, 32, 64, etc.). Assigning these values ensures that when you subtract layer one (1985) from layer 2 (1997) you get a unique value, which identifies what it changed to. For example, if 1 = buildings, 2 = parks, 4 = seal/unsealed and 8 = water; by subtracting the values, there is no way to get the same value. When you add this column of values you are going to want to convert the polygons to a raster, using either ArcGIS or QGIS. I would recommend that you set the raster pixel size to a small value (ie: if the data was collected from Quickbird imagery, then set it to the pixel size of the Quickbird imagery). Using Raster Calculator (in ArcGIS or QGIS) subtract Layer2 from Layer1. This will result in Layer3, the changed to layer. You can convert this data back to a polygon layer for further GIS analysis. If you want further information, or specifics, I can share a more with you.


While I think that Ryan's Answer is the most reasonable course of action, you could use the Intersect Geoprocessing Tool using both your featureclasses as input.

The output that you get, will contain attributes from both inputs. You could check for features having different values in the two 'type' fields.

There are a few limitations to this process:

  • Firstly the Intersect Tool like all overly tools can only operate on a limited amount of vertices. If you have too many vertices in your data, you would have to tile your data and run the process in stages.

  • You will find many sliver polygons in the output.

  • This requires that your feature classes entirely cover your area of Interest, and that there are no Gaps.


To do change detection in ArcGIS, from two polygon files, use overlay operation (UNION). That gives you the transition matrix showing the details of the changes (may be in land cover).

  • I think this is just a variation of the accepted answer but with less detailed instructions. Also, while both Union and Intersect are polygon overlay operations it is Intersect that I would use in this case to minimize the size of output and any intermediate datasets.
    – PolyGeo
    May 2, 2015 at 6:15

Your Answer

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

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