I'm faced with the problem of matching two street networks. I have these two differently sourced networks. The links in each network can be segmented, i.e. there is not necessarily a single whole link between two intersections, instead the link can be broken into an arbitrary number of segments with different attributes.
I should transfer the attributes from one network to the features of the other network and I figured for doing that I will have to match corresponding streets/street segments.
My current idea is to densify the links in either network and then do an analysis of the cumulative distances between vertices in the two networks? If the nodes of two segments overall have small distances from each other, the two links probably correspond? However, I can see problems if two corresponding road segments are expressed in links of wildly different length in the two networks. That notwithstanding, I'm unsure as to how to best go about implementing a method that would analyse the two networks and maybe also offer a way of visually exploring the quality of the matching.
On the plus side I'm familiar (to different degrees) with many platforms (ArcGIS, QGIS, SAGA, R, Python, ...) and can install any promising tool. I appreciate any pointers you may be able to give.
Answer
A robust method to match networks is described in Mustière, S., Devogele, T., Dec. 2008. Matching networks with different levels of detail. GeoInformatica 12 (4), 435-453.. It has been used at the French national mapping agency to match 2 geographical databases with different levels of detail (see image below). The purpose was to do exactly what you need: Transfer of attributes.
This matching process compares the two network elements taking into account geometrical and also topological criteria: Network elements are not matched only if they are closed to each other (using Hausfdorff distance) and with comparable shapes, but also if they are connected to other network elements that are matched together. One-to-many relations are used.
A good news: This process is implemented in the opensource GéOxygene library. This document describes how to use it. Bad news: You have to speak both Java and French to use it...
No comments:
Post a Comment