Skip to main content

Hi all.

I need to identify (and convert) multisurface /curve polygons in a GDB.

The GDBs contain one feature class with many polygons: some of these records are multipart polygons. The data I am working with comes from uncontrolled sources using different GIS programs, so the GDBs are put through a workbench to identify obvious spurious geometries like self-intersections (this works well). However, I am having a recurring problem where the downstream processes in other systems are failing due to multisurface /curve polygons.

I have tried exposing the fme_type and geometry, but they are always “fme_areas”. However, if I run GDAL ogrinfo tool identifies lots of Multisurfaces, some are also CURVEPOLYGONs. For example, GDB today with 8 records had 64 multisurfaces.

Any anyone help point me in the right direction for how I might Id these issues in FME, or incorporate the GDAL tool somehow?

Note: I cannot share example data due to its sensitive nature.

Many thanks

Hi ​@krio ,

You can use AggregateFilter to detect Aggregate (including Multi) geometries.

However, regarding CURVEPOLYGON whose boundary contains non-linear curves e.g. arcs, I don't think there is a transformer to detect that. A possible way is to perform a Python FME Objects API fmeobjects.FMEArea.isBoundaryLinear method with PythonCaller.


Thank you, Takashi.

The AggregateFilter did not detect any aggregate geoms.

I have not used PythonCaller before, but I will give it a try. 

Thanks again


 

Something similar here


Hi ​@krio thanks for your question. I think you may need to test for arcs, these often cause issues. Some suggestions below:

  • if you want to convert the arcs before writing, the ArcStroker could help you
  • if you are trying to filter all geometries that contain arcs (without stroking them), the GeometryPartExtractor may be helpful to filter. You can specify "a child of this part has a Geometry Type of IFMEArc." in your XQuery. “extracted” port would have your arcs

If these suggestions don’t help, perhaps you could provide some sample data to test the logic and investigate further. Happy FMEing!