Convert point to line with no sequence attribute

867
4
04-12-2022 10:18 AM
Labels (3)
burrkim
New Contributor III

Hello, 

I have some issues with a survey that's been done with a gimbal to understand the width of a road. 

I have two sets of roads and both look like this:

burrkim_0-1649783716473.png

The attributes have been ID'd so that each one was taken one after the other on each side of the road. Like so:

burrkim_1-1649783836160.png

 

Is there any way of automating this?

 

0 Kudos
4 Replies
KimGarbade
Occasional Contributor III

Just to be clear in my head: Do you want to create a polygon that represents the edge of the roadway?

If so I have a few questions: 

1) Is it just this one roadway or are their others and do the others intersect this one or each other?

2) Is it always the case that the odd IDs are on one side of the road and the evens on the other, or can they be "mixed"?

3) Do the IDs always increase or decrease as you move along a single roadway in either direction (I.E. could the numbers on one side of the road go 249, 251, 247, 253.... sort of "out of order"))? 

0 Kudos
burrkim
New Contributor III

Hey, 

1) There is one other and they do not intersect. 

No, I've already checked that there is no sequence in odd/even. It's not completely random, but random enough that I can't run a script on even/odd or increase/decrease in numbers. 

However, each "pair" of points (on each side of the road) does have a sequence. You can see below where I've matched the even to see if the line would follow, but you can also see that the two points on either side of the road do always follow a sequence. Like I would have to run a point to line on every pair, but I'm sure how. 

burrkim_0-1649785232444.png

I'd like to create a line on the east and west side of the road, the data has been collected and could be useful. However, the ultimate point of the job is to measure the width of the road, so essentially I could just take that from each pair and not go through the process of building the whole road. 

I hope I'm making sense?

0 Kudos
KimGarbade
Occasional Contributor III

Hmmm.... Points to lines was the first thing I thought of to, but your description and the picture make it look like it won't work (in my opinion at least), without figuring out how to assign the points the correct order. 

Even draws the crossing lines isn't easy because you have to know that "42" is "across" from "41" and not "43"..... Do the points have any other attributes and do you have the centerline of the roadway the points are adjacent to?  Sorry to keep asking questions.

0 Kudos
KimGarbade
Occasional Contributor III

This question kept me thinking and maybe this would work, but you would need to code it in python.

I'll also say it doesn't make sense to write all this code unless you've got thousands of points or are going to do this frequently (I wouldn't do it it this was a one time project with a hundred point for instance).

You would also need to provide the script a centerline for the road and two point IDs; one for both the "Left" and "Right" side starting points (The points on either side of the roadway at one end of the roadway;   These could also be calculated based on the From node of the centerline, but it would add a lot of code, probably easier to just enter the IDs).

1) Either create a new "EdgeOfPavement" line file manually or have your code create it.

2) Buffer the Left side of the input centerline 

KimGarbade_1-1649845740221.png

3) Using Select by Location, select all the points that fall within the Left buffer polygon.  Create a temporary "LeftPoints2Analzye" feature class to put them in. 

4) Select the Left starting point from this feature class (if should be a member) and use it to create a new feature class called "CurrentPoint").

5) Delete the "CurrentPoint" from "LeftPoints2Analyze".

6) Run a spatial join using the nearest option to find the closest point in LeftPoints2Analyze to "CurrentPoint".

7) Add a line to EdgeOfPavement between the Current Point and the nearest point

😎Make the nearest point the next CurrentPoint and run steps 5-7 again.  Loop until all of the left points have been processed.

This should give you the Left side of the roadway in "EdgeOfPavement".  Then you can repeat for the right side.

I know its a long way to go, but its all I can think of.... 

0 Kudos