Friday 21 December 2018

Combine Raster Bands

To combine multiple single-band rasters into a single multi-band raster, use the RasterBandCombiner transformer.
For example, combine the DTM and DSM height rasters into a single 2-band raster. Or combine the pluvial, fluvial and combined depth rasters into a single 3-band raster.

See also https://blog.safe.com/2018/08/bring-2d-data-cesiumjs/


Friday 8 June 2018

Overlapping raster with vector data

When overlaying rasters with lines or polygons, don't convert the raster to vector format, but instead convert the line or polygon dataset to raster.

First use a 3DForcer transformer and set the 'elevation' of your lines or polygons to 1. Then use the NumericRasterizer transformer, setting 0 as the Background Value. This will create a binary raster where the lines or polygons have a raster value of 1, and everything else 0.

Then point this rasterized vector dataset and the original raster both to the RasterExpressionEvaluator transformer, and do Preserve; A[0]*[B0]. This will effectively give an intersection raster.


Friday 11 May 2018

Remove duplicates

To remove duplicate records, use the DuplicateFilter transformer.

To remove duplicate geometries, use the Matcher transformer, and take the output from the SingleMatched and NotMatched ports:

Wednesday 4 April 2018

ArcPy in FME

To enable ArcPy in FME:
  1. Make sure you have ArcGIS Desktop Background Geoprocessing (64-bit) and the 64-bit version of FME installed;
  2. In FME, go to Tools > FME Options... > Translation;
  3. Set the Preferred Python Interpreter to C:\Windows\System32\Python32.dll.

After that you can just type in import arcpy in your Python code:




(Note: this solution may work for me because I have ArcGIS Pro installed.)

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.

Combine Raster Bands

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