A tool to create ONE point at the point of intersection of lines,
I’m wondering if there is a tool that can create ONE single point at the intersection of lines.
Solved! Go to Solution.
You can try this:
- Run Intersect tool on a polyline feature class itself; specify POINT as Output Type. This will give you duplicated points at intersections only (not dangles).
- Run Delete Identical tool on the points, specify SHAPE field. Now you should have ONE point at each intersection.
Sorry for the confusion.
What I wanted to do is to have a tool that can create ONE single point at the points of intersections of lines. In this case, the only given layer is the roads.
“feature vertices to points” tool can be used to create such points but in this case multiple points may be created as same position. What I’m looking for is to create Only one point at the intersection position.
Maybe you could have a look here:
But I don't understand why there should be dublicate points? But if there are some you could delete them? Or dissolve before ...
I don't know of a single tool to accomplish your task, but I do it in two steps:
After creating a feature class with road arc endpoints using FeatureVerticesToPoints_management, I remove the duplicate (overlapping) points with DeleteIdentical_management, specifying the "Shape" field to end up with one point at each endpoint.
Alternatively, if I want a feature class without dangles or pseudonodes, there is an intermediate step. I do a one-to-many spatial join after using FeatureVerticesToPoints. The output has a "Join_Count" field which tells me how many points are at each location, so I can query out the points with Join_Count >= 3 (assuming arcs are split at intersections) to get the true nodes (intersections) only, and then I delete the identical points.
Many thank Johannes, Dan and Kerry for the help. This is very helpful.
I use the Feature Vertices to Points tool and then use the Collect Events tool. My networks is controlled by a topology so that the points connect at exactly the same location. This process gives me all the unique point locations in my network and a Count at each location. I then create a text field called X_Y_LINK on each point and calculate into it a unique concatenation of the X/Y coordinate value of the point into it. This acts as a standard Join field that lets me link to summaries of the original points that give me subcounts by street name.
I have just started investigating the Address Data Management Add-In. I just downloaded it yesterday so I do not yet fully understood all of what it does myself, but it looks like it may apply. You can download it by pressing the Download button from this web page. The tool normally depends on the ArcGIS for Local Government data model, but I am working with technical support to get it to work with my normal data through the config file and a better understanding of the minimum requirements for the tool to work.
It has a tool to create intersection points, which creates a single point at all road end points of the streets you select that form a real intersection with other roads in an in-memory layer. It will also include two street names in a Primary_Street and Secondary_Street field. However, if three or more street names meet at an intersection the tool only picks two names to represent that intersection, so other processes would have to be done to attribute the point with more than two street names. It also does not give a count of the number of lines that meet at that intersection, which my other method provides.
The Road Network Management Add-In may have some variations on the Address Data Management Add-In, but it seems to include similar abilities for dealing with intersections.
Use the script I wrote in this second post of this Discussion to do this. You need to customize the workspace, file names, the field that will act as your list of name/ID values that meet at the intersection points, and the coordinate concatenation format to match your coordinate decimal precision needs.
It is much faster than my previous methods and combines all line ends into the set of unique points. Each point contains a field that combines all name values (or other ID values) that meet at that intersection point into a list where each name/ID is unique and listed in sorted order for each point. Other fields tell you the total line count and the line count for each name/ID in the list that meet together at the point.
Every line end point is included in the output and there is a POINT_TYPE field to distinguish points that based on your name/ID field represent True Intersections (multiple names meet together), Single-Line End Points (only one name and one line ends at the point), Pseudo Nodes (there is only one name where two lines meet) and Branching Lines (there is only one name where three or more lines meet).
It currently does not consider Z values when it creates the unique intersection points, but I could be persuaded to make it optionally output each unique XYZ intersection point location if someone out there asked for it. If I get enough interest I will package it as an Add-In that would simplify the script input parameter customization process.