create point shapefile of street intersections from polyline - ArcEditor

50643
36
02-09-2011 02:22 PM
MichaelCatsos
New Contributor
I'm trying to create a point shapefile of street intersections in downtown Phoenix, somehow deriving the points from a lone street centerline layer. I have tried extracting polyline nodes to points, but nodes do not exist at all of the necessary intersections. Intersect-related solutions don't seem to be any help since I am only working with one layer.

I'm not experienced enough to understand most scripting. Is there any procedure to split polyline features into segments between each intersection? After that I could extract the nodes, then turn them into points.

Another option I have explored is creating a small buffer around the polyline features. Theoretically, the points where the buffers around each segment overlap represent the intersections. This method is more inclusive, including all the potential intersections, but I can not figure out how to "overlay" the buffer with itself. Is there some way to use overlay to extract the small polygons where the individual buffered segments overlap, even though they are all in the same layer?
Tags (2)
36 Replies
AlexeyTereshenkov
Regular Contributor III
Rick, the attributes of the road segments will be transferred to the point features appropriately. Try to run the Intersect tool and check the attribute table of the output point layer.
0 Kudos
RickEhlin__Jr
New Contributor III
Rick, the attributes of the road segments will be transferred to the point features appropriately. Try to run the Intersect tool and check the attribute table of the output point layer.


I ran the intersect tool from toolbox and it worked.....BUT there are now points for every line that meets up there....time to figure out how to unite all data into one point.
0 Kudos
JimW1
by
Occasional Contributor II
I ran the intersect tool from toolbox and it worked.....BUT there are now points for every line that meets up there....time to figure out how to unite all data into one point.


Make a dissolve field that is a concatenation of the LAT/LON or X/Y.
So for example:
DISSOLVEID  = �??-75.123456_45.123456�?�
Each point at this location should have the same string. You can then dissolve by the DISSOLVEID string.
Otherwise there is always topological buffers in VBA/Python.
MikeHargreaves
New Contributor III
Okay, I'm confused.  I did the Intersect on my centerline, setting the output to point.  It created a multipoint feature, so I ran the multipoint to singlepoint.  Then I added the DissolveID field, and did the dissolve, setting the street name first and last as the statistics fields.  The problem I'm getting, is that at a T-junction, I have three points, with two having the same name, and sometimes the First and Last select those two and not the one with the different name.  What happens when I have more than two streets coming together at an intersection?
0 Kudos
MikeHargreaves
New Contributor III
Okay, I've managed to get something, though it is not pretty. Here are my steps:
1) Create Version of centerline that only has named streets
2) Dissolve on full street name (e.g. MAIN ST - this will remove duplicates later)
3) Use Intersect on this layer with output type = point
4) Add XY coordinates to new point layer and create DissolveID field and set to X_Y as mentioned above
5) Dissolve on DissolveID field to end up with only one point per intersection
6) Add new field to your Dissolved Named Streets layer - make 150-200 characters to hold 4-5 street names, then use Field Calculator to fill it with street name and add an underscore "_" at the end (e.g. MAIN ST_)
7) Do a Spatial Join with your target being the intersection points, and the Join Features being the dissolved named streets layer.  Right click on your new field in the Field Map of Join Features, and under Merge Rule choose Join.  After running, your end result should look something like A ST_1ST ST_  All streets at the intersection will be included (I got up to 4), and only once each if you did the original dissolve.
😎 Use Field calculator to strip the last "_" and then replace the rest with " & "   -    set the Parser to Python, then use the following:  !YourFieldName!.rstrip('_') and then !YourFieldName!.replace('_',' & ')  Your final will look like A ST & 1ST ST

Now, all I have to do is create a model, so I'll remember how to do it the next time...!
LukeAllen1
New Contributor II

Thank you mike, this was super helpful - you are my hero!

0 Kudos
MikeHargreaves
New Contributor III

Luke, I'm supposed to remember something from 7 years ago!?  I have a hard time remembering what I did last week...!  In looking at what I wrote above, I believe I'm referring to the new field created on step 6...

0 Kudos
LukeAllen1
New Contributor II

Mike cudos for the response time thought

Dont worry I figured it out - I guess I didnt edit my post in time, I did ask a question further down, if you can remember that far - dont worry if you cant though

Thanks again 

0 Kudos
JimW1
by
Occasional Contributor II
Sorry for the delay. Your methodology is good.

From my experience look out for T-Intersections, places where road names change, highway interchanges, and crazy intersections (5+) as the spatial join and attribute carry can be weak.

I went through this about a month ago for a Canada-wide road network and broke down and used the topological buffer tool in VBA to get really clean intersection attributes.
0 Kudos
MikeHargreaves
New Contributor III
Thanks Jim,

As far as I can tell, road name changes and T-intersections all look fine.  I debated whether to remove my freeways and such with overpasses from the original layer, but decided to leave them in, even if they are not really intersections, since folks still like to reference those locations.  As far as I can tell, we don't have any intersections in the County with more than 4 streets.  The last time I made intersections a couple of years ago, I did use some code that I found that used the buffer, but it was very slow, and I think my product this time was actually cleaner.  Maybe it is not the same buffer - the one I used did not put all the street names into one field, but instead put them into separate fields, and then I had to run a model to compare each field to the others to make sure it was not a duplicate before adding it to the final intersection label field.  After creating the new intersections this time, however, I found that someone was using those individual street name fields...  So, does anyone have a suggestion on how I can strip individual streets from a field containing something like MAIN ST & 1ST ST & B ST ?  I could load it onto the mainframe and use a programming language that I know, but I'm sure there should be a way to do it in Python - I just don't really know it at all.  Seems like I should be able to search for the & and get its location, and then use that do a strip or something...
0 Kudos