Question

Generalise certain boundaries

  • 27 March 2020
  • 3 replies
  • 11 views

Badge +3

Hi,

I am performing generalisation on multiple polygons. All of these polygons have a shared boundary. I am only interested in preserving certain boundaries. For example I would like to preserve boundaries that fall along an existing boundary such as a field boundary, but if there is a polygon boundary in the middle of this field, I don't want it preserved, I want it generalised. Is this possible in FME?

 

Note: I have access to a separate vector layer with all boundaries i.e. Field boundaries, buildings, water etc.

Hope this makes sense and thanks for any help.

 

Kind regards

B


3 replies

Badge +3

I had a similar project where I needed to manipulate certain portions of a polygon boundary based on the source layers. The solution I found worked best in that case was to use TopologyBuilder.

TopologyBuilder outputs the segments of common Polygon Boundaries onto the Edges Port, an "Edge" being the linear segment common to two adjoining polygons, but it will be split at the points where it stops being the common edge between those Polygons, allowing those Edges to be individually manipulated.

If the parameter, "Propagate All Attributes From Input" is set to Yes, then the resulting Edges will have the Attributes of the Polygons, including such things as the Feature Type. Using something like ListSearcher on the Edges port of TopologyBuilder will allow you to filter out the Edges that belong to Eg. the Field Feature Type.

Badge +3

I had a similar project where I needed to manipulate certain portions of a polygon boundary based on the source layers. The solution I found worked best in that case was to use TopologyBuilder.

TopologyBuilder outputs the segments of common Polygon Boundaries onto the Edges Port, an "Edge" being the linear segment common to two adjoining polygons, but it will be split at the points where it stops being the common edge between those Polygons, allowing those Edges to be individually manipulated.

If the parameter, "Propagate All Attributes From Input" is set to Yes, then the resulting Edges will have the Attributes of the Polygons, including such things as the Feature Type. Using something like ListSearcher on the Edges port of TopologyBuilder will allow you to filter out the Edges that belong to Eg. the Field Feature Type.

Hi @bwn, thanks so much for this help. I really appreciate it. I might be missing something but that "Propagate All Attributes From Input" doesn't appear to be available any longer? I'm running 2019.1.

*edit. I copied another TopologyBuilder from another instance of FME which has the "Propagate All Attributes From Input" option. Strange.

Thanks

B

Badge +3

Hi @bwn, thanks so much for this help. I really appreciate it. I might be missing something but that "Propagate All Attributes From Input" doesn't appear to be available any longer? I'm running 2019.1.

*edit. I copied another TopologyBuilder from another instance of FME which has the "Propagate All Attributes From Input" option. Strange.

Thanks

B

Yes, you're right, looking over the documentation for FME2019+, it appears instead this Parameter has been replaced with "Generate List From ... ". It looks like this is to allow the user finer control over which Port(s) the Source Attributes will appear (in a List) as in earlier versions the Attributes appeared on all Ports, regardless whether you wanted say, only for them to be on the Edges.

Reply