Skip to main content

I have a polygon dataset.

  • 90% of this dataset is polygons composed of lines
  • 10% of this dataset is polygons composed of lines+arcs.

How to I filter out the 10% lines+arcs records while keeping the geometry intact?

A possible way is:

  1. Add unique ID attribute to every polygon.
  2. Split the feature flow into two streams. On the first stream, extract geometry; On the second stream, convert arcs (if exists) to polylines then extract geometry.
  3. Use the FeatureMerger to merge the second stream to the first stream, grouping by ID and using the geometry as join key.

Polygon boundaries output from the Merged port only consist of Lines, others consist of Lines and Arcs.

0684Q00000ArJk6QAF.png

 

Alternatively, a PythonCaller with this script works as well.

def processFeature(feature):
    area = feature.getGeometry()
    feature.setAttribute('_is_linear', 'yes' if area.isBoundaryLinear() else 'no') 

0684Q00000ArJUzQAN.png


Thank you @takashi the python solution is elegant and exactly what I was looking for!


Reply