ArcMap Shapefile Analysis – Analyzing Differences between Shapefiles

arcgis-desktoparcmapchange detectiondifferencestopology

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.

Best Answer

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.