Loading Libraries
library(soilP) # Phosphorus maps
library(raster)
library(sf) # Loading shapefiles for background
library(ggplot2)
Loading stored data from previous workflow steps
data("ISRIC2011") # raster list
data("soilclass") # raster attribute table
data_dir <- system.file("data", package = "soilP", mustWork = TRUE)
extdata_dir <- system.file("extdata", package = "soilP", mustWork = TRUE)
Importing maize accession collection coordinates
accn_file <- system.file("extdata",
"F1PARENTS120.csv",
package = "soilP",
mustWork = TRUE)
accn_info <- read.csv(accn_file)
accn_info$Elevation_class <- classify_elevation(accn_info$Elevation)
Using ISRIC data
ISRIC_P <- extract_P_ISRIC(ISRIC2011$main, accn_info, soilclass,
lon = "Long", lat = "Lat")
Joining, by = "ascending"
Plotting phosphorus retention map
bg_map("Long", "Lat", data = ISRIC_P$georef, bg = mountain) +
ggtitle(paste0("Accession selection for F1s")) +
geom_point(aes(x = Long, y = Lat,
shape = Elevation_class,
colour = main),
data = ISRIC_P$georef) +
scale_color_manual(values = ISRIC_P$pal,
name = "Phosphorus\nRetention\nPotential",
breaks = ISRIC_P$breaks ) +
scale_shape_manual(values = c(16, 17)) +
theme(legend.key.size = unit(0.5, 'lines'))
package ‘maps’ was built under R version 3.4.4

Using Oak Ridge National Laboratory Phosphorus Model
nc_in <- file.path(extdata_dir,
"GLOBAL_PHOSPHORUS_DIST_MAP_1223",
"data", "pforms_den.nc")
ORNL2013 <- brickP(nc_in)
save(ORNL2013,file = file.path(data_dir,"ORNL2013.RData"))
ORNL_P <- extract_P_ORNL(ORNL2013, ISRIC_P$georef,
lon = "Long", lat = "Lat" )
Plotting phosphorus availability map
bg_map("Long", "Lat", data = ORNL_P$georef, bg = mountain) +
ggtitle(paste0("Accession selection for F1s")) +
geom_point(aes(x = Long, y = Lat,
shape = Elevation_class,
colour = lab),
data = ORNL_P$georef) +
scale_colour_gradientn(name = "Labile Inorganic\nPhosphorus",
colours = ORNL_P$pal(180),
limits = c(1, 180)) +
scale_shape_manual(values = c(16, 17))

Compare ISRIC vs ORNL
boxplot(lab ~ main, las = 2, data = ORNL_P$georef,
main = paste0("Corresponcence between Phosphorus Maps\n",
"ORNL 2013 Vs ISRIC 2011"),
xlab = "Phosphorus Retention Potential Main Class",
ylab = "Labile Inorganic Phosphorus")

pairs(ORNL_P$georef[,c("ascending", names(ORNL2013))])

