I have a road network table in a PostgreSQL database. The table has a level attribute which marks if a road is on the surface or if it is an under- or overpass. I would like to check the topology of this network and filter out the marked fictional (different level) intersections, and the not marked but real (same level) intersections. (Detailed in pictures below.)

Now I know that I can do this in PostgreSQL, but can it be done in ArcGIS Desktop?

So far for topology checks I never needed this kind of rule, and I cannot find an option to make a topology rule based on an attribute value. Currently I don't have acces to ArcGIS Data Reviewer, but maybe that could solve my problem.

The illustration of my problem:

enter image description here

The colours and the numbers represent the level of the road. I would like to find the following errors:

  • Either two roads with the same level value intersect each other but don't have an intersection point
  • or they do have an intersection point, but shouldn't, because they don't have the same level value.

enter image description here

  • @BERA Could you elaborate please? After I do the intersect, I'll have at least two points in each intersection, and even though they will have the level values, still I don't know if they were rightfully intersected in the first place or not.
    – 588chm
    Sep 23, 2020 at 11:22

1 Answer 1


Here is one such solution in ArcMap. Assumption is that all the road lines are in a single FeatureClass:

1] The data labelled with level number


2] Run intersect tool, keep all attributes


3] Open attribute table, use Add geometry tool to add XY coordinates, then create a STRING field called ID and concatenate the coordinates into a text value, you can use the field calculate tool and the VB expression cstr( [CENTROID_X]) + "," + cstr( [CENTROID_Y])


4] Run summary stats tool on table, using id as the case field and level as range, logic is that if the roads are at the same level then their range is zero.


5] Finally you could create a relate between this table and your point dataset based upon the ID field so as to pass a selection where range is not zero. Don't know what a relate is then read the help file?

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.