Use an unstructured grid (triangulation) to connect the elements. This is routinely used in numerical modelling (think computational fluid dynamics) to generate linked data sets from scatter data (such as this) in 2 and 3D (i.e. a surface and a volume).
That will work in about 50-70% of cases in the real world depending on the quality of your data and how sensitive you are to errors. For the remaining 30-50% you have to fix things by hand. The further problem is there is no good heuristics to separate the cases where it worked from where it didn't, so you still have to go through all the data to flag the cases which have to be fixed. Trust me, if you can come up with a way to make it work in general, you could build a very successful company around selling that software.