I created a custom transformer named RandomPointGenerator, which creates random points within entire input area features.
Find the transformer in Transformer Gallery (FME Store / Pragmatica).
FME 2014 SP3 build 14391
The implementation has been inspired by this thread in FME Community Answers.
Stratified random point in FME
Here, I illustrate outline of the procedure.
1. Input areas example.
Assume that these areas belong to a same group; these could be parts of an aggregated feature; there may be overlapped areas.
2. Resolve the overlapped area; calculate area for every area.
Deaggregator
AreaOnAreaOverlayer
AreaCalculator
3. Create bounding boxes for each individual area.
BoundingBoxReplacer
4. Dissolve the boxes, and create bounding boxes again; calculate area for every box.
Dissolver
BoundingBoxReplacer
AreaCalculator
5. Compute preferable number of points for each box (based on the area calculation results and the required number of points), and then randomly create points within the boxes, so that the density will be approximately identical.
StatisticsCalculator
BoundsExtractor
AttributeCreator
ExpressionEvaluator
VertexCreator
Cloner
Offsetter
6. Filter the points by the original areas.
SpatialFilter
7. Randomly take points of specified number.
ExpressionEvaluator
Sorter
Sampler
No comments:
Post a Comment