I am working with ArcGIS 10.0. As a simple example let's say I have a map of the United States. I want to each row of the data which states have adjacent boundaries with that state - so that in the row for South Carolina there would be new variables adjacent_1 and adjacent_2 that list North Carolina and Georgia (or anything similar to this)

Any thoughts? I know I can select on "features that touch the boundary of the selected feature" but then I'm not sure how to add the information to the data.


Buffer the features infinitesimally (such as one meter). Union the buffer layer with itself, thereby creating k records for each distinct overlap of k features. The records in this union include the identifiers of the parent features. Summarize the union on the concatenation of these two identifiers: this effectively strips out all the duplication. You have created a table implementing the desired relation. A many-to-one join of this table to the original layer finishes the job.

(If you don't want to count two polygons meeting at a point as "adjacent," filter out all elements of the union based on their areas or extents: an area less than Pi * r^2 /2, where r is the buffer radius, is almost surely not an indication of adjacency.)

  • I last did this in ArcView 3 (obviously quite a while ago :-). There should be no problems with the same workflow in ArcGIS. – whuber Mar 10 '11 at 17:26
  • 1
    Worked like a CHARM! – Amanda Mar 10 '11 at 19:42

You should be able to write a script that loops through every feature present in the feature class, execute a spatial query to select any adjoining features, loop through the results of the spatial query, and write a specific attribute from the resulting features into the original feature. Depending on how exactly you want to use this information, you'll want to add a new column to the feature class called AdjoiningFeatures, and add a comma separated (or similar format) list of adjoining feature names/ids/etc in that column.

One major issue to think about is that the list of adjoining features is static, and will not update along with your data without having to re-execute your script.

As for where to start, look at Python scripting in ArcGIS 10.0.


This is what GIS is for. However if you want the duplication I think you will have to get creative and do some spatial joins. possibly make a copy of your polygon data and sp join that back to the original. ??

  • Yeah I was thinking something similar but since I want it for every state that seemed tedious. I haven't done programming yet, just point and click, though if there someway to program a loop in order to do this then if anyone has references on how to get started I would appreciate. – Amanda Mar 10 '11 at 16:36

I note that you are using ArcGIS Desktop 10.0, but if you were using ArcGIS 10.1 for Desktop or later then you would have access to the Polygon Neighbors tool.

For more details see Adding/updating field to polygon feature class that lists bordering (neighbor) polygons?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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