How to create new line from 2 points to follow centerline (curvy\winding).

3556
8
Jump to solution
01-21-2014 10:37 AM
JoePrimicias
New Contributor II
I have a point fc that have XY coords that represent a pair of From-To address ranges. I've used the Points-to-Line geoprocessing tool but that creates straight lines only. I'm interested in creating lines that follows a curvy or winding street centerline with a 12 ft. offset to the right.

Any help would really cut down in cartographic and geoprocessing times.

Thank you,

Joe Primicias
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
RichardFairhurst
MVP Honored Contributor
Linear Referencing is designed to do exactly this.  An event table with a record giving the measure positions of the two points along the line with an offset field set to either 12 or -12 (the sign depends on the way you set the event offset option as far as whether the offset will be right or left of the line) will create a line that follows the road between the two points and that is offset 12 feet from the road.

First use the Create Route tool to assign measures to roads using the Road Name as the UniqueID (or any other ID system your state may follow).  Complex routes (branching or looped routes) will need some special handling, but most of your roads should be simple routes (one continuous line with ever increasing measures in one direction).

Since you have created your straight lines, use the ObjectID of those lines or some other unique identifier and tag the original address points with that ID using the Spatial Join tool so that each individual point is tagged with the same ID as its pair.

Now use the Locate Features Along Route tool with the routes you have created and the tagged individual points.  Use an appropriate tolerance to get the points to hit the road it is supposed to associate to.  The attributes will tell you which Road the addresses belong to if your RouteID is the Road Name, so get rid of any false matches.

Now use the Summary Statistics tool on the point event table.  Make the Unique Case field the tag value that would create a point pair line and get the Min and Max summary of the measure values of these points from the event table.  This summary has created a line event table.  Add an offset field and calculate it to 12 or -12 (experiment) and make the summary table a new line event table with the offset field option set.  The lines will follow the road between the two point measures with a 12 ft offset.

If you can process all of your points so that they have an ID identifying which points form address range pairs, you can create all of the line events for all of the address line segments with a single run of the Locate Features Along Routes and Summary Statistics tool.

View solution in original post

0 Kudos
8 Replies
RamB
by
Occasional Contributor III
yes, it will always give straight lines. the only solution in arcgis is to manually digitize the curves or to edit vertices of existing lines.

other option is to look at external sources like open street map and bring it to arcgis.

regards,
0 Kudos
DarrenWiens2
MVP Honored Contributor
The way to do this automatically in ArcGIS is to use Network Analyst (see the first example). The manual option is to trace the existing street centreline.

Offsetting the line is a separate question, but I believe you should be able to do it by doing a Copy Parallel on the desired centreline.
0 Kudos
RichardFairhurst
MVP Honored Contributor
Linear Referencing is designed to do exactly this.  An event table with a record giving the measure positions of the two points along the line with an offset field set to either 12 or -12 (the sign depends on the way you set the event offset option as far as whether the offset will be right or left of the line) will create a line that follows the road between the two points and that is offset 12 feet from the road.

First use the Create Route tool to assign measures to roads using the Road Name as the UniqueID (or any other ID system your state may follow).  Complex routes (branching or looped routes) will need some special handling, but most of your roads should be simple routes (one continuous line with ever increasing measures in one direction).

Since you have created your straight lines, use the ObjectID of those lines or some other unique identifier and tag the original address points with that ID using the Spatial Join tool so that each individual point is tagged with the same ID as its pair.

Now use the Locate Features Along Route tool with the routes you have created and the tagged individual points.  Use an appropriate tolerance to get the points to hit the road it is supposed to associate to.  The attributes will tell you which Road the addresses belong to if your RouteID is the Road Name, so get rid of any false matches.

Now use the Summary Statistics tool on the point event table.  Make the Unique Case field the tag value that would create a point pair line and get the Min and Max summary of the measure values of these points from the event table.  This summary has created a line event table.  Add an offset field and calculate it to 12 or -12 (experiment) and make the summary table a new line event table with the offset field option set.  The lines will follow the road between the two point measures with a 12 ft offset.

If you can process all of your points so that they have an ID identifying which points form address range pairs, you can create all of the line events for all of the address line segments with a single run of the Locate Features Along Routes and Summary Statistics tool.
0 Kudos
GregoryCickavage
New Contributor

I am trying to create a vegetation management layer that is offset the road centerline on both sides but is interrupted by no spray areas along that line. I am trying to figure out how to have the offset lines be symbolized with one color for spray zone and a different color for no spray zones. I sounds like I can offset the centerline how you described above but would I need to break each offset line at the milepost where the no spray zone is for it to symbolize correctly? My other thought was just offset the centerline at 10, -10 and offset the no spray zones at 8, -8. I am hoping this all makes sense?

0 Kudos
JoePrimicias
New Contributor II
Thank you all for responding.

S Bhamidipati, I have several US States as my service area so manually digitizing the curves is not a viable option.

D Wiens, the Copy Parallel option seems like it might work initially, however, it also would require manual manipulation.

R Fairhurst, the Linear Referencing option looks to be the most automatic solution, albeit the most cumbersome. It does, however, look very promising. I will give it a go and will post my results accordingly.

Thanks again everyone.
0 Kudos
DarrenWiens2
MVP Honored Contributor
Add an offset field and calculate it to 12 or -12 (experiment) and make the summary table a new line event table with the offset field option set. The lines will follow the road between the two point measures with a 12 ft offset.

This will offset the line forward or back 12 feet along the road, not left or right, correct? I believe the OP wants a sidewalk line, at least that's what I was picturing.
0 Kudos
RichardFairhurst
MVP Honored Contributor
This will offset the line forward or back 12 feet along the road, not left or right, correct? I believe the OP wants a sidewalk line, at least that's what I was picturing.


The offset is left or right of the line and works fine for continuous sidewalks.  Create a field called Offset of type Double.  Calculate it with a value of 12.  Make that field the Offset field of the line event table.  The line will be 12 feet offset from the line to either the right or the left (there is an option to switch which side for positive and negative numbers in the advanced Event layer settings).

Keep in mind the full curvature of a road will only be shown with an offset for a single unbroken event along the road.  if you break the road into two events on a curve the offset will cause gaps to form between the offset segments at those breaks, because the offset is exactly perpendicular to the line and will not close the gap in the center of the long radius side of the curve between the two events and the short radius side of the curve will overlap.
0 Kudos
DarrenWiens2
MVP Honored Contributor
Aha, I stand corrected - was looking at "measure_offset" in Create Routes, not "offset_field" in Make Route Event Layer. Looks like it should work.
0 Kudos