I am building validation rules for 3D buildings. One of the rules I would like to test is to check that all the surfaces (walls, ground surfaces, roofs) are not crossing each other.
When I test this with dummy data, this works fine using the SpatialRelator. (Test to perform: Crosses)
[I create dummy data by creating 2D-lines an extrude them (some of them with a constant extrusion height, some of them with and extrusion vector) so I get surface which intersect somewhere in 3D (and the intersection is a line) and the SpatialRelator detects my crossing objects. So this works fine.]
When I test the same with real data (and I know some of the surfaces do cross, the SpatialRelator doesn not detect the crossings.
I have the impression that the difference is the geometry type of my "surfaces".
In my dummy data the Geometry is IFMECompositeSurface and contains a IFMEFace and an Appearance. (it is the extruder who changes the geometry-type from line into IFMECompositeSurface)
My real data have a geometry type IFMEMultiArea and contains and IFMEPolygon with a boundary (So normal polygons, but with 3D vertices in X, Y and Z)
So I assume I need to change IFMEMultiArea into IFMECompositeSurface. But I don't succeed in doing so.
I thought I would need the GeometryCoercer and set the geometrytype to "fme_composite_surface".
But this doesn't change anything. The help of the GeometryCoercer states :
"If you try to set the feature's geometry to fme_composite_surface and the geometry of the feature is not a multi-surface or brep solid, or extrusion or box or csg solid, then the feature's geometry will be unchanged. An exception for this option is when the source feature contains a mesh, in which case this option will produce a multi-surface."
So, I'll need something else... any suggestions on creating IFMECompositeSurfaces?
Thanks
Bruno