I have a list of projects that need to be geocoded or drawn through some sort of automated process in ArcGIS 10.3 for Desktop. The are listed by primary street, a begin street intersection, and an end street intersection. The data files are in the format listed below.

    Street                Extent 1          Extent 2
    N Spring St           W Temple St       W Arcadia St
    Aviation Boulevard    93rd Street       Century Boulevard
    Le Conte Ave          Hillgard Ave      Levering Ave
    Pershing Drive        Westchester Pkwy  Imperial Highway

I am using a street centerline file that includes each street segment name, a unique ID for each segment, and the begin/end intersections for each segment. The streets observe consistent directionality. I also have available to me a separate intersection shapefile that contains the intersections, with their unique IDs, but I have been unable to figure out how to integrate them correctly into a street centerline shapefile that can be used to create an address locator or linear reference system.

These are the centerline files I am using; they are publicly available from the City of Los Angeles.

I am not trying to map addresses, but to create line segments that begin at Street/Extent 1, and then trace along the polyline specified by Street until it reaches Street/Extent 2.

Here is an example of the line type I am trying to create, using the first example in the codeblock above: enter image description here

The line segment would begin at W Temple St/N Spring St, and then continue along N Spring St until the intersection of W Arcadia St/N Spring St.

I have tried using a linear reference system, but the begin/end fields for the event table have to be numeric, rather than string values. Address locators will only create points for me, but could I create start/end points, and then tell ArcMap to trace along Street 1 between the start end points? I have been unable to figure out a workaround for this so far...

I have limited Python experience (and my workplace has almost none) but am open to a solution that would include it. This would have to be a process that could be integrated into a workflow, and taught to other people/updated regularly. Ideally, this would be integrated into an address locator, but I could also provide the workflow as a Modelbuilder object as well.

1 Answer 1


I do this by building LR Routes for each street first. Then I Use Located Features Along Routes to get Intersection LR events that list the measures associated with every Route the intersections touch.

For intersections with only two names their will be an event for each of the two routes. I create a field that concatenates the two street names together surrounded by curly brackets (i.e. '{N Spring St}{W Temple St}'). the name associated with the route always being the first street name and the cross street the second street name. However, for roads with three names at an intersection the events need to increase from 3 events to 6 events to cover all name pairs and for four names at an intersection the 4 events need to increase to 12 events to cover all possible name pairs.

Create two fields to hold a concatenation of Street with Extent1 or Extent2 respectively in curly brackets. Add a field for a Route Name and two measures fields to the segment table. Now do two separate joins to each of the two fields with concatenations to the name pairs event table name pair concatenation. For each record that finds an event that completes the join you can calculate the Route ID and measure for that end of the line event.

This method is very dependent on how well your data controls for spelling variations between the intersections and the segment event table. If there is good street name control, this method becomes more efficient as your segment table grows larger. I also split out any offset direction and distance contained in the Extent fields into separate fields and use those to add or subtract the offset from the base intersection measures in a new pair of offset measure fields. Finally, I do a summary of the name pairs to find any duplicate pairs in the intersection table and examine records that reference those names to make sure I am using the correct Route and measure for the correct intersection (it helps if you have a known length for the segment to do this validation).

Only the last step or dealing with spelling variations takes me much time, since I have all the other steps pretty much maintained by weekly scripts.

  • Found some time at work to give this a go, but I cannot get past the first step. I have a LR routes created from the street network shapefile. But when I run the LR Locate Features Along Routes, an empty table is created, because the routes cannot be the input and intersect features.
    – JonR
    Jan 11, 2016 at 18:15
  • 1
    The Locate Features Along Route step I mentioned in my first paragraph does not use segments as the input features to be located on the Route. The intersection points are used as the input features to be located on the routes. You said you already have interseection points for your network, so use them. Additionally, I don't use segments with that tool due to behaviors I don't like. I instead extract the two end points from segments, locate those points in two separate operations and then rebuild the segments by joining the two end point measures back together by the common segment ID. Jan 11, 2016 at 19:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.