I am trying to map road rehabilitation projects. I have polylines (roads) and I have a table which indicates in each year which part of the road was rehabilitated (for example, for a road HW107 rehabilitated from km 75 to km 87 in 2009, km 22 to km 37 in 2010 and etc. I have these numbers in separate columns).

I know how to select/split each individual polyline manually or by indicating specific distance. However, since I have more than thousand road works I was wondering if there is a tool to do it in bulk?

I am using ArcGIS Desktop 10.3.

  • 1
    Sounds like a linear referencing task, suggest you research the help file on the topic of linear referencing.
    – Hornbydd
    Dec 15, 2017 at 10:12

2 Answers 2


UPDATE: In the end I used Make Route Event Layer from the Linear Referencing tool. It allows to create an event layer (point or a line) by indicating km-start and km-end.


An option would be to break the Highway lines into equal segments of 1km each. You can use ET Geowizards to do this or you can use points along a line tool, then split the line using that tool.

Create a field called "Chainage" and assign the kilometre value to it. Create a field in the broken polyline file called "Road_ID" and using the field calculator assign an ID such with the road name and the chainage.

In your table, make sure you have a record for each kilometre. If road works happened from 27km to 30km in 2009, then there should be 4 records for each kilometre and there should be a field for the year.

In the Table with the road works do the same. Have a field called "Road_ID" and link the Road name and the chainage together. You will then have a series of records with the name of the road and sequential distance. From your example you should have 36 records for 2010 each labelled "HWY107_22" ... to ... "HWY107_37" in one column and 2010 in another.

Once you have this table formatted, you can bring it into ArcMap. Use the table join on the split roads layer with the table you just added using the "Road_ID" as the common field. Once the join is complete, copy the year across into the roads layer. You can then run a dissolve on this roads layer using the Road Name and the Year. That will give you something you can symbolise.

  • I put points along the line and split the lines. However, now when I need to assign kilometer values to each split line, I see that the numbering is quite random, while the points seemed to be quite sequential (for example, line number 1 is in the middle of the road, line number 525 is in the other end, and so on). How can I assign kilometer value in this case?
    – nin_a
    Dec 16, 2017 at 17:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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