library(rasterVis)
library(raster)
library(rgl)
library(rgdal)
library(elevatr)
library(sf)
library(tidyverse)
library(mapview)
(munic <-  st_read("C:/Users/LUISA CARRION/Downloads/76_VALLE_DEL_CAUCA/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp"))
elevation <- get_elev_raster(munic, z = 10)
if (require(rgdal)) {
 rf <- writeRaster(elevation, filename=file.path("/Users/LUISA CARRION/Downloads/76_VALLE_DEL_CAUCA/ADMINISTRATIVO/valle_dem_z10.tif"), format="GTiff", overwrite=TRUE)
}
elevation
class      : RasterLayer 
dimensions : 4095, 3592, 14709240  (nrow, ncol, ncell)
resolution : 0.0006852919, 0.0006852919  (x, y)
extent     : -77.69531, -75.23374, 2.459737, 5.266008  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : C:/Users/LUISA CARRION/AppData/Local/Temp/RtmpQBuZ5Y/file5fc4cb2b22.tif 
names      : file5fc4cb2b22 
values     : -32768, 32767  (min, max)
munic_sp <- as(munic, "Spatial")
plot(elevation, main="This the downloaded DEM [meters]")
plot(munic_sp,col="NA",border="black", add=TRUE)
text(coordinates(munic_sp), labels=as.character(munic$MPIO_CNMBR), 
     col="black", cex=0.20)

elev_crop = crop(elevation, munic_sp)
plot(elev_crop, main="Cropped digital elevation model")
plot(munic_sp, add=TRUE)
text(coordinates(munic_sp), labels=as.character(munic_sp$MPIO_CNMBR), cex=0.2)

elev_crop
class      : RasterLayer 
dimensions : 2854, 2689, 7674406  (nrow, ncol, ncell)
resolution : 0.0006852919, 0.0006852919  (x, y)
extent     : -77.55003, -75.70728, 3.091577, 5.0474  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : memory
names      : file29182d35f46 
values     : -1393, 4574  (min, max)
crs(elev_crop)
CRS arguments: +proj=longlat +datum=WGS84 +no_defs 
library(sp)
spatialref <- CRS(SRS_string="EPSG:32618")
pr3 <- projectExtent(elev_crop, crs=spatialref)

res(pr3) <- 180

rep_elev <- projectRaster(elev_crop, pr3)
rep_elev
class      : RasterLayer 
dimensions : 1204, 1139, 1371356  (nrow, ncol, ncell)
resolution : 180, 180  (x, y)
extent     : 216562, 421582, 341737.7, 558457.7  (xmin, xmax, ymin, ymax)
crs        : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs 
source     : memory
names      : file5fc4cb2b22 
values     : -1392.295, 4552.94  (min, max)
(rep_munic = spTransform(munic_sp,spatialref))
class       : SpatialPolygonsDataFrame 
features    : 42 
extent      : 216628.4, 421558.5, 341813.7, 558001.9  (xmin, xmax, ymin, ymax)
crs         : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs 
variables   : 9
names       : DPTO_CCDGO, MPIO_CCDGO, MPIO_CNMBR,                    MPIO_CRSLC,    MPIO_NAREA, MPIO_NANO,      DPTO_CNMBR,     Shape_Leng,       Shape_Area 
min values  :         76,      76001,     ALCALÁ,                          1536,   41.86090736,      2017, VALLE DEL CAUCA, 0.453826056161, 0.00340901158098 
max values  :         76,      76895,     ZARZAL, Ordenanza 9 de Diciembre 1954, 6292.50083741,      2017, VALLE DEL CAUCA,  6.59527269127,   0.510778519244 
plot(rep_elev, main="DEM de Valle del Cauca")
plot(rep_munic, lwd=0.5, add=TRUE)
text(coordinates(rep_munic), labels=as.character(rep_munic$MPIO_CNMBR), cex=0.2)

hist(rep_elev)