LS0tCnRpdGxlOiAiRXh0cmFjdCBQIERhdGEgZnJvbSBJU1JJQyBhbmQgT2FrIFJpZGdlIE1hcHMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICB0aGVtZTogc3BhY2VsYWIKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQojIExvYWRpbmcgTGlicmFyaWVzCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSJoaWRlIn0KbGlicmFyeShzb2lsUCkgICAgIyBQaG9zcGhvcnVzIG1hcHMKbGlicmFyeShyYXN0ZXIpCmxpYnJhcnkoc2YpICAgICAgICMgTG9hZGluZyBzaGFwZWZpbGVzIGZvciBiYWNrZ3JvdW5kCmxpYnJhcnkoZ2dwbG90MikKYGBgCgojIExvYWRpbmcgc3RvcmVkIGRhdGEgZnJvbSBwcmV2aW91cyB3b3JrZmxvdyBzdGVwcwpgYGB7cn0KZGF0YSgiSVNSSUMyMDExIikgIyByYXN0ZXIgbGlzdApkYXRhKCJzb2lsY2xhc3MiKSAjIHJhc3RlciBhdHRyaWJ1dGUgdGFibGUKZGF0YV9kaXIgPC0gc3lzdGVtLmZpbGUoImRhdGEiLCBwYWNrYWdlID0gInNvaWxQIiwgbXVzdFdvcmsgPSBUUlVFKQpleHRkYXRhX2RpciA8LSBzeXN0ZW0uZmlsZSgiZXh0ZGF0YSIsIHBhY2thZ2UgPSAic29pbFAiLCBtdXN0V29yayA9IFRSVUUpCmBgYAoKIyBMb2FkaW5nIEJhY2tncm91bmQgU2hhcGVmaWxlIGFuZCBTYXZpbmcgaXQgdG8gLlJkYXRhIGZvcm1hdApgYGB7cn0KR01CQV9maWxlIDwtIGZpbGUucGF0aChleHRkYXRhX2RpciwgIkdNQkEgbW91bnRhaW4gaW52ZW50b3J5X1YxLjEiLAogICAgICAgICAgICAgICAgICJHTUJBIG1vdW50YWluIGludmVudG9yeV9WMS4xLVdvcmxkLnNocCIpCm1vdW50YWluIDwtIHN0X3JlYWQoR01CQV9maWxlKQpzYXZlKG1vdW50YWluLCBmaWxlID0gIGZpbGUucGF0aChkYXRhX2RpciwibW91bnRhaW4uUkRhdGEiKSkKYGBgCgojIEltcG9ydGluZyAgbWFpemUgYWNjZXNzaW9uIGNvbGxlY3Rpb24gY29vcmRpbmF0ZXMKCmBgYHtyfQphY2NuX2ZpbGUgPC0gc3lzdGVtLmZpbGUoImV4dGRhdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkYxUEFSRU5UUzEyMC5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSA9ICJzb2lsUCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0V29yayA9IFRSVUUpCmFjY25faW5mbyA8LSByZWFkLmNzdihhY2NuX2ZpbGUpCmFjY25faW5mbyRFbGV2YXRpb25fY2xhc3MgPC0gY2xhc3NpZnlfZWxldmF0aW9uKGFjY25faW5mbyRFbGV2YXRpb24pCmBgYAojIFVzaW5nIElTUklDIGRhdGEKYGBge3J9CklTUklDX1AgPC0gZXh0cmFjdF9QX0lTUklDKElTUklDMjAxMSRtYWluLCBhY2NuX2luZm8sIHNvaWxjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uID0gIkxvbmciLCBsYXQgPSAiTGF0IikKYGBgCgoKIyMgUGxvdHRpbmcgcGhvc3Bob3J1cyByZXRlbnRpb24gbWFwCgpgYGB7ciwgbWVzc2FnZT1GQUxTRX0KYmdfbWFwKCJMb25nIiwgIkxhdCIsIGRhdGEgPSBJU1JJQ19QJGdlb3JlZiwgYmcgPSBtb3VudGFpbikgKwogIGdndGl0bGUocGFzdGUwKCJBY2Nlc3Npb24gc2VsZWN0aW9uIGZvciBGMXMiKSkgKwogIGdlb21fcG9pbnQoYWVzKHggPSBMb25nLCB5ID0gTGF0LAogICAgICAgICAgICAgICAgIHNoYXBlID0gRWxldmF0aW9uX2NsYXNzLAogICAgICAgICAgICAgICAgIGNvbG91ciA9IG1haW4pLCAKICAgICAgICAgICAgICAgICBkYXRhID0gSVNSSUNfUCRnZW9yZWYpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gSVNSSUNfUCRwYWwsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiUGhvc3Bob3J1c1xuUmV0ZW50aW9uXG5Qb3RlbnRpYWwiLAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBJU1JJQ19QJGJyZWFrcyApICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNiwgMTcpKSArCiAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjUsICdsaW5lcycpKQoKYGBgCiMgVXNpbmcgT2FrIFJpZGdlIE5hdGlvbmFsIExhYm9yYXRvcnkgUGhvc3Bob3J1cyBNb2RlbCAKCmBgYHtyfQpuY19pbiA8LSBmaWxlLnBhdGgoZXh0ZGF0YV9kaXIsCiAgICAgICAgICAgICAgIkdMT0JBTF9QSE9TUEhPUlVTX0RJU1RfTUFQXzEyMjMiLAogICAgICAgICAgICAgICJkYXRhIiwgInBmb3Jtc19kZW4ubmMiKQoKT1JOTDIwMTMgPC0gYnJpY2tQKG5jX2luKQoKc2F2ZShPUk5MMjAxMyxmaWxlID0gZmlsZS5wYXRoKGRhdGFfZGlyLCJPUk5MMjAxMy5SRGF0YSIpKQpgYGAKCmBgYHtyfQpPUk5MX1AgPC0gZXh0cmFjdF9QX09STkwoT1JOTDIwMTMsIElTUklDX1AkZ2VvcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9uID0gIkxvbmciLCBsYXQgPSAiTGF0IiApCmBgYAoKIyMgUGxvdHRpbmcgcGhvc3Bob3J1cyBhdmFpbGFiaWxpdHkgbWFwCgpgYGB7cn0KYmdfbWFwKCJMb25nIiwgIkxhdCIsIGRhdGEgPSBPUk5MX1AkZ2VvcmVmLCBiZyA9IG1vdW50YWluKSArCiAgZ2d0aXRsZShwYXN0ZTAoIkFjY2Vzc2lvbiBzZWxlY3Rpb24gZm9yIEYxcyIpKSArCiAgZ2VvbV9wb2ludChhZXMoeCA9IExvbmcsIHkgPSBMYXQsCiAgICAgICAgICAgICAgICAgc2hhcGUgPSBFbGV2YXRpb25fY2xhc3MsCiAgICAgICAgICAgICAgICAgY29sb3VyID0gbGFiKSwgCiAgICAgICAgICAgICBkYXRhID0gT1JOTF9QJGdlb3JlZikgKwogIHNjYWxlX2NvbG91cl9ncmFkaWVudG4obmFtZSA9ICJMYWJpbGUgSW5vcmdhbmljXG5QaG9zcGhvcnVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91cnMgPSBPUk5MX1AkcGFsKDE4MCksCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKDEsIDE4MCkpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNiwgMTcpKQpgYGAKIyBDb21wYXJlIElTUklDIHZzIE9STkwKCmBgYHtyIH0KYm94cGxvdChsYWIgfiBtYWluLCBsYXMgPSAyLCBkYXRhID0gT1JOTF9QJGdlb3JlZiwKICAgICAgICBtYWluID0gcGFzdGUwKCJDb3JyZXNwb25jZW5jZSBiZXR3ZWVuIFBob3NwaG9ydXMgTWFwc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICJPUk5MIDIwMTMgVnMgSVNSSUMgMjAxMSIpLAogICAgICAgIHhsYWIgPSAiUGhvc3Bob3J1cyBSZXRlbnRpb24gUG90ZW50aWFsIE1haW4gQ2xhc3MiLAogICAgICAgIHlsYWIgPSAiTGFiaWxlIElub3JnYW5pYyBQaG9zcGhvcnVzIikKCgpwYWlycyhPUk5MX1AkZ2VvcmVmWyxjKCJhc2NlbmRpbmciLCBuYW1lcyhPUk5MMjAxMykpXSkKYGBg