Question

Split polyline from stand-alone measurement table

  • 23 September 2019
  • 1 reply
  • 7 views

FME'ers!

This was asked in some capacity, but I can't seem to get this to work after reading all replies / documentation / trying numerous things.

Problem: Split a single polyline into multiple lengths based on a table of measurements.

Attempt: FeatureMerger (to get the geometry into the table of measurements)

MeasureGenerator (to apply geometry)

Snipper (to clip the Merged output based on two fields in the measurement table)

Additional Info: Polyline is projected, US Feet, reading from a GDB, writting to a GDB

*I assume I'm missing some logic in the Snipper or missing an iterator of some kind? I've tried numerous iterations of starting/ending, etc. My output is the correct number of records but no change to geometry / length) In other attempts, my output was flattened to the end of the polyline (correct number of records, just geometry at a vertex at the ends of the line).

Losing my head about this one. Any insight would be massive!

Many of you have chimed in previously, and I follow your contributions: @takashi @david_r @gio @nielsgerrits @itay

Thanks for all you do, you're all legends!

 

~Geo

 

 

 

 

 


1 reply

Badge +22

The way I see it you have two options.

One is to iteratively snip the line with looping in a custom transformer (see Iterative Snipper on FME hub for an example with the snips all being the same length). This can be a pain to set up, but is arguably more efficient for complex geometries than option 2.

The second option is to clone your input line as many times as you want pieces, snip each line to the top and bottom measures of the corresponding piece.

I would do this by using the FeatureMerger, attributes only, Generate list. You now have a line with a list containing 23 elements. Explode the line (ListExploder), you now have 23 copies of the original line, each with different values in the MeasureTop, MeasureBtm attributes. Use a Snipper with the starting location set to MeasureTop and the Ending Location set to MeasureBtm.

Reply