I have a task which I really want to undertake in Manifold 9 due to the volume of data involved. Unfortunately however it will involve using grid maths and conditional logic to manipulate and combine grids (as would be achieved via Surface > Transform in Mfd8).
I am attempting to apply the surface ‘texture’ of more detailed, but geographically restricted lidar data to a coarser but geographically extensive DEM. This might sound like an odd thing to wish to do, but the additional information encoded in the lidar ‘texture’ is very useful for fine guidance of covariates used in digital soil mapping of low lying areas.
To this end, I have created a simple proof of concept in Mfd8 which I have outlined below, but ideally would like to complete the process in Mfd9 due to the volume of lidar data rather than processing tile by tile in Mfd8.
Is this sort of processing currently available in Mfd9 given that while the two grids are expressed in the same projection, the pixel dimensions and offsets are different?
BTW Merge in Mfd9 won’t work for me in this case due to height differences between the DEM and Lidar data creating a large height step along the join line.
Mfd8 Processing steps (please feel free to make any suggestions for improvements as this is really just a proof of concept):
Harvest the lidar texture (from [LIDAR_DEM])
This I have done as simply as possible, by generating a highly smoothed 'average' lidar surface using the median pixel value over an arbitrary wide window here 5 pixels deep (11x11 window). I subtract this 'average' surface from the unmodified lidar to retain the texture without the heights.
[LIDAR_DEM] - MedValue([LIDAR_DEM], 5)
The resulting grid is called [LIDAR_TEXTURE].
Combine the lidar texture and the coarse DEM data ([BASE_DEM])
Combination is achieved using conditional statements. If the lidar texture is null (here -9999), use the coarser base dataelse use the coarse DEM plus the lidar texture. Because the range of values in the texture is small, this doesn't really change the overall height of the base DEM, rather only imposes the local texture which is more important than the height.Combination by this method will also not create a significant step in heights across the lidar/coarse DEM boundary.
IIf([LIDAR_TEXTURE] = -9999, [BASE_DEM], [BASE_DEM] + [LIDAR_TEXTURE])
The resulting grid is called [BASE RESULT].
The result of this conditional statement does leave some pixel artefacts along the join line between the datasets (not sure why). I have smoothed these using something like:
[BASE RESULT FINAL]:
IIf([BASE RESULT]>5000, MedValue([BASE RESULT], 4), [BASE RESULT])
Landsystems Ltd ... Know your land | www.landsystems.co.nz