Skip to main content

I have an UpdateDetector that compares incoming WFS records with a static table which then gets updated. I was supplying the Attributes to Match value from a user parameter. However, I was asked to make it work with a CSV file that supplies the required values. I was able to create a comma-delimited list by using a listConcatenator.

However, I can't find any way to make the resulting attribute available to the UpdateDetector. I tried just passing it in to the Original node along with the records to be tested, but this always results in a spurious row appearing in the Delete port that just contains the attribute. As a work-around, I can filter out the unnecessary row to ignore it; however, this is a bit kludgy and I'm wondering if there is a better way to do it. I've tried inserting the attribute at other points in the work flow, but this either results in the attribute not being available to the UpdateDetector, or else the same thing happens. It seems like it should be possible to make it work with an attribute, but I can only get the proper behavior using a parameter.

In the screen shot you can see that there are 18 records in the WFS service and 18 records in the comparison table (in other words 18 unchanged and no new records), but 1 record showing up on the Delete port which I filter out.

I think there two things important here:

  1. Make sure that 'Match geometry' is set to None, since the CSV does not contain geometry; and
  2. Make sure that the attribute that needs to be compared between original and revised features has the same name and the same built-up. If there are multiple attributes that need to be checked, you can check each attribute separately, but still the attributes to be compared need to have the same name.

Reply