promedio <- cellStats(rep_elev, 'mean')
minimo <- cellStats(rep_elev, 'min')
maximo <- cellStats(rep_elev, 'max')
desviacion  <- cellStats(rep_elev, 'sd')
metricas <- c('mean', 'min', 'max', 'std')
valores <- c(promedio, minimo, maximo, desviacion)
(df_estadisticas <- data.frame(metricas, valores))
slope = terrain(rep_elev,opt='slope', unit='degrees')
aspect = terrain(rep_elev,opt='aspect',unit='degrees')
hill = hillShade(slope,aspect,40,315)
plot(rep_elev,main="DEM for Valle municipalities [meters]", col=heat.colors(25,alpha=0.8))
plot(rep_munic, add=TRUE, lwd=0.5)
text(coordinates(rep_munic), labels=as.character(rep_munic$MPIO_CNMBR), cex=0.2)

plot(slope,main="Pendiente para los municipios de Valle [grados]", col=cm.colors(6,alpha=0.6))
plot(rep_munic, add=TRUE, lwd=0.5)
text(coordinates(rep_munic), labels=as.character(rep_munic$MPIO_CNMBR), cex=0.2)

plot(aspect,main="Aspect for several municipalities [degrees]", col=rainbow(10,alpha=0.7))
plot(rep_munic, add=TRUE, lwd=0.5)
text(coordinates(rep_munic), labels=as.character(rep_munic$MPIO_CNMBR), cex=0.2)

plot(hill,
        col=grey(1:100/100),  
        legend=FALSE,         
        main="DEM for Valle municipalities [m]",
        axes=FALSE) 


plot(rep_elev, 
        axes=FALSE,
        col=terrain.colors(12, alpha=0.6), add=TRUE)

plot(rep_munic, add=TRUE, lwd=0.5)
text(coordinates(rep_munic), labels=as.character(rep_munic$MPIO_CNMBR), cex=0.2)

