[GIS] Automatically add vertex to polygon where vertex of another polygon touches it

arcgis-10.2arcgis-desktoptopology

The polygons that I use in ArcMap 10.2 are drawn so that they snap to each other, but never overlap. I've described a general case in the following image:

enter image description here

A polygon is defined by the minimum vertices. Both green and pink polygons are constructed of 4 vertices. When drawn snapping is used.

My problem is that I am now required to add a new vertex were the vertex of one polygon meets the line of the other polygon. As seen in the lower part of the image, the green polygon is required to have a 5th vertex were the vertex of the pink polygon touched it. Similarly the pink polygon will also have a 5th vertex added.

To automate this process I thought of selecting each polygon and running the Clip command. This will add the needed vertex on the other polygon. But there are too many polygons to work with; are there other ways of achieving the same result?

Something like:

  • Detect polygons that touch.
  • Check if where the vertex of the pink polygon touched the line of the other polygon the green polygon has the needed vertex. If not, return the id or write something in a column.

Best Answer

You could build a topology in a geodatabase, and then when you validate that topology, it will add vertices in the manner you describe.

http://resources.arcgis.com/en/help/main/10.2/index.html#/Designing_a_geodatabase_topology/006200000004000000/

If you are not familiar with this, basically what you would do is create a feature dataset in a geodatabase, import your feature class(es), set up the topology and the topology rule(s) (ex: must not overlap), and validate it. It should automatically put in vertices where a vertex from one polygon sits on the edge of another polygon.

Related Question