
Dataset Overview
This dataset provides spatial predictions of Sand (%) content across Namibia at 90 m spatial resolution for three standard soil depth intervals: 0–30, 30–60, 60–100 cm. For each depth interval, the following outputs are provided: predicted mean; 5th percentile; 95th percentile; 90% prediction interval (PI90).
The maps are intended for national- and regional-scale applications and support environmental modelling, land evaluation, and resource management.
Input Soil Data
Model training was based on analytical data from the Namibian Soil Profile Database (NSPD2025) (https://zenodo.org/records/…). Profile locations have spatial accuracy better than 0.0001° and were reprojected to WGS84. Soil observations were depth-harmonised to the three standard depth intervals prior to modelling.
Summary statistics of observed Sand (%):
| 0–30 cm | 30–60 cm | 60–100 cm | |
|---|---|---|---|
| n | 1937 | 1411 | 1030 |
| Min | 11.00 | 2.10 | 2.10 |
| Max | 100.00 | 99.95 | 100.00 |
| Mean | 79.56 | 76.85 | 77.61 |
| Median | 83.80 | 80.91 | 81.92 |
| SD | 15.45 | 16.84 | 17.20 |
| Skewness | -1.26 | -1.11 | -1.19 |
Selected environmental covariates
Environmental covariates included in the final model for each depth interval are:
dem, tpi, chili, topo_diver, flow_accumul, landcover, hand, blue_w, green_w, red_w, nir_w, swir1_w, swir2_w, ndvi_w, savi_w, msavi_w, evi_w, kndvi_w, blue_s, green_s, red_s, nir_s, swir1_s, swir2_s, ndvi_s, savi_s, msavi_s, evi_s, kndvi_s, flow_lend_d, geology, pet, arid_ind, landform_iwa, namsoil_13, aspp, aez, veg_types, aez_n, cc, Slope, VerticalCurvature, kaolinite, calcite, quartz, carbonate, mafic, prec_wc2, tavg_wc2, geology_a, carb_diff, clay_diff, ferr_diff, iron, rock_outdem, tpi, chili, topo_diver, landcover, blue_w, green_w, red_w, nir_w, swir1_w, swir2_w, ndvi_w, savi_w, msavi_w, evi_w, kndvi_w, blue_s, green_s, red_s, nir_s, swir1_s, swir2_s, ndvi_s, savi_s, msavi_s, evi_s, kndvi_s, flow_lend_d, geology, pet, arid_ind, landform_iwa, namsoil_13, aspp, aez, veg_types, aez_n, cc, Slope, calcite, quartz, mafic, prec_wc2, tavg_wc2, geology_a, carb_diff, clay_diff, ferr_diff, iron, rock_outdem, tpi, chili, topo_diver, blue_w, green_w, red_w, nir_w, swir1_w, swir2_w, ndvi_w, savi_w, msavi_w, evi_w, kndvi_w, blue_s, green_s, red_s, nir_s, swir1_s, swir2_s, ndvi_s, savi_s, msavi_s, evi_s, kndvi_s, flow_lend_d, pet, arid_ind, landform_iwa, namsoil_13, aspp, aez, veg_types, aez_n, cc, calcite, quartz, mafic, prec_wc2, tavg_wc2, geology_a, carb_diff, clay_diff, iron, rock_outFull stack of environmental covariates
| Covariate | Description |
|---|---|
dem | Digital elevation model (altitude in metres) |
Slope | Terrain gradient in degrees |
Aspect | Slope facing direction (0–360°) |
Eastness | East-west slope orientation (sin of aspect) |
Northness | North-south slope orientation (cos of aspect) |
HorizontalCurvature | Plan curvature; lateral flow convergence/divergence |
VerticalCurvature | Profile curvature; flow acceleration along slope |
chili | Continuous heat-insolation load index |
tpi | Multi-scale topographic position index (ridges vs valleys) |
topo_diver | Topographic diversity (habitat temperature/moisture variety) |
landforms_alos | Hillslope position classes (15 landform types) |
flow_dir | Local drainage flow direction |
hand | Height above nearest drainage |
flow_accumul | Upstream drainage area (km²) |
river_dist | Distance to nearest drainage line |
flow_lend_d | Flow length downstream to pour point |
flow_len_up | Flow length upstream to farthest source |
landcover | Land cover classes (11 classes, Sentinel-based) |
Prec_wc2 | Mean annual precipitation 1970–2000 (mm) |
tavg_wc2 | Mean annual temperature 1970–2000 (°C) |
arid_ind | Aridity index (precipitation / potential evapotranspiration) |
pet | Potential evapotranspiration 1970–2000 |
blue_s | Landsat blue band (summer) |
blue_w | Landsat blue band (winter) |
green_s | Landsat green band (summer) |
green_w | Landsat green band (winter) |
red_s | Landsat red band (summer) |
red_w | Landsat red band (winter) |
nir_s | Landsat near-infrared band (summer) |
nir_w | Landsat near-infrared band (winter) |
swir1_s | Landsat shortwave infrared 1 (summer) |
swir1_w | Landsat shortwave infrared 1 (winter) |
swir2_s | Landsat shortwave infrared 2 (summer) |
swir2_w | Landsat shortwave infrared 2 (winter) |
ndvi_s | Normalized Difference Vegetation Index (summer) |
ndvi_w | Normalized Difference Vegetation Index (winter) |
savi_s | Soil Adjusted Vegetation Index (summer) |
savi_w | Soil Adjusted Vegetation Index (winter) |
msavi_s | Modified Soil Adjusted Vegetation Index (summer) |
msavi_w | Modified Soil Adjusted Vegetation Index (winter) |
evi_s | Enhanced Vegetation Index (summer) |
evi_w | Enhanced Vegetation Index (winter) |
kndvi_s | Kernel NDVI (summer) |
kndvi_w | Kernel NDVI (winter) |
carb_diff | Carbonate normalization ratio (Landsat) |
clay_diff | Clay normalization ratio (Landsat) |
ferr_diff | Ferrous minerals normalization ratio (Landsat) |
iron | Iron normalization ratio (Landsat) |
rock_out | Rock outcrop normalization ratio (Landsat) |
kaolinite index | ASTER kaolinite mineral index |
calcite index | ASTER calcite mineral index |
quartz index | ASTER quartz mineral index |
carbonate index | ASTER carbonate mineral index |
mafic index | ASTER mafic mineral index |
Aez | Agro-ecological zones of Namibia (1996, categorical) |
aez_n | Updated agro-ecological zones of Namibia (2021) |
cc | Potential carrying capacity of Namibia (2021) |
namsoil_13 | National soil map (13 WRB reference soil groups) |
aspp | Average seasonal plant productivity (1999–2019) |
veg_types | Vegetation types |
geology_a | Major rock groups by type and age |
geology | Lithology units (geological map) |
Landform_iwa | Iwahashi-Pike landform classification (slope, texture, convexity) |
convex | Terrain convexity (ratio of positive curvature cells) |
curv_max | Terrain curvature (rate of change in slope) |
The complete description and source details can be found in S5 – Environmental covariates assembled in the predictor stack.pdf file.
Modelling Framework
Spatial prediction was performed using the Random Forest algorithm. A bootstrap resampling strategy (20 iterations) was implemented, using an 80:20 calibration–validation split with replacement and a fixed random seed.
Soil data preprocessing, hyperparameter tuning, feature selection, post-modelling metrics and external validation were executed in R, while covariate preparation, model implementation, and uncertainty quantification were conducted in Google Earth Engine.
The Random Forest hyperparameters were:
| Depth interval | ntree | mtry | nodesize | sampsize |
|---|---|---|---|---|
| 0–30 cm | 150 | 18 | 2 | 0.47 |
| 30–60 cm | 150 | 41 | 11 | 0.52 |
| 60–100 cm | 150 | 28 | 8 | 0.53 |
where:ntree: number of decision trees in the forestmtry: the number of predictors randomly sampled at each RF splitnodesize: the minimum number of samples required at a leaf node to prevent overfittingsampsize: the in-bag (internal RF bootstrap) sample size drawn to train each tree
Model Performance
Model performance was evaluated for each bootstrap iteration using Root Mean Square Error (RMSE) to quantify prediction errors and Coefficient of Determination (R²) to measure explained variance. The performance metrics, averaged across the 20 bootstrap runs, are:
| Depth interval | R² calibration | RMSE calibration | R² validation | RMSE validation |
|---|---|---|---|---|
| 0–30 cm | 0.849 | 6.825 | 0.448 | 11.612 |
| 30–60 cm | 0.610 | 11.072 | 0.364 | 13.271 |
| 60–100 cm | 0.660 | 10.847 | 0.334 | 13.870 |
Uncertainty Quantification
Uncertainty estimates were derived from the bootstrap prediction distributions. The 5th and 95th percentile maps represent lower and upper prediction limits.
The 90% Prediction Interval Coverage Probability (PICP90) of Sand for the three depth classes were:
| Depth interval | PICP90 |
|---|---|
| 0–30 cm | 91.33 |
| 30–60 cm | 91.71 |
| 60–100 cm | 91.17 |
Data Outputs
Map outputs are provided as Cloud-Optimised GeoTIFFs (WGS84) for GIS and modelling applications, and PNG format for visualisation and reporting.
Data Access
The input soil data used for model training is available in the Namibian Soil Profile Database (NSPD2025) at https://doi.org/10.5281/zen….
Predicted soil maps can be retrieved directly from Zenodo using the quick-start scripts for reading, cropping, and exporting NamSoil layers — without downloading the full files — available at: https://github.com/Gelsleic….
These scripts enable reproducible data retrieval workflows, allowing users to fetch and process specific layers programmatically.
Code Availability
The complete source code for data preprocessing, feature selection, hyperparameter tuning, model implementation, and post-processing is available at:
https://doi.org/10.5281/zen…, also published on https://github.com/Gelsleic….
The Google Earth Engine scripts for covariate preparation, regression matrix export, and Random Forest modelling with 20-iteration bootstrap are available at: https://code.earthengine.go….
Note that the GEE repository runs at a coarser spatial resolution than the published maps to reduce computational cost, memory usage, and export time within the Earth Engine environment. Users can adjust the output resolution to 90 m (or other) by modifying the scale parameter in the export functions, although this will require longer processing times and larger storage allocation.
All scripts, fixed random seeds, and parameter configurations are provided to ensure full reproducibility of the modelling pipeline — from covariate preparation through spatial prediction and uncertainty quantification. Users can replicate the entire workflow or adapt individual components to other study areas or soil properties.
Related Publication
A full methodological description, model evaluation framework, and interpretation of results are provided in:
[Publication DOI to be added]