LS0tDQp0aXRsZTogIlF1aW50byBjdWFkZXJubzogREVNIGRlIFZhbGxlIGRlbCBDYXVjYSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0KbGlicmFyeShyYXN0ZXJWaXMpDQpsaWJyYXJ5KHJhc3RlcikNCmxpYnJhcnkocmdsKQ0KbGlicmFyeShyZ2RhbCkNCmxpYnJhcnkoZWxldmF0cikNCmxpYnJhcnkoc2YpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobWFwdmlldykNCg0KYGBgDQoNCmBgYHtyfQ0KKG11bmljIDwtICBzdF9yZWFkKCJDOi9Vc2Vycy9MVUlTQSBDQVJSSU9OL0Rvd25sb2Fkcy83Nl9WQUxMRV9ERUxfQ0FVQ0EvQURNSU5JU1RSQVRJVk8vTUdOX01QSU9fUE9MSVRJQ08uc2hwIikpDQpgYGANCg0KYGBge3J9DQplbGV2YXRpb24gPC0gZ2V0X2VsZXZfcmFzdGVyKG11bmljLCB6ID0gMTApDQpgYGANCg0KYGBge3J9DQppZiAocmVxdWlyZShyZ2RhbCkpIHsNCiByZiA8LSB3cml0ZVJhc3RlcihlbGV2YXRpb24sIGZpbGVuYW1lPWZpbGUucGF0aCgiL1VzZXJzL0xVSVNBIENBUlJJT04vRG93bmxvYWRzLzc2X1ZBTExFX0RFTF9DQVVDQS9BRE1JTklTVFJBVElWTy92YWxsZV9kZW1fejEwLnRpZiIpLCBmb3JtYXQ9IkdUaWZmIiwgb3ZlcndyaXRlPVRSVUUpDQp9DQpgYGANCg0KYGBge3J9DQplbGV2YXRpb24NCmBgYA0KDQpgYGB7cn0NCm11bmljX3NwIDwtIGFzKG11bmljLCAiU3BhdGlhbCIpDQpgYGANCg0KDQpgYGB7cn0NCnBsb3QoZWxldmF0aW9uLCBtYWluPSJUaGlzIHRoZSBkb3dubG9hZGVkIERFTSBbbWV0ZXJzXSIpDQpwbG90KG11bmljX3NwLGNvbD0iTkEiLGJvcmRlcj0iYmxhY2siLCBhZGQ9VFJVRSkNCnRleHQoY29vcmRpbmF0ZXMobXVuaWNfc3ApLCBsYWJlbHM9YXMuY2hhcmFjdGVyKG11bmljJE1QSU9fQ05NQlIpLCANCiAgICAgY29sPSJibGFjayIsIGNleD0wLjIwKQ0KYGBgDQoNCmBgYHtyfQ0KZWxldl9jcm9wID0gY3JvcChlbGV2YXRpb24sIG11bmljX3NwKQ0KcGxvdChlbGV2X2Nyb3AsIG1haW49IkNyb3BwZWQgZGlnaXRhbCBlbGV2YXRpb24gbW9kZWwiKQ0KcGxvdChtdW5pY19zcCwgYWRkPVRSVUUpDQp0ZXh0KGNvb3JkaW5hdGVzKG11bmljX3NwKSwgbGFiZWxzPWFzLmNoYXJhY3RlcihtdW5pY19zcCRNUElPX0NOTUJSKSwgY2V4PTAuMikNCmBgYA0KDQpgYGB7cn0NCmVsZXZfY3JvcA0KYGBgDQoNCg0KYGBge3J9DQpjcnMoZWxldl9jcm9wKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShzcCkNCnNwYXRpYWxyZWYgPC0gQ1JTKFNSU19zdHJpbmc9IkVQU0c6MzI2MTgiKQ0KYGBgDQoNCmBgYHtyfQ0KcHIzIDwtIHByb2plY3RFeHRlbnQoZWxldl9jcm9wLCBjcnM9c3BhdGlhbHJlZikNCg0KcmVzKHByMykgPC0gMTgwDQoNCnJlcF9lbGV2IDwtIHByb2plY3RSYXN0ZXIoZWxldl9jcm9wLCBwcjMpDQpgYGANCg0KDQpgYGB7cn0NCnJlcF9lbGV2DQpgYGANCg0KYGBge3J9DQoocmVwX211bmljID0gc3BUcmFuc2Zvcm0obXVuaWNfc3Asc3BhdGlhbHJlZikpDQpgYGANCg0KYGBge3J9DQpwbG90KHJlcF9lbGV2LCBtYWluPSJERU0gZGUgVmFsbGUgZGVsIENhdWNhIikNCnBsb3QocmVwX211bmljLCBsd2Q9MC41LCBhZGQ9VFJVRSkNCnRleHQoY29vcmRpbmF0ZXMocmVwX211bmljKSwgbGFiZWxzPWFzLmNoYXJhY3RlcihyZXBfbXVuaWMkTVBJT19DTk1CUiksIGNleD0wLjIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KaGlzdChyZXBfZWxldikNCmBgYA0KDQpgYGB7cn0NCnByb21lZGlvIDwtIGNlbGxTdGF0cyhyZXBfZWxldiwgJ21lYW4nKQ0KbWluaW1vIDwtIGNlbGxTdGF0cyhyZXBfZWxldiwgJ21pbicpDQptYXhpbW8gPC0gY2VsbFN0YXRzKHJlcF9lbGV2LCAnbWF4JykNCmRlc3ZpYWNpb24gIDwtIGNlbGxTdGF0cyhyZXBfZWxldiwgJ3NkJykNCmBgYA0KDQoNCmBgYHtyfQ0KbWV0cmljYXMgPC0gYygnbWVhbicsICdtaW4nLCAnbWF4JywgJ3N0ZCcpDQp2YWxvcmVzIDwtIGMocHJvbWVkaW8sIG1pbmltbywgbWF4aW1vLCBkZXN2aWFjaW9uKQ0KYGBgDQoNCg0KYGBge3J9DQooZGZfZXN0YWRpc3RpY2FzIDwtIGRhdGEuZnJhbWUobWV0cmljYXMsIHZhbG9yZXMpKQ0KYGBgDQoNCmBgYHtyfQ0Kc2xvcGUgPSB0ZXJyYWluKHJlcF9lbGV2LG9wdD0nc2xvcGUnLCB1bml0PSdkZWdyZWVzJykNCmFzcGVjdCA9IHRlcnJhaW4ocmVwX2VsZXYsb3B0PSdhc3BlY3QnLHVuaXQ9J2RlZ3JlZXMnKQ0KaGlsbCA9IGhpbGxTaGFkZShzbG9wZSxhc3BlY3QsNDAsMzE1KQ0KYGBgDQoNCmBgYHtyfQ0KcGxvdChyZXBfZWxldixtYWluPSJERU0gZm9yIFZhbGxlIG11bmljaXBhbGl0aWVzIFttZXRlcnNdIiwgY29sPWhlYXQuY29sb3JzKDI1LGFscGhhPTAuOCkpDQpwbG90KHJlcF9tdW5pYywgYWRkPVRSVUUsIGx3ZD0wLjUpDQp0ZXh0KGNvb3JkaW5hdGVzKHJlcF9tdW5pYyksIGxhYmVscz1hcy5jaGFyYWN0ZXIocmVwX211bmljJE1QSU9fQ05NQlIpLCBjZXg9MC4yKQ0KYGBgDQoNCmBgYHtyfQ0KcGxvdChzbG9wZSxtYWluPSJQZW5kaWVudGUgcGFyYSBsb3MgbXVuaWNpcGlvcyBkZSBWYWxsZSBbZ3JhZG9zXSIsIGNvbD1jbS5jb2xvcnMoNixhbHBoYT0wLjYpKQ0KcGxvdChyZXBfbXVuaWMsIGFkZD1UUlVFLCBsd2Q9MC41KQ0KdGV4dChjb29yZGluYXRlcyhyZXBfbXVuaWMpLCBsYWJlbHM9YXMuY2hhcmFjdGVyKHJlcF9tdW5pYyRNUElPX0NOTUJSKSwgY2V4PTAuMikNCmBgYA0KDQpgYGB7cn0NCnBsb3QoYXNwZWN0LG1haW49IkFzcGVjdCBmb3Igc2V2ZXJhbCBtdW5pY2lwYWxpdGllcyBbZGVncmVlc10iLCBjb2w9cmFpbmJvdygxMCxhbHBoYT0wLjcpKQ0KcGxvdChyZXBfbXVuaWMsIGFkZD1UUlVFLCBsd2Q9MC41KQ0KdGV4dChjb29yZGluYXRlcyhyZXBfbXVuaWMpLCBsYWJlbHM9YXMuY2hhcmFjdGVyKHJlcF9tdW5pYyRNUElPX0NOTUJSKSwgY2V4PTAuMikNCmBgYA0KDQpgYGB7cn0NCnBsb3QoaGlsbCwNCiAgICAgICAgY29sPWdyZXkoMToxMDAvMTAwKSwgIA0KICAgICAgICBsZWdlbmQ9RkFMU0UsICAgICAgICAgDQogICAgICAgIG1haW49IkRFTSBmb3IgVmFsbGUgbXVuaWNpcGFsaXRpZXMgW21dIiwNCiAgICAgICAgYXhlcz1GQUxTRSkgDQoNCg0KcGxvdChyZXBfZWxldiwgDQogICAgICAgIGF4ZXM9RkFMU0UsDQogICAgICAgIGNvbD10ZXJyYWluLmNvbG9ycygxMiwgYWxwaGE9MC42KSwgYWRkPVRSVUUpDQoNCnBsb3QocmVwX211bmljLCBhZGQ9VFJVRSwgbHdkPTAuNSkNCnRleHQoY29vcmRpbmF0ZXMocmVwX211bmljKSwgbGFiZWxzPWFzLmNoYXJhY3RlcihyZXBfbXVuaWMkTVBJT19DTk1CUiksIGNleD0wLjIpDQpgYGANCg0K