1

'I have a line feature class and a point feature class. Each line feature’s geometric direction is significant (it matters what it is). The point features do not always fall on line features' vertices (but some do). I want to Split Lines at Points, but in the resulting line segments, I need to create a field that indicates the segment’s sequential position within the parent feature:

Start = o
End = x
Point = ^
Line = -

o-----^------^---------------^------^-----x
   1      2           3          4     5      << segment position

The features created by Split Lines at Points need to contain or somehow be assigned a sequential number as indicated. The actual numbers do not need to be 1, 2, 3…, but they do need to ascend from start to finish.

I thought about attempting to capture the number of the last vertex present in the parent line feature that is contained within each feature created by the split, but I don’t know how I could do that. If I were to do that, the “sequential numbers” in the example above might look like 15, 43, 67, 91, 107 which would suit my purpose, as the sequence ascends from start to finish of the parent line.

I’ve got about 200 line features that will be split by, on average, 8-10 points. I’ve gone through the process manually once (assigning correct sequence numbers to each feature), but now I need to automate the process, as it will need to be done on a routine basis.

Simply using the Split Lines at Points tool does not (by random chance) produce a feature class with a data table in the ‘correct’ order, so I cannot simply use the resulting features' object IDs.

Any help will be greatly appreciated!

Andrew Brick
  • 115
  • 8

1 Answers1

2

This is a process that worked in a test case:

  1. Split Lines at Point
  2. Dissolve the output features back into single feature. This ensures that the parent line actually has a vertex at each point. Call it feature_diss
  3. Split Lines at Vertices on feature_diss; output is feature_slav
  4. In the output's attribute table, create a new field to store a copy of the FID. Calculate it as such.
  5. Split Lines at Points on feature_diss; output is feature_slap
  6. Spatial Join feature_slav to feature_slap, averaging the fields from feature_slav in the output table.
  7. The result of the spatial join should allow you to sort records in ascending order of Avg_FID_2, and this order should show features in the correct sequential order.
Andrew Brick
  • 115
  • 8