Question

Using the output of the FuzzyParrallelLineFinder - merging/grouping features with many to many matches

  • 10 September 2018
  • 6 replies
  • 6 views

Hi all,

I'm fairly new to FME and have an issue I hope you can help with. I have a shapefile of overhead powerline spans and have been using the FuzzyParrallelLineFinder custom transformer to find spans which (likely) share a right of way (ROW). Each span of the line is a separate feature. Often the ROWs are more complex with not quite parallel lines (hence the Matcher not quite doing the job) but this is just an example:

My ultimate goal is to merge these spans into a single ROW centreline with attributes taken from all of the input spans. The transformer has been working great and the matches I am getting back are really promising and make sense. It provides each matched feature with a _line_id and a _match_id linking to the best case match _line_id, along with various other stats I can use to filter matches. There is also a list of best case and additional matches.

I can use the stats to filter out matches that aren't useful but beyond this I am unsure how to use the output to group spans into ROWs as many spans are matched to many others. Beyond this I can go on to use the highest voltage within each ROW group and assign additional attribution to this but getting there is seeming impossible to my brain right now! Any help would be much appreciated!


6 replies

Badge +2

Hi,

Is it solved?

Pratap

Hi,

Is it solved?

Pratap

Not yet, I've tried using the aggregator/merger etc but I'm still not quite sure how to use the matches effectively...
Badge +2
Not yet, I've tried using the aggregator/merger etc but I'm still not quite sure how to use the matches effectively...
Can I get sample data for checking?

 

 

Here is an example.zip post running through the FPLF transformer, I've fiddled with the coordinate system so it's less recognisable :) @pratap

 

Badge +2
Here is an example.zip post running through the FPLF transformer, I've fiddled with the coordinate system so it's less recognisable :) @pratap

 

Hi,

 

I understood you need to identify parallel lines. But the data you send does not have parallel lines.

 

I'm bit confused, Can I have your email ID?

 

Userlevel 2
Badge +17

Hi @sophiedavison,

This technique will work best for matches with a high overlap value.

Please use a GeometryExtractor to store a copy of the geometry in an attribute on the matched features, then use an Aggregator to aggregate by match_id. In the Aggregator, enable the Generate list, then choose the attributes you need to keep.

Use a ListSorter on the aggregate list to sort descending by voltage. This will put the highest voltage at the beginning of the list. You can then use a ListIndexer with an index of 0 to copy the attributes from that list element to your feature.

A GeometryReplacer can be used to replace the aggregate geometry with the geometry of the highest voltage line, stored in the geometry attribute.

Reply