I have two line dataset that represent the same roads:

  • First one has very precise geometry
  • Second one has an approximative geometry, but very interesting attribute.

What I want to achieve is to have the geometry of the first one and the attribute of the second one. I wish to find an automated way to do it. There are many roads and it would takes decades to do it by hand.

I prepared some examples:

At first I have this data:

What I have at the beginning

And I want to transfer the good attributes to the good geometry:

enter image description here

To obtain something like that:

enter image description here

I had a look at the transfer attribute in ArcMap, however, it seems that it can't split the destination geometry in order to represent all the originals attributes values. I probably need something that first conflate the bad geometry on the good one and then split it according to the attributes.

  • 1
    Split good geometry into segment, spatial join bad geometry attributes to the segments, dissolve.
    – BERA
    Jan 30 '18 at 15:46
  • @BERA But how do I know where to split the good geometry? I can't do it by hand, because there are many many roads.
    – Legisey
    Jan 30 '18 at 15:48
  • There are tools for splitting. Split every 1 meter or shorter if you need more precision
    – BERA
    Jan 30 '18 at 15:49
  • @BERA Are you thinking of something like the methods mentionned in this page? The problem is that I don't know where to split it. All these methods assume that you know this, or that you split it at regular interval, or percentages. In my case, I need to split it according to another line.
    – Legisey
    Jan 30 '18 at 15:53
  • 1
    As far as knowing where to split the good line's geometry, you could try: take the bad geometry features, run feature vertices to points (both ends setting) pro.arcgis.com/en/pro-app/tool-reference/data-management/… and use resulting points to run Split Line at Point (with search radius specified) pro.arcgis.com/en/pro-app/tool-reference/data-management/…. I've not tried personally, but logic says it should help you get the good geometry split at least to prep for attribute transfer.
    – John
    Jan 30 '18 at 17:09

Here's an alternative (more complicated, but generally more accurate) idea:

  1. Use the Split Line at Vertices tool to chop your bad geometry into small discrete segments
  2. Use Generate Points Along Lines and check 'Include End Points' but don't specify a distance - you'll get a point for each endpoint of your segments
  3. Use Near and check 'Location' with that point dataset from step 2 and your good geometry to get the nearest corresponding points on your good geometry
  4. Convert those NEAR_X and NEAR_Y fields to their own dataset using Make XY Event Layer
  5. Use Split Line At Point with your good geometry and and the point dataset from 4

You can now transfer attributes and dissolve. This works well when your vertices have no predictable spacing but your dataset is large. Otherwise you could just use @Legisey's answer with a very small distance (something below the spatial resolution of your dataset, otherwise you risk making your dataset less accurate).


I tried the method proposed by @BERA and it worked pretty well. What I did:

  • Cut the "good geometry" into 10 meters segements
  • Run the Transfer Attribute from ESRI
  • Dissolve the result to reduce the number of segments

I guess that, with this method, I get about 75% of cases right. The other are not mapped. I get very few false positive.

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.