R/GRTSmh.R
convert_base4frac_to_dec.RdConverts base 4 fractions, representing the full GRTS addresses from the
raster data source GRTSmaster_habitats into decimal (i.e. base 10)
integer values.
Before the actual conversion happens, leading digits from the full GRTS
address can be discarded according to the level specified by the user.
Hence, the result may correspond to the GRTS ranking at a lower spatial
resolution.
convert_base4frac_to_dec(x, level)
| x | A scalar or vector of base 4 fractions, originating from the
|
|---|---|
| level | The number of leading digits to discard from the GRTS base 4
address, i.e. from the ' |
The corresponding decimal (i.e. base 10) integer scalar or vector.
For example, the base 4 fraction 0.0000000000100
is converted into decimal integer 16 (= 4^2) as long as the
level argument is 10 or lower (if not, it will be 0) and
0.0000000000101 is converted into either 17 (
level <= 10) or 1 (if level is 11 or 12).
Long base 4 fractions seem to be handled and stored easier than long (base 4) integers. This approach follows the one of Stevens & Olsen (2004) to represent the reverse hierarchical order in a GRTS sample.
The function works on a vector and retains NA values.
As such, it can be used in raster::calc().
When writing such a raster to a file, it is recommended to use the
INT4U data type (see dataType).
Stevens D.L. & Olsen A.R. (2004). Spatially Balanced Sampling of Natural Resources. Journal of the American Statistical Association 99 (465): 262–278. doi:10.1198/016214504000000250 .
Other functions involved in processing the 'GRTSmaster_habitats' data source:
convert_dec_to_base4frac(),
read_GRTSmh(),
read_GRTSmh_base4frac(),
read_GRTSmh_diffres()
oldoption <- options(list(digits = 15, scipen = 999)) # one scalar: convert_base4frac_to_dec(0.1010101010101, level = 0) #> [1] 17895697 # vector, level 0: convert_base4frac_to_dec(c(NA, 0.1010101010101), level = 0) #> [1] NA 17895697 # vector, level 5: convert_base4frac_to_dec(c(NA, 0.1010101010101), level = 5) #> [1] NA 4369 # same vector, all sensible levels computed: sapply(0:12, function(i) { convert_base4frac_to_dec(c(NA, 0.1010101010101), level = i ) }) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] #> [1,] NA NA NA NA NA NA NA NA NA NA NA NA #> [2,] 17895697 1118481 1118481 69905 69905 4369 4369 273 273 17 17 1 #> [,13] #> [1,] NA #> [2,] 1 options(oldoption)