aqp
aqp copied to clipboard
AWC estimation by LUT
It would be great to have our LUT-based approach to estimating AWC ranges by texture class, fragment volume, SOM available in an {aqp} function. Thanks @brownag for getting us close: estimateAWC.
TODO
- [ ] develop test/evaluation dataset
- [ ] parity with NASIS if possible
- [ ] compare with a couple of manual estimates
- [x] qualitative (order-of-magnitude) comparison with ROSETTA
In many cases estimateAWC()
gives values similar to those expected by NASIS validations on aggregate component data. The validation "allowed ranges" are calculated from the (usually also calculated) water retention difference. On occasion I need to adjust some values (often the LOW) due to slight offsets in 2nd decimal place (usually 0.01 off from expected limit) in order to pass validation.
I am not sure that we can achieve NASIS parity (i.e. estimateAWC()
always produce values that "pass") without also having estimates of parameters like 1/3 bar bulk density and sieve/fragment size ranges that figure into the water content calculations. Reproducing the cascade of NASIS pedotransfer functions for water content related inputs might be worth revisiting in https://github.com/ncss-tech/pedotransfR ... however a simpler approach using generalized horizons to estimate organic matter content and bulk density might get us most of the way there.
Finally working my way back to this issue. Achieving parity with NASIS isn't important, after all this is just an estimate.
Some observations:
-
estimateAWC('si', omcl = 1)
returnsNA
, seems like "silt" texture class is missing from the LUT. - I need to study the code more carefully, but I think that
approxfun()
would be a more generic solution to supplying an aggregateFUN
, and/or in the rock fragment + EC corrections. I'll work on an example after further study. - Preliminary comparisons between
estimatesAWC()
and a simplistic AWC derived from theROSETTA.centroids
can be found inmisc/estimateAWC-vs-ROSETTA-centroids.R
- In general the ROSETTA values are lower, which makes sense → those estimates do not incorporate the possible effects of organic matter.
- A simple sanity check on
omcl
to ensure that it is within the expected set of values would prevent some user errors.