Any thoughts would be helpful and I can provide more clarification if needed.
Any thoughts would be helpful and I can provide more clarification if needed.
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
4) Select each first point from every area group (DuplicateRemover, Key Attributes: <area ID>).
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?