Hi!
I've been struggling with this task for a while now and need some help.
I have a set of 2D lines (sewage lines if anyone is interested), with a "_lineID" attribute.
I also have set of known 3D points on those lines. Some are on end nodes, some are on a vertex. These points also have the corresponding "_lineID" attribute.
Now I want to use these known points to get the lines into 3D, interpolating any line vertices in between which doesn't have a known height. However, I'm having problems with this.
I've tried to implement a NeighborFinder with a Group By: _lineID to help where there are points located in the same XY position, only differing in height (see attached screen shot below - the yellow dot is actually four points in the point file, each with a different "_lineID").
This is followed up by a 3DForcer. This part works fine, but I can't manage to re-build the lines again (using a LineBuilder) since there are now both these 3D points and vertices on the original lines which are only 2D points.

The 3DInterpolator transformer is also needed I guess, but it only works on a line between two known 3D points, disregarding any known point in between. A line with several known points (like line 119 in the screenshot below) would have to be divided first - maybe with a PointOnLineOverlayer.
I've also tried the SurfaceDraper to "drop" a line on the known 3D points, but it has several problems; 1) it needs at least three known points on the line to form a surface (many lines only have two known points), and 2) if you have a line that is bending in 2D, points outside the surface created by the known 3D points will be given extrapolated heights and not correctly interpolated ones.
My question is similar to chrst's question (did you develop it further, @chrst ?), but I haven't been able to implement it correctly in my workspace.
Anyone that can help me with this?
Zipped file with a small sample of lines and points are attached: