Thursday, 15 March 2018

The Effect of Spatial Transformer Choice on Performance

Spatial analysis can be processing-intensive, particularly when a large number of features are involved. If you would like to tune the performance of your workspace, this is a good place to start.

When there are multiple ways to configure a workspace to reach the same goal, it is often best to choose the transformer most specifically suited to your task. As an example, when comparing address points to building polygons, there are a few ways to approach it.

The first example, using a SpatialFilter to test whether or not points fall inside polygons, produces the correct result. But the SpatialFilter is a fairly complex transformer, able to test for multiple conditions and accept a wide range of geometry types. It isn’t optimized for the specific spatial relationship we are analyzing here.

With a SpatialFilter:

The second example uses a PointOnAreaOverlayer, followed by a Tester. The features output are the same as in the first method, but the transformer is optimized for this specific task. The difference in processing time is substantial - from 54.3 seconds in the first configuration, down to 13.7 seconds in the second one.

With a PointOnAreaOverlayer and a Tester:


If performance is an issue in your workspace, look for alternative methods, guided by geometry.

Source: https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Transformers/Transformers/topologybuilder.htm

Tuesday, 6 March 2018

StringSearcher

To split a string into its components using Regular Expressions, you can use the StringSearcher transformer. In the [Contains Regular Expression] field, put parentheses around each group; and in the [Subexpression Matches List Name] field within the [Advanced] group, specify the name of the list that will contain the individual components.



See also https://www.safe.com/webinars/back-fme-school-day-1-data-fme/ at around 1:50:00

Tuesday, 27 February 2018

FME Includer

  1. Create a User Parameter of type Choice with options Yes/No asking whether to include X:


  2. Set up a Tester transformer, with the Pass Criteria set to OR. In the first Test Clause, specify all records that are always to go through. In the second Test Clause, specify $(IncludeX) = Yes.


If the user selects [No], i.e. don’t include X, the second test clause is always False, so only the records that comply with the first test clause go through.
If the user selects [Yes], the second test clause is always True, so all records go through, i.e. no filtering takes place.

Create New Geometry

When creating new geometry (e.g. VertexCreator), use the CoordinateSystemSetter transformer to define the coordinate system.

---

To change the geometry of a line (or polygon) into a single point at its start or end, you can use the Snipper transformer, setting the [Snipping Mode] to [Vertex], and setting the two indexes to [0] for the first vertex, or to [-1] for the last vertex:



---

To create a line or polygon from an array of coordinates, you can use the VertexCreator transformer with the [Mode] set to [Add Point]. However, this doesn't work if there are duplicate points other than start = end in the array.



Instead use the VertexCreator transformer with the [Mode] set to [Replace with Point], followed by a LineBuilder transformer. On the latter, make sure you connect the [Line] or [Polygon] output port!



Get X & Y

To get the X and Y coordinates as attributes, you can use the CoordinateExtractor transformer, using index 0 for the first vertex and index -1 for the last.

Raster Checking

Before processing a raster, check the raster. After loading the raster in the Data Inspector, select the Information button and drag a box to show the raster details.

Clicking in the raster, shows the raster cell details of the clicked cell.

Raster Bands

If the raster is a colour raster, i.e. an image, it should have 3 bands displaying the RGB values;
If the raster is a numerical raster, e.g. a DTM, it should have 1 band displaying the numerical value.

To remove any unwanted bands (e.g. alpha band), use the RasterSelector transformer followed by the RasterBandKeeper or RasterBandRemover transformer.




To separate the RGB bands, use the RasterBandSeparator transformer.

Combine Raster Bands

To combine multiple single-band rasters into a single multi-band raster, use the RasterBandCombiner transformer. For example, combine the ...