Polinomio de Primer orden
precip.points <- geojsonio::geojson_read("./chirps/ppoints.geojson", what="sp")
(Vichada <- shapefile("./ADMINISTRATIVO/MGN_MPIO_POLITICO.shp"))
class : SpatialPolygonsDataFrame
features : 4
extent : -71.07793, -67.4098, 2.737109, 6.324317 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 9
names : DPTO_CCDGO, MPIO_CCDGO, MPIO_CNMBR, MPIO_CRSLC, MPIO_NAREA, MPIO_NANO, DPTO_CNMBR, Shape_Leng, Shape_Area
min values : 99, 99001, CUMARIBO, Decreto 1594 de Ago 5 de 1974, 3898.56891769, 2017, VICHADA, 3.29670807195, 0.316732435778
max values : 99, 99773, SANTA ROSALÍA, Ordenanza 66 de Noviembre 22 de 1996, 65599.7022767, 2017, VICHADA, 18.794382661, 5.3085802966
Vichada_sf <- sf::st_as_sf(Vichada)
(border_sf <- Vichada_sf %>%summarise(area = sum(MPIO_NAREA)))
Simple feature collection with 1 feature and 1 field
geometry type: POLYGON
dimension: XY
bbox: xmin: -71.07793 ymin: 2.737109 xmax: -67.4098 ymax: 6.324317
CRS: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
area geometry
1 100065.9 POLYGON ((-67.814 5.342584,...
(border <- as(border_sf, 'Spatial'))
class : SpatialPolygonsDataFrame
features : 1
extent : -71.07793, -67.4098, 2.737109, 6.324317 (xmin, xmax, ymin, ymax)
CRS object has comment, which is lost in output
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 1
names : area
value : 100065.86486549
(Vichada.sf <- st_as_sf(Vichada) %>% mutate(MUNIC = MPIO_CNMBR, CODIGO = MPIO_CCDGO) %>% select(MUNIC, CODIGO))
Simple feature collection with 4 features and 2 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -71.07793 ymin: 2.737109 xmax: -67.4098 ymax: 6.324317
CRS: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
MUNIC CODIGO
1 SANTA ROSALÍA 99624
2 PUERTO CARREÑO 99001
3 LA PRIMAVERA 99524
4 CUMARIBO 99773
geometry
1 POLYGON ((-70.65378 5.37297...
2 POLYGON ((-67.80972 6.32431...
3 POLYGON ((-69.03359 6.21869...
4 POLYGON ((-68.47074 5.55046...
p.sf <- st_as_sf(precip.points)
(precip.sf = st_intersection(Vichada.sf, p.sf))
although coordinates are longitude/latitude, st_intersection assumes that they are planar
attribute variables are assumed to be spatially constant throughout all geometries
Simple feature collection with 3248 features and 3 fields
geometry type: POINT
dimension: XY
bbox: xmin: -71.075 ymin: 2.774999 xmax: -67.475 ymax: 6.274999
CRS: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
First 10 features:
MUNIC CODIGO lluvia
2 PUERTO CARREÑO 99001 0.8161542
2.1 PUERTO CARREÑO 99001 0.8258479
2.2 PUERTO CARREÑO 99001 0.8074083
2.3 PUERTO CARREÑO 99001 0.8239177
2.4 PUERTO CARREÑO 99001 0.7755996
2.5 PUERTO CARREÑO 99001 0.7823746
2.6 PUERTO CARREÑO 99001 3.5164738
2.7 PUERTO CARREÑO 99001 3.2473364
2.8 PUERTO CARREÑO 99001 0.7987307
2.9 PUERTO CARREÑO 99001 0.7961798
geometry
2 POINT (-67.875 6.274999)
2.1 POINT (-67.825 6.274999)
2.2 POINT (-67.775 6.274999)
2.3 POINT (-67.725 6.274999)
2.4 POINT (-67.675 6.274999)
2.5 POINT (-67.625 6.274999)
2.6 POINT (-68.125 6.224999)
2.7 POINT (-68.075 6.224999)
2.8 POINT (-67.925 6.224999)
2.9 POINT (-67.875 6.224999)
p.sf.magna <- st_transform(precip.sf, crs=3116)
Vichada.sf.magna <- st_transform(Vichada.sf, crs=3116)
(precip2 <- as(p.sf.magna, 'Spatial'))
class : SpatialPointsDataFrame
features : 3248
extent : 1333188, 1732620, 799126.6, 1190067 (xmin, xmax, ymin, ymax)
CRS object has comment, which is lost in output
crs : +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
variables : 3
names : MUNIC, CODIGO, lluvia
min values : CUMARIBO, 99001, 0.541795015335083
max values : SANTA ROSALÍA, 99773, 85.8214721679688
shapefile(precip2, filename='./chirps/precip2.shp', overwrite=TRUE)
precip2$precipitacion <- round(precip2$lluvia, 1)
(Vichada2 <- as(Vichada.sf.magna, 'Spatial'))
class : SpatialPolygonsDataFrame
features : 4
extent : 1332850, 1739856, 794950.2, 1195302 (xmin, xmax, ymin, ymax)
CRS object has comment, which is lost in output
crs : +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
variables : 2
names : MUNIC, CODIGO
min values : CUMARIBO, 99001
max values : SANTA ROSALÍA, 99773
shapefile(Vichada2, filename='./chirps/Vichada2.shp', overwrite=TRUE)
precip2@bbox <- Vichada2@bbox
train_index <- sample(1:nrow(precip2), 0.7 * nrow(precip2))
test_index <- setdiff(1:nrow(precip2), train_index)
ptos_train <- precip2[train_index, ]
ptos_test <- precip2[test_index,]
P <- ptos_train
f.1 <- as.formula(precipitacion ~ X + Y)
P$X <- coordinates(P)[,1]
P$Y <- coordinates(P)[,2]
lm.1 <- lm( f.1, data=P)
grd <- as.data.frame(spsample(ptos_train, "regular", n=500000))
names(grd) <- c("X", "Y")
coordinates(grd) <- c("X", "Y")
gridded(grd) <- TRUE
fullgrid(grd) <- TRUE
proj4string(grd) <- proj4string(ptos_train)
dat.1st <- SpatialGridDataFrame(grd, data.frame(var1.pred = predict(lm.1, newdata=grd)))
r <- raster(dat.1st)
r.m1 <- raster::mask(r, Vichada2)
tm_shape(r.m1) +
tm_raster(n=10, palette="RdBu", midpoint = 43,
title="Interpolación con polinomio de 1er orden \n para precipitacion \n(mm)") +
tm_shape(P) + tm_dots(size=0.02) +
tm_legend(legend.outside=TRUE)

2.KRIGING
f.1 <- as.formula(precipitacion ~ X + Y)
2.1 Variograma Experimental
var.smpl <- variogram(f.1, P, cloud = FALSE, cutoff=200000, width=10000)
plot(var.smpl)

2.2Variograma de Ajuste a los Datos
Ensayo <- autofitVariogram(f.1, P)
summary(Ensayo)
Experimental variogram:
Fitted variogram model:
Sums of squares betw. var. model and sample var.[1] 0.003434569
plot(Ensayo, pch=16, col="black")

dat.fit <- fit.variogram(var.smpl, fit.ranges = TRUE, fit.sills = TRUE, vgm(psill=68.711235, model="Gau", range=46602.27 , nugget=4))
plot(var.smpl, dat.fit, xlim=c(0,150000))

2.3 Superficie de Interpolación
f.1 <- as.formula(precipitacion ~ X + Y)
dat.krg <- krige( f.1, P, grd, dat.fit)
CRS object has comment, which is lost in output
[using universal kriging]
r1 <- raster(dat.krg)
r.k <- raster::mask(r1, Vichada2)
r.k
class : RasterLayer
dimensions : 695, 720, 500400 (nrow, ncol, ncell)
resolution : 554.8374, 554.8374 (x, y)
extent : 1333051, 1732534, 804470.7, 1190083 (xmin, xmax, ymin, ymax)
crs : +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
source : memory
names : var1.pred
values : 0.1595495, 80.58832 (min, max)
tm_shape(r.k) +
tm_raster(n=10, palette="RdBu", auto.palette.mapping=FALSE, midpoint = NA,
title="Universal Kriging\npara precipitacion \n(mm)") +
tm_shape(P) + tm_dots(size=0.02, col="white") +
tm_legend(legend.outside=TRUE)
The argument auto.palette.mapping is deprecated. Please use midpoint for numeric data and stretch.palette for categorical data to control the palette mapping.

r2 <- raster(dat.krg, layer="var1.var")
r.j <- raster::mask(r2, Vichada2)
tm_shape(r.j) +
tm_raster(n=7, palette ="Reds",
title="Kriging Interpolation\nVariance map \n(in squared mm)") +tm_shape(P) + tm_dots(size=0.02) +
tm_legend(legend.outside=TRUE)

r3 <- sqrt(raster(dat.krg, layer="var1.var")) * 1.96
r.l <- raster::mask(r3, Vichada2)
tm_shape(r.l) +
tm_raster(n=7, palette ="Reds",
title="Kriging Interpolation\n95% CI map \n(in mm)") +tm_shape(P) + tm_dots(size=0.02, col="white") +
tm_legend(legend.outside=TRUE)

sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.6 LTS
Matrix products: default
BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0
locale:
[1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 LC_COLLATE=C.UTF-8
[5] LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 LC_PAPER=C.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tmap_2.3-1 gstat_2.0-6 raster_3.1-5 sp_1.4-2
loaded via a namespace (and not attached):
[1] zoo_1.8-8 xfun_0.14 sf_0.9-3 lattice_0.20-38 V8_3.1.0
[6] htmltools_0.5.0 viridisLite_0.3.0 spacetime_1.2-3 yaml_2.2.1 base64enc_0.1-3
[11] XML_3.99-0.3 rlang_0.4.6 e1071_1.7-3 foreign_0.8-75 httpcode_0.3.0
[16] DBI_1.1.0 RColorBrewer_1.1-2 stringr_1.4.0 geojsonio_0.9.2 rgeos_0.5-3
[21] htmlwidgets_1.5.1 leafsync_0.1.0 codetools_0.2-16 evaluate_0.14 knitr_1.28
[26] maptools_1.0-1 crosstalk_1.1.0.1 curl_4.3 class_7.3-15 xts_0.12-0
[31] Rcpp_1.0.4.6 KernSmooth_2.23-16 classInt_0.4-3 lwgeom_0.2-1 leaflet_2.0.3
[36] jsonlite_1.6.1 FNN_1.1.3 packrat_0.5.0 digest_0.6.25 stringi_1.4.6
[41] tmaptools_3.0 grid_3.6.3 jqr_1.1.0 rgdal_1.4-8 tools_3.6.3
[46] magrittr_1.5 lazyeval_0.2.2 geojson_0.3.2 dichromat_2.0-0 crul_0.9.0
[51] rsconnect_0.8.16 rmarkdown_2.1 R6_2.4.1 units_0.6-6 intervals_0.15.2
[56] compiler_3.6.3
LS0tCnRpdGxlOiAiQ8OzZGlnb3MgcGFyYSBsYSBpbnRlcnBvbGFjacOzbiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCiMjIyBQb2xpbm9taW8gZGUgUHJpbWVyIG9yZGVuCgpgYGB7cn0KcHJlY2lwLnBvaW50cyA8LSBnZW9qc29uaW86Omdlb2pzb25fcmVhZCgiLi9jaGlycHMvcHBvaW50cy5nZW9qc29uIiwgd2hhdD0ic3AiKQpgYGAKCmBgYHtyfQooVmljaGFkYSA8LSBzaGFwZWZpbGUoIi4vQURNSU5JU1RSQVRJVk8vTUdOX01QSU9fUE9MSVRJQ08uc2hwIikpCmBgYAoKYGBge3J9ClZpY2hhZGFfc2YgPC0gIHNmOjpzdF9hc19zZihWaWNoYWRhKQooYm9yZGVyX3NmIDwtIFZpY2hhZGFfc2YgJT4lc3VtbWFyaXNlKGFyZWEgPSBzdW0oTVBJT19OQVJFQSkpKQpgYGAKYGBge3J9CiAoYm9yZGVyIDwtIGFzKGJvcmRlcl9zZiwgJ1NwYXRpYWwnKSkgCmBgYApgYGB7cn0KKFZpY2hhZGEuc2YgPC0gc3RfYXNfc2YoVmljaGFkYSkgJT4lIG11dGF0ZShNVU5JQyA9IE1QSU9fQ05NQlIsIENPRElHTyA9IE1QSU9fQ0NER08pICU+JSBzZWxlY3QoTVVOSUMsIENPRElHTykpCmBgYAoKYGBge3J9CnAuc2YgPC0gc3RfYXNfc2YocHJlY2lwLnBvaW50cykKKHByZWNpcC5zZiA9IHN0X2ludGVyc2VjdGlvbihWaWNoYWRhLnNmLCBwLnNmKSkKYGBgCgpgYGB7cn0KcC5zZi5tYWduYSA8LSBzdF90cmFuc2Zvcm0ocHJlY2lwLnNmLCBjcnM9MzExNikKVmljaGFkYS5zZi5tYWduYSA8LSBzdF90cmFuc2Zvcm0oVmljaGFkYS5zZiwgY3JzPTMxMTYpCihwcmVjaXAyIDwtIGFzKHAuc2YubWFnbmEsICdTcGF0aWFsJykpCmBgYAoKYGBge3J9CnNoYXBlZmlsZShwcmVjaXAyLCBmaWxlbmFtZT0nLi9jaGlycHMvcHJlY2lwMi5zaHAnLCBvdmVyd3JpdGU9VFJVRSkKYGBgCgoKCmBgYHtyfQpwcmVjaXAyJHByZWNpcGl0YWNpb24gPC0gcm91bmQocHJlY2lwMiRsbHV2aWEsIDEpCihWaWNoYWRhMiA8LSBhcyhWaWNoYWRhLnNmLm1hZ25hLCAnU3BhdGlhbCcpKQpgYGAKCmBgYHtyfQpzaGFwZWZpbGUoVmljaGFkYTIsIGZpbGVuYW1lPScuL2NoaXJwcy9WaWNoYWRhMi5zaHAnLCBvdmVyd3JpdGU9VFJVRSkKcHJlY2lwMkBiYm94IDwtIFZpY2hhZGEyQGJib3gKYGBgCgpgYGB7cn0KdHJhaW5faW5kZXggPC0gc2FtcGxlKDE6bnJvdyhwcmVjaXAyKSwgMC43ICogbnJvdyhwcmVjaXAyKSkKdGVzdF9pbmRleCA8LSBzZXRkaWZmKDE6bnJvdyhwcmVjaXAyKSwgdHJhaW5faW5kZXgpCnB0b3NfdHJhaW4gPC0gcHJlY2lwMlt0cmFpbl9pbmRleCwgXQpwdG9zX3Rlc3QgIDwtIHByZWNpcDJbdGVzdF9pbmRleCxdCmBgYAoKCmBgYHtyfQpQIDwtIHB0b3NfdHJhaW4KYGBgCgoKYGBge3J9CmYuMSA8LSBhcy5mb3JtdWxhKHByZWNpcGl0YWNpb24gfiBYICsgWSkgCmBgYAoKCmBgYHtyfQpQJFggPC0gY29vcmRpbmF0ZXMoUClbLDFdClAkWSA8LSBjb29yZGluYXRlcyhQKVssMl0KYGBgCgpgYGB7cn0KbG0uMSA8LSBsbSggZi4xLCBkYXRhPVApCmBgYAoKYGBge3J9CmdyZCAgICAgICAgICAgICAgPC0gYXMuZGF0YS5mcmFtZShzcHNhbXBsZShwdG9zX3RyYWluLCAicmVndWxhciIsIG49NTAwMDAwKSkKCm5hbWVzKGdyZCkgICAgICAgPC0gYygiWCIsICJZIikKY29vcmRpbmF0ZXMoZ3JkKSA8LSBjKCJYIiwgIlkiKQpncmlkZGVkKGdyZCkgICAgIDwtIFRSVUUgCmZ1bGxncmlkKGdyZCkgICAgPC0gVFJVRSAgCnByb2o0c3RyaW5nKGdyZCkgPC0gcHJvajRzdHJpbmcocHRvc190cmFpbikKYGBgCgoKYGBge3J9CmRhdC4xc3QgPC0gU3BhdGlhbEdyaWREYXRhRnJhbWUoZ3JkLCBkYXRhLmZyYW1lKHZhcjEucHJlZCA9IHByZWRpY3QobG0uMSwgbmV3ZGF0YT1ncmQpKSkgCmBgYAoKCmBgYHtyfQpyICAgPC0gcmFzdGVyKGRhdC4xc3QpCnIubTEgPC0gcmFzdGVyOjptYXNrKHIsIFZpY2hhZGEyKQpgYGAKCgoKCmBgYHtyfQp0bV9zaGFwZShyLm0xKSArIAogIHRtX3Jhc3RlcihuPTEwLCBwYWxldHRlPSJSZEJ1IiwgbWlkcG9pbnQgPSA0MywgCiAgICAgICAgICAgIHRpdGxlPSJJbnRlcnBvbGFjacOzbiBjb24gcG9saW5vbWlvIGRlIDFlciBvcmRlbiBcbiBwYXJhIHByZWNpcGl0YWNpb24gXG4obW0pIikgKwogIHRtX3NoYXBlKFApICsgdG1fZG90cyhzaXplPTAuMDIpICsKICB0bV9sZWdlbmQobGVnZW5kLm91dHNpZGU9VFJVRSkKYGBgCgoKIyMgMi5LUklHSU5HCgpgYGB7cn0KZi4xIDwtIGFzLmZvcm11bGEocHJlY2lwaXRhY2lvbiB+IFggKyBZKSAKYGBgCgojIyMgMi4xIFZhcmlvZ3JhbWEgRXhwZXJpbWVudGFsCgoKYGBge3J9CnZhci5zbXBsIDwtIHZhcmlvZ3JhbShmLjEsIFAsIGNsb3VkID0gRkFMU0UsIGN1dG9mZj0yMDAwMDAsIHdpZHRoPTEwMDAwKQpgYGAKCmBgYHtyfQpwbG90KHZhci5zbXBsKQpgYGAKCiMjIyAyLjJWYXJpb2dyYW1hIGRlIEFqdXN0ZSBhIGxvcyBEYXRvcwoKYGBge3J9CkVuc2F5byA8LSAgYXV0b2ZpdFZhcmlvZ3JhbShmLjEsIFApCnN1bW1hcnkoRW5zYXlvKQpgYGAKCgpgYGB7cn0KcGxvdChFbnNheW8sIHBjaD0xNiwgY29sPSJibGFjayIpCmBgYAoKCgpgYGB7cn0KZGF0LmZpdCAgPC0gZml0LnZhcmlvZ3JhbSh2YXIuc21wbCwgZml0LnJhbmdlcyA9IFRSVUUsIGZpdC5zaWxscyA9IFRSVUUsIHZnbShwc2lsbD02OC43MTEyMzUsIG1vZGVsPSJHYXUiLCByYW5nZT00NjYwMi4yNwksIG51Z2dldD00KSkKYGBgCgoKYGBge3J9CnBsb3QodmFyLnNtcGwsIGRhdC5maXQsIHhsaW09YygwLDE1MDAwMCkpCmBgYAoKCiMjIyAyLjMgU3VwZXJmaWNpZSBkZSBJbnRlcnBvbGFjacOzbiAKCgpgYGB7cn0KZi4xIDwtIGFzLmZvcm11bGEocHJlY2lwaXRhY2lvbiB+IFggKyBZKSAKYGBgCgpgYGB7cn0KZGF0LmtyZyA8LSBrcmlnZSggZi4xLCBQLCBncmQsIGRhdC5maXQpCmBgYAoKCmBgYHtyfQpyMSA8LSByYXN0ZXIoZGF0LmtyZykKci5rIDwtIHJhc3Rlcjo6bWFzayhyMSwgVmljaGFkYTIpCnIuawpgYGAKCgpgYGB7cn0KdG1fc2hhcGUoci5rKSArIAogIHRtX3Jhc3RlcihuPTEwLCBwYWxldHRlPSJSZEJ1IiwgYXV0by5wYWxldHRlLm1hcHBpbmc9RkFMU0UsIG1pZHBvaW50ID0gTkEsCiAgICAgICAgICAgIHRpdGxlPSJVbml2ZXJzYWwgS3JpZ2luZ1xucGFyYSBwcmVjaXBpdGFjaW9uIFxuKG1tKSIpICsKICB0bV9zaGFwZShQKSArIHRtX2RvdHMoc2l6ZT0wLjAyLCBjb2w9IndoaXRlIikgKwogIHRtX2xlZ2VuZChsZWdlbmQub3V0c2lkZT1UUlVFKQpgYGAKCmBgYHtyfQpyMiAgIDwtIHJhc3RlcihkYXQua3JnLCBsYXllcj0idmFyMS52YXIiKQpyLmogPC0gcmFzdGVyOjptYXNrKHIyLCBWaWNoYWRhMikKCnRtX3NoYXBlKHIuaikgKyAKICB0bV9yYXN0ZXIobj03LCBwYWxldHRlID0iUmVkcyIsCiAgICAgICAgICAgIHRpdGxlPSJLcmlnaW5nIEludGVycG9sYXRpb25cblZhcmlhbmNlIG1hcCBcbihpbiBzcXVhcmVkIG1tKSIpICt0bV9zaGFwZShQKSArIHRtX2RvdHMoc2l6ZT0wLjAyKSArCiAgdG1fbGVnZW5kKGxlZ2VuZC5vdXRzaWRlPVRSVUUpCmBgYAoKYGBge3J9CnIzICAgPC0gc3FydChyYXN0ZXIoZGF0LmtyZywgbGF5ZXI9InZhcjEudmFyIikpICogMS45NgpyLmwgPC0gcmFzdGVyOjptYXNrKHIzLCBWaWNoYWRhMikKCnRtX3NoYXBlKHIubCkgKyAKICB0bV9yYXN0ZXIobj03LCBwYWxldHRlID0iUmVkcyIsCiAgICAgICAgICAgIHRpdGxlPSJLcmlnaW5nIEludGVycG9sYXRpb25cbjk1JSBDSSBtYXAgXG4oaW4gbW0pIikgK3RtX3NoYXBlKFApICsgdG1fZG90cyhzaXplPTAuMDIsIGNvbD0id2hpdGUiKSArCiAgdG1fbGVnZW5kKGxlZ2VuZC5vdXRzaWRlPVRSVUUpCmBgYAoKYGBge3J9CnNlc3Npb25JbmZvKCkKYGBgCgo=