Skip to main content
I've never worked with point data in FME before so bear with me.  I have a request to create a DEM or surface model of the highest vegetation returns.  The .LAS file is classified into Ground, Low Vegetation, Medium, Vegetation, and High Vegetation, etc.  My assumption is only use the High Vegetation values and get the max value and create a DEM.  Is this the best approach and if so, what transformers should I use? I've played around in FME but aren't really getting the results I'm hoping for.  Should I use the ExpressionEvaluator to get the max value of Z values?  If so, what's the syntax for this?

 

 

Any thoughts would be helpful and I can provide more clarification if needed.
Hi Jon,

 

 

Assuming that you have created High Vegetation points (Z = value) based on the source dataset and also you have area features from which you need to choose each max value point, a possible approach I can think of is:

 

 

1) Transfer unique ID of area feature to each point which is inside of the area (SpatialFilter).

 

If the areas were grid cells created by the 2DGridAccumulator, a pair of row index and column index of each cell could be used as unique ID.

 

 

2) Extract Z coordinate of every point.

 

If the points don't have the value as its attribute, extract Z coordinate (= value). As you mentioned, the ExpressionEvaluator can be used to do that using "@ZValue()" function (one of FME Feature Functions). Alternatively, you can also use the CoordinateExtractor.

 

 

3) Sort the points by the value descending (Sorter).

 

 

4) Select each first point from every area group (DuplicateRemover, Group By: area ID).

 

Since point features have been sorted by value descending, the first point of each group is max value point in the group.

 

 

5) Transform the result points into a required surface model (DEMGenerator, SurfaceModeller etc.).

 

 

Takashi
Correction for a typo:

 

4) Select each first point from every area group (DuplicateRemover, Key Attributes: <area ID>).
Takashi,

 

 

Thank your for your response.  I had an idea on how I can accomplish this too - if I take low, medium, and high veg and only take the First LiDAR return, this theoretically is the surface of the vegetation.  Do you agree with this approach?

Reply