Skip to main content
Solved

Filter polygons composed of line+arc (preserve geometry)


jpsalva
Contributor
Forum|alt.badge.img+2

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?

Best answer by takashi

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

View original
Did this help you find an answer to your question?

2 replies

takashi
Supporter
  • Best Answer
  • April 15, 2019

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


jpsalva
Contributor
Forum|alt.badge.img+2
  • Author
  • Contributor
  • April 16, 2019

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


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings