I have two point clouds, one with demographic and one with electoral data. Points in both clouds represent the same empirical entity (say, a village, or an urban neighbourhood), but are not in the exact same lat/long (different datasources, GPS inaccuracies, etc). Moreover, one village can have several points in each cloud. I am looking for a cluster or nearest neighbor algorithm which allows me to merge both point clouds. I have thought about two strategies:
a) do a nearest neighbor matching, starting from the first point cloud and adding a variable to each point that directs me to the respective closest point in the second point cloud. The problem is that no method for nearest neighbor matching which I found (GRASS, SAGA, R) ensures that all points in the second cloud are picked at least once as this "respective closest point" for the first cloud. A neverending circle which could probably approximately be optimized - but I have no idea how. Any suggestions welcome.
b) the second strategy sees it as a clustering problem, in which I attempt to recreate the underlying empirical entity "village", which might contain multiple electoral and demographic points, but must contain at least one of each type. In other words, I would need a bottom-up hierarchical cluster algorithm which groups points together based on their spatial proximity, but simultaneously (!) ensures that each cluster contains at least one point from the electoral point cloud and one point from the demographic point cloud. Again: any suggestions welcome.
c) there are probably other solutions that I am unaware of - I am truly a beginner here...
It would be marvellous if somebody could point me in the right direction.