OK I have a road database layer where all the streets have been sequenced in a non-geospatial order by segments.
These segments may divide by owner (Town, State, etc...), and/or crossing from and to street (in their own separate fields). And then there is a road name field, and a field with an attached road segment number. Unfortunately the road segments have NOT been arranged in geospatial sequence for the road. So you might have a road go
road_1, road_4, road_3, road_6, road_5 if you had attached each segment together in their actual sequence they are attached together by the same road name. I would like to use the network toolbox to get these segments all in sequence from beginning to end based on their geospatial proximity to the next segment. What's the quickest way to do this? The original file is a shape file with an attached DBase file.
Note: I just have a basic license. Do I need to add the Network Analyst license, or can I still use a tool that doesn't require it from the Network Analyst Tools toolbox?
Solved! Go to Solution.
My method does not use Network Analyst. I have much more recently created a network from my centerlines, but so far I have not made any changes to the process to replace the fields.
The two do have some overlap, for example, both need to be aware of one-way verses two-way segments, since I make separate routes for each direction when the roads separate into one-way segments. To deal with roads that split and merge into one-way and two-way segments I added fields to my LR creation process that separate North or West segments from South or East segments. When it follows a merged two-way segment the Route IDs for both directions are applied and when it splits to a one-way segment only one of the directional Route IDs is applied according to the one-way direction. Split roadways are a reality, but they tend to be a pain for facilities management, since they create more complexity in the ways things need to be referenced that the field crew descriptions leave ambiguous. In my network, with the exception of freeways/highways, I have dissolve dual centerlines to single centerlines in all but a few cases since facilities management takes priority over network routing in my operations. These routes are a subset that undergo a separate process for route creation from the 90% set of routes that don't involve one-way segments, since it takes more steps to separately create them and merge their schema back into the simpler to generate dual-direction routes.
A person who has a well defined network for network analyst will have to identify these roads as well, but they may favor retaining of split roadways if they do not consider facilities management to be a priority and instead need to solve routing problems primarily. In my experience, centerlines have no single form that fits all needs perfectly and each organization has to adjust the network layout to fit their primary mission objectives.
the network analyst toolset does none of the above. It's function is to provide analysis tools, not data management tools
Well I don't think you comprehend what I am trying to get at. Data management that is geospatial in its nature, should be possible through a network analysis. It used to be under Arc Info that you would do dynamic segmentation to enable a DLG file to be able to issue travelling sale person problem solutions finding the shortest distance between several points given barriers etc...I see that is still there with some functions in the Network toolset, but I need to get ArcGIS to be able to establish the network of roads is an actual network of cojoined segments at specific geospatial locations. When it is able to see they have a from to topology, it should be able to look at the road name field and find out which segments are attached at which latitude/longitudes and update the database of segments with a new field that enumerates the segments from beginning to end on a single street name if they all have the same street name. So I'm trying to give these segments that kind of topologic understanding to update a long interger field with unique identifiers for each road analyzed.
I am aware of what you want to do... it is just not done within the Network Analyst toolset as you have discovered. Perhaps if you used some of those key words (dynamic segmentation, linear referencing, topology) in a search in the new help documentation you would see that they concepts are still alive and well, but perhaps organized in a slightly different fashion. This link will allow you to search for both ArcMap and ArcGIS Pro software. The documentation will enable you to see if the same operations can be done in both
I found this page: Dynamic segmentation—Help | ArcGIS for Desktop
However, it is kind of obscure as to which toolbox tool enables this type of analysis.
OK, I go into Arc Catalog, and select my GeoDatabase and right click it to create feature class. There is no "New"
option, and under Create Feature Class, there is only "From X Y table."
Selecting the From X Y table reveals it has no idea what the X Y fields are.
OK, I am still stuck trying to figure this thing out.
Linear Referencing tools has been able to get me so far:
-> Create Routes can take the original Geodatabase, and select the route identifier field as the road segment name for the route identifier field and create a nice route layer. Unfortunately that route layer remains out of sequence for some routes while correctly routes others. I've tried to alter whether or not I Ignore Spatial gaps to no effect. Measure factor is set at default to 1, and measure offset is set to default of 0. The default coordinate priority of Upper_left is set.
Once that is done, I create another table using Locate Features along Routes using the Create Routes table output as the Inpute Route features, and the Input features as the original geodatabase. This creates a nice FMEAS and TMEAS field in the output. Then I sort by Name and TMEAS in increasing order. The first road says the order now is segments 1,4,2,3 which is what it should be. The other does not, and should be 3,2,1,4 but is not sequencing that way. I don't know if it matters but one road goes between two T intersections, whereas the other is a dead end road on the last segment.
Using a single Coordinate Priority will not work for all roads if any gaps exist between segment ends. This is particularly the case for roads that are oriented diagonally opposite of the priority chosen (i.e., if priority is Upper Left and a road with gaps is oriented from upper right to lower left). Any gap will allow a route to build in ways you don't want, so the best solution is to use topology and eliminate all small gaps that are not really supposed to be gaps. The way the Create Route tool builds routes across gaps follows patterns that make sense to the algorithm, but not necessarily to the average user, so you have to validate them. It is also not possible to correctly sequence routes that branch, so you have to create separate routes for each branch to sequence the segments predictably.
By default I prefer to use Lower Left (standard engineering stationing orientation). Then I use two calculations to determine if the route is simple. The first is calculated into a field called Parts to determine which routes have multiple parts (gaps or branches), which is !Shape!.partCount. All single part routes are simple and you don't need to check them. All multipart routes need to be validated.
The second is MMonotonicity, which is the calculation shown in this Blog. This helps distinguish branched routes from routes with only gaps. If Routes only have gaps and no branches they will report as more than 1 part with strictly increasing measures. For those routes I look for diagonal routes that are opposite the priority I chose. If a route is diagonally opposite of the orientation I chose I build it as a separate selection from one of the diagonal priorities (upper left or lower right if my default it lower left). Since I always use the Measure Gaps option, I also add a From_Measure and To_Measure field to compare the length of the line to the maximum measure distance. Measures that are much longer than the line length are usually unrelated roads separated by huge gaps or diagonally opposite roads that built from a gap in the middle out to one of the ends and then doubled back to measure the segments out to the other end.
I have a Priority field that by default is "LL". I select every segment with the "LL" value to build with Lower Left priority. But if I determine some segments need to build from a different priority I may assign "UL" to those segments and use Upper Left priority on just those segments. After I build these separate selections with different priorities I Merge the Upper Left routes together with the Lower Left routes I built by default at the end.
Branched and circular routes will have more complex measure patterns that are not Strictly Increasing (MMonotonicities greater than 1). Each branch off of the main route gets a separate RouteID that is related to the main route ID so that it is sorted immediately afterward. These lesser branches are generally not used as often as the main route or are in jurisdictions I don't work for. By splitting off the branches I aim to get the longest possible single main line route with Strictly Increasing measures that are logical, and one or more lesser branch routes that are not as crucial to my analysis. Completely circular routes are never built correctly by the Create Route tool. I always create two routes to break the circle apart and don't bother rejoining them. Circular routes are always a special case and difficult to resolve, so you have to decide your own preferences and how much work you want to invest to make sense of them when you encounter them.
It occurred to me a spatial join might work better with these, though I'm not seeing how to remove the roads intersecting my main road that have a different name, or where the same road segment flips its from_to in reverse. If I found some way to do that within the selection, that would be ideal. I see what you are saying about circular routes. Or how about a road that branches with three different segments and two islands in between before it reaches an intersection. Both of those are special cases, but really I just need each unique route segment identified and as much in spatial sequence as can be allowed. When we reach those special instances, like a Y intersection, we'll have to give each leg of the Y a different identifier, after the fact and out of the GIS. But if there was a quick way of reducing redundancy and tagging each unique road name with a set of sequential unique road segment identifiers that would be ideal to give me a solution.
Name and Name_xyz are two entries that exist for each road along with an associated segment identifier.
If I can get the xyz's to be dropped out of my spatial joined database when matched with another, that would help.
I have done my career in Transportation analysis and never needed sequentially numbered segments for any work I have done. I have used the LR approach to create logical non-branched routes across my entire network. I have over 35,000 routes created from over 120,000 segments. They work very well for collision analysis and facility management analysis (pavement management, road maintenance, inventory control, etc.). LR has far more uses than a sequential number ever would on the non-LR original segments. What make this sequential number so necessary for your work? I am just asking, since it would be easy for me to create a sequential number from the LR foundation I work with, but not useful as far as I can see to the work I do. I also think you do not realize the real value of LR and the many uses it has that go far beyond the sequential number you hope to create. Without ever numbering the segments I have used LR to assign Address Ranges to my original segments, so I view sequential numbering or presorted road segments as irrelevant to that problem and most problems like that.