Skip to main content

Hi,

I would like to know how others have done this. What I would like is to create a road network topology that contains the roads and the intersection nodes. Easy enough. Now, for the intersection nodes I want to tag them with a unique identifier so that when the road network is added to and the intersection nodes are updated that the existing unique ID is not overwritten or lost and only the new intersection nodes have a new Unique ID added to them.

Has anyone done this before? If so, a sample workbench project would be great.

Thanks.

Hi

Depending on your data and requirements, this is a potentially large undertaking. If your requirements are simple I'd recommend generating GUID identifiers on the nodes (UUIDGenerator) and then using e.g. the Matcher or the ChangeDetector to compare existing with updated datasets.

If your source data have a stable identifier that stays unchanged for each update, it should be relatively simple to keep track of the updates in your workspace (Group By). If you only have the geometries to rely on for change detection, you're potentially in for a lot of work trying to guess relationships based on partially operlapping geometries.

I've worked on similar stuff in the past but unfortunately cannot share anything, suffice it to say that for those use cases it ended up being a considerable amount of work.

David


Hmmm, yeah that's what I was thinking as well. Perhaps another approach would be to create the initial GUID's for all the current nodes and pull them into a db and out of the source road network shp file. Any new ones that were added could be appended to the same table. The question would be, how to you prevent the new GUID's from using an already existing number? I would initially need to load all the nodes into the database table and then use the database table to compare with the change detector to the updated road network shp file.

Furthermore, if I'm using a roadnetwork to create the nodes, then regardless of how I do this the nodes will always be recreated from the roadnetwork source and so there will always be new nodes created because they are not in the original source. I hope that makes sense.

At least thats what I'm thinking but I don't know forsure.

This is not going to be simple. I'm sure we're not the only two to have to do something like this.


Ok, I took what you suggested. Here's what I did:

  • using the original road network, I created a node shp file with the use of a topology builder.
  • I then took that same node shp file and compared it through a neighborfinder and output an unmatched candidate shp file. (those would be the changes or new nodes)
  • from there I can then merge the new unmatched into the node shp file.

Each time the roadnetwork is changed or updated, the same process is run which will give the new unmatched nodes to incorporate into the node source. I am getting some strange results in some locations that appear to have road segments snapped together but are creating multiple nodes. I suspect that even though they look snapped, they are off by the smallest amount which is creating the extra nodes.

Not sure how to clean that up yet.


Ok, I took what you suggested. Here's what I did:

  • using the original road network, I created a node shp file with the use of a topology builder.
  • I then took that same node shp file and compared it through a neighborfinder and output an unmatched candidate shp file. (those would be the changes or new nodes)
  • from there I can then merge the new unmatched into the node shp file.

Each time the roadnetwork is changed or updated, the same process is run which will give the new unmatched nodes to incorporate into the node source. I am getting some strange results in some locations that appear to have road segments snapped together but are creating multiple nodes. I suspect that even though they look snapped, they are off by the smallest amount which is creating the extra nodes.

Not sure how to clean that up yet.

Dealing with tolerances is a bit of a constant struggle, but I've found that the AnchoredSnapper to be really helpful in those scenarios.


Reply