Question

Loop?

  • 23 January 2020
  • 4 replies
  • 18 views

Userlevel 1
Badge +5

Hi,

 

I have a 2 sets of features, points and lines whith a common project ID (sewerprojects). I have to perform many actions to get my result. In ideal circumstances i could do this immediately on the entire dataset but because it's a collection of data from different projects, there are no unique ID's and some lines and points are duplicates. I wanted to start with the topologybuilder to create correct small networks per project with unique ID's for the point and lines

Can i run my whole dataset per project ID and write alle projects to the same writer?

I have found a custom looping transformer but i can't figure out how it works

Thx!

Nathalie

 


4 replies

Userlevel 4
Badge +25

It kinda depends on what you need to do exactly (the "many actions" you mention) but broadly speaking, yes, you should be able to group by project id

You may also want to remove duplicates while you're at it, you can do that with the Matcher.

Userlevel 1
Badge +5

I can't remove the duplicates, because they belong to their project ID's. But the geometry is the same and creates problems with the toplologybuilder.

Badge +3

You might want to consider whether looping is appropriate at all. Generally, looping is only needed if the calculated values from one iteration are needed as inputs into the next iteration.

If instead the issue is that it is just that you have multiple, but independent projects/subnetworks, then looping is probably not required. FME can transform these in parallel, and independently from each other, by making use of the "Group By" Parameter. If there are multiple Topologies that you wish to build based on each subnetwork having a different Project ID, then use Project ID as the "Group By" parameter in ToplogyBuilder. This will output independent Toplogies for each Project ID.

This is a form of iteration/looping. What FME does in a logical sense is group up the features into clusters of features, and then sequentially processes each cluster in turn independently of each other (even though physically the process may actually use parallelism to get the best performance).

Badge +22

Since you want to keep the projects independent and have many transformations, rather than setting the Group-By parameter to projectID on every transformer, I would use wrap the process in a custom transformer, and set the (parallel processing) Group By parameter to projectID. You can keep the Parallel Processing level to No Parallelism, or if you have the resources, run multiple projects simultaneously.

Reply