Skip to main content

I have 2 feature types in my work space. One being a report from field staff that collects data on manholes and another being a shapefile containing a "master" set of manhole data.

 

I want to match features from the report to the master manhole shapefile based on an asset number, then filter out the features that are outside the +/- 20cm e.g. if the master manhole data has a depth of 1.1m and the report has a depth of 1.05 i want to ignore it, but if the report had a depth of 1.3m i want it in my end result.

 

I currently have my 2 readers going into a FeatureMerger which compares the asset numbers and any matching are allowed through. I then have those merged results going to a ExpressionEvaluator which is subtracting the report depths from the Master manhole depths. All that is feeding into a .xlsx writer which produces a spreadsheet that i can look at and decide if i want to update the depth in the master manhole shapefile.

 

I have a tester in their coming off of the UnmergedRequestor port on the FeatureMerger that is catching all the asset numbers that didn't match (possible mis-type or forgot a number etc.).

image

A Tester after (or even instead of) the ExpressionEvaluator should allow you to select just those records. If the (absolute) difference is more than 0.2 they get passed.


A Tester after (or even instead of) the ExpressionEvaluator should allow you to select just those records. If the (absolute) difference is more than 0.2 they get passed.

How would i set up a tester for that? Sorry, i'm new to FME.


Use tester with Left Value: Arithmetic Editor depth1-depth2, Operator: In Range, Right Value (-0.2,0.2).

Tester In RangeThis will output the features that have a difference of less than +/-0.2m on the Passed port and the features with differences greater than +/-0.2m on the Failed port.


Reply