I am unable to find duplicate nodes in a Road network through my program.
I have a polyline feature class as Road, and i want to find duplicates nodes in it. How can I generate a report of duplicate nodes from this Road?
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.Sign up to join this community
I'm not a developer, so I'm unable to tell you how I would do this with code and/or arcobjects. However, this is something I have done manually / in model builder many times. I've explained my logic below. Hopefully you can then replicate this in ArcObjects.
1 - Run "Feature vertices to points" on your polylines.
2 - Add 3 new columns to your point dataset (the one created in step 1) - one called "X" (Double), one called "Y" (Double) and one called "XY" (Text)
3 - Calculate the X and Y values into the relevant columns on the point dataset.
4 - Amalgamate the X and Y values into the XY field on the point dataset so that it looks something like this "xxxxxx.xx yyyyyy.yy". This might have more digits depending on your default accuracy.
5 - Do a table summary of the points dataset, summarising by the XY column, so you get a count of each different value in this column.
6 - Do a 1 to Many join between this summary table and the point dataset based on the XY column (Make a Query Table, making sure you transfer over the "Shape" column from the point dataset and the "Count" column from the Summary table).
7 - Now, your points dataset has a count column, so select all points where count > 2 and export them to a new dataset. These are all your replicated nodes.
EDIT: Below are some screenshots to explain the process in ModelBuilder.
The CalculateField tool
The Frequency Tool
The Make Query Table tool (2 images)
The select by attribute tool
I've tested this model on a line dataset I just made up and it picked up all the duplicate nodes. I hope this helps :)
there is a built in tool called "find identical" that does it http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001700000054000000 , unfortunately it requires an "advanced" licence.
Off the top of my head, you could loop through each node in your featureclass using a featurecursor (or you may have to create a point collection and loop through that), and within each loop iteration perform a second loop through your featureclass / point collection to compare x/y values in all other features with your current feature. Then make a note of any duplicate values (there will always be at least one duplicate because the feature will be compared with itself at some point during the loop, but just ignore any matches that have the same index). Might not be the simplest method but it might give you an idea of where to start.
edit: this is something I've done in vb.net and arcobjects before