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.
Thank you
Best
Jamal
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.
Split Line at Point (Data Management)
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:
arcgis desktop - Simplify polyline with the intersection point kept - Geographic Information Systems Stack Exchange
But I don't understand why there should be dublicate points? But if there are some you could delete them? Or dissolve before ...
Normally done when the features are created, or during an edit session...I found this link but I am not sure it applies to your case Use the Snap Geoprocessing Tool to Automate Editing | ArcWatch
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.
Thanks Richard. This is very useful.
Jamal:
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.
The methods that rely on intersect and delete duplicate processes do nothing to distinguish pseudo-nodes from true intersections based on a attribute. In other words if two lines with the same street name connect there will be a point at that location, just like if two or more different street names connected at that location. But from my perspective if only one street name exists where these points are created, then it is not an intersection, it is a pseudo node. The intersect and delete identical process will leave pseudo node points mixed with true intersections and not provide any way to separate the two.
The script I have created deals with all line end points, and classifies them to distinguish the four main classes of points (true intersections, cul-de-sacs/stubs, pseudo-nodes, and branches). It retains all of the name attributes of the lines that made it up so that the cross-streets of each intersection can be searched. True intersections are only useful to me if I can use them to search for the street names that connect at the intersection or evaluate the connectivity configuration at the intersection, since I use them primarily for search tools and street name/network topology clean up. I rarely actually display them on a map.
On the other hand, the cul-de-sacs/stubs layers is very valuable for road network map display purposes. I integrate my script into an additional script process that maintains a cul-de-sac/stub layer that has another field that further classifies these points to distinguish true cul-de-sacs from stubs/topological errors. It also inherits a maintenance status from the line it terminates. I use those points to display cul-de-sac bulb symbols on my maps.
An example of how the cul-de-sac layer can be displayed is on this page of the maintained road book my jurisdiction maintains. If a road line terminates with a black dot it is a maintained cul-de-sac. If a road terminates with an open circle it is a public road cul-de-sac that is not maintained. If a single road line terminates with nothing at the end it is a stub. The extraction of cul-de-sacs/stubs is only possible when every end point of the network is analyzed, like my script does. The additional script processes I have developed preserve the additional cul-de-sac/stub classification field and update the maintenance status of the points from the lines weekly so that I only have to examine and classify new points each week.
I appreciate Richard's comprehensive solution and discussion. You are right the method I posted will produce a point at a pseudo node, which may or may not be useful. It may serve some simple purposes just fine. If necessary you can easily find the joining line counts at the points by Spatial Join tool.
I agree that the tools suggested are potentially useful and can get unique points and counts, but the Delete Identical tool limits that method to only those users with an Advanced license. My script works for all license levels.
I built a model with the tools suggested and ran it on my test data. I had to additionally run the Delete Fields tool on the Intersect tool's point output name field to be able to use the Join Rule with a delimiter on the name field I wanted from the Centerlines in the Spatial Join tool. The model took a minimum of 9 minutes and 20 seconds to run on my test data (3 minutes and 38 seconds for Intersect, 3 minutes and 27 seconds for Delete Identical, 15 seconds for the Delete Field tool, and 2 minute and 0 seconds for Spatial Join).
My script consistently takes 2 minutes and 15 seconds or less to get me the final product I want and provides me with the cul-de-sac/stubs I also want. In that time it additionally creates X and Y coordinate fields and an XY concatenation join field that I find useful.
Spatial Join can produce a joined name list, but it does not make the name list unique or sorted or tell me how many of each name there are at the point without a specialized script that would do further manipulation. My script does it up front. My script output allows me to find every "True Intersection with Branching" if I want to validate the locations that have three or more lines with the same name, but that also intersect with other names. I also do not want intersections formed at Interchanges, so I do not intersect those lines in my network. The model will place intersections where the ramps cross whether I like it or not, but my script won't unless I create the line splits.
Thank you very much Dan for the very useful input. I can live with this solution.
My thanks also extended to Richard and the issues he has highlighted.
You are very welcome, Jamal. I am glad you can use the solution.
Best of luck with your project.
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.