Select to view content in your preferred language

How do I analyize blocks that are touching each other?

822
4
12-26-2013 04:39 AM
deleted-user-yA_w_FC9FKe5
Deactivated User
I have 10 block groups that I want to do a test on.  I've added a productivity value to each of these block groups just for a testing.  No the record I would not do productivity on block groups.  For the productivity value I have created a 1-5 range.  1 being under productive and 5 being overly productive.   What I want to do is find where blocks that are overly productive (5) touch an under productive block (1).  What I am trying to do is find places where we have great productivity next to an area that is under productive so that we can do further research to see if these might be area's of oppurtinity to grow the productive area and shrink the under productive area. 

Can someone walk me through how I would do this?  This is very small scale as a test but I will need to do this on a much large scale for over 1000 files.  I would first like to figure out if it can be done and if so what is the best tool to use in ArcGIS.
0 Kudos
4 Replies
DanPatterson_Retired
MVP Emeritus
Are you working with raster data since you posted in the Spatial Analyst section?
0 Kudos
deleted-user-yA_w_FC9FKe5
Deactivated User
Sorry not sure how to answer that.  It is a shape file of block groups.   Do they need to be raster in order to use spatial analysis?  How do I tell if they are raster or not?   They are not in a geodatabase.
0 Kudos
DanPatterson_Retired
MVP Emeritus
If it is a shapefile, it is vector data...I will move this thread to the geoprocessing forum where it may get more traffic
0 Kudos
RichardFairhurst
MVP Honored Contributor
If it is a shapefile, it is vector data...I will move this thread to the geoprocessing forum where it may get more traffic


With vector data I always convert from a shapefile to a file geodatabase as the first step I do.  Performance increases dramatically and I refuse to work with shapefiles any more.  No one would use shapefiles in any significant geoporcessing operations if I had my way.

Second, I would create two layers based on the same feature class, with one having a definition query where Productivity = 5 and the other had a definition query where Productivity = 1.  Give the layers slightly different names to make it clear which layer contains which data (High Productivity and Low Productivity for example).

Use a Spatial Join to intersect these two layers using the One to Many option and 0 tolerance.  Keep only shapes that intersect, not all of the target shapes.  This will pair all shapes with productivity of 5 with the attributes of the shapes that touch them having a Productivity of 1.  Prior to running the tool you may want to turn off the visibility of fields that do not play a role in your analysis and only leave the fields that you need to compare or that provide a unique ID value for each polygon.

The Spatially Joined attribute table will have two copies of the productivity field with one being the original name and the other being the original name with _1 appended to it.  The Join will contain the original shape of the features with a productivity of 5 and a duplicate set of attributes representing the shape it touched with a productivity of 1.  The Target_FID will link to the shape that has a productivity of 5 and the Join_FID fields will link to the touching shape with a productivity of 1.

A quick and dirty way to see the related shapes together would be to create a new field in the original feature class to hold a long value.  Join the layer with ObjectID of the layer with a productivity of 5 to the spatial Join TargetFID field and calculate the ObjectID of the Spatial Join output to the new field.  Join the layer with ObjectID of the layer with a productivity of 1 to the spatial Join JoinFID field and calculate the ObjectID of the Spatial Join output to the new field.  Now at least one pair of productivity 5 shapes will have the same value in this new field as the productivity 1 shapes in the original feature class.

You could then use a new layer pointing to your original feature class with a definition query where the value in the new field is not null.  In the attribute table of that new layer sort on the new field.  You could then select or highlight the pairs of shapes with the same value in that field to zoom to them.  You could also use that field value to set up a categorized symbology to make the paired shape have the same colors.

However, this approach is quick and dirty because in reality you may have areas with productivity of 5 touch multiple areas of productivity 1 or areas of productivity 1 touching multiple areas of productivity 5.  These multiple touched areas would not have a complete set of paired shape in all cases using the above method.  If that happened you would have to use the Make Query Table tool instead to create a new layer that would contain all shape pairs for all of the Spatial Join IDs (which requires a geodatabases to work not a shapefile, which is another reason to convert).  The details of how to set up the Make Query Table require more knowledge of your set up than I have, so I would need more information to lay out how to configure that tool.
0 Kudos