1 Utilizando los datos de clima de lĂ­nea base a nivel global, genere un cĂ³digo en R que permita construir mapas de aptitud climĂ¡ticos para la caña de azĂºcar (con base en los rangos optimos). Grafique los mapas con una escala de colores adecuadas.

a Cargue y generaciĂ³n de mapas base

Procedemos a dejar una Ăºnica escala para el mapa y colores adecuados a la temperatura.

require(rasterVis)
## Loading required package: rasterVis
levelplot(mapatemp,par.settings=BuRdTheme(),main="Temperatura a nivel mundial - Enero - Dic")

Temperatura optima A partir de las cifras optima de temperatura seleccionamos para cada mes los lugares del mundo que cumplen con las condiciones indicadas. Sin embargo, este valor no es suficiente y debemos evaluar que la temperatura media durante el año sea la optima, por lo cual agregaremos en un segundo mapa, aquellas que tienen una temperatura media en el rango definido

temp_optima=mapatemp>=22.5&mapatemp<=28
levelplot(temp_optima,par.settings=infernoTheme(),main="Temperatura Ă³ptima siembra caña azucar - Enero - Dic")

library(RColorBrewer)
library(colorRamp2)
Optima=mapatemp>=22.5&mapatemp<=28
optimasuma=sum(Optima)
optima_2=((optimasuma*100)/12)

my_palette <- colorRampPalette(c("#FAFAFA", "#31A354"))
colors <- my_palette(100)

levelplot(optima_2, par.settings = rasterTheme(region = colors), 
          main = "Temperatura Ă³ptima siembra caña azucar - Enero - Dic")

PrecipitaciĂ³n optima A partir de las cifras optima de precipitaciones seleccionamos para cada mes los lugares del mundo que cumplen con las condiciones indicadas. Sin embargo, este valor no es suficiente y debemos evaluar que la temperatura media durante el año sea la optima, por lo cual agregaremos en un segundo mapa, aquellas que tienen una temperatura media en el rango definido

ruta=list.files("C:/Users/Julian/Downloads/datos_clima/data_global/prec/",full.names = TRUE,pattern = ".asc")
mapaprec=stack(ruta)
names(mapaprec)=month.name
myTheme2 <- rasterTheme(region=brewer.pal(n=6, name='Blues'))
levelplot(mapaprec,par.settings=myTheme2,main="Precipitaciones a nivel mundial - Enero - Dic")

Mapa con nivel optimo durante el año

OptPrec=mapaprec>=125&mapaprec<=290
optprecsuma=sum(OptPrec)
optima_2prec=((optprecsuma*100)/12)
levelplot(optima_2prec,par.settings=myTheme2,main="Nivel optimo promedio de Precipitaciones a nivel mundial")

Mapa con nivel optimo anual

optPrecAño=sum(mapaprec)
optPrecanual=(optPrecAño>=1500&optPrecAño<=35000)
optPrecanual2=(optPrecanual)*100
levelplot(optPrecanual2,par.settings=myTheme2,main="Precipitaciones nivel optimo anual a nivel mundial")

AnĂ¡lisis integrado Se procede a analizar las 3 condiciones en conjunto de temperatura, precipitaciones media y anual. Se genera un primer mapa que consolida las 3 condiciones

mapaconso=stack(optima_2, optima_2prec, optPrecanual)
lugaresoptimos=sum(mapaconso)
lugaresoptimos2=(lugaresoptimos/3)
levelplot(lugaresoptimos2,par.settings=myTheme2,main="Lugares optimos")

Se muestran en un solo imagen los 4 mapas, los individuales de cada condiciĂ³n y uno que suma los lugares que cumplen las 3 condiciones

mapafinal=stack(optima_2, optima_2prec, optPrecanual,lugaresoptimos2)
names(mapafinal) <- c("Temperatura optima", "PrecipiactiĂ³n media optima", "PrecipitaciĂ³n anual optima", "Lugares_optimos")
levelplot(mapafinal,par.settings=myTheme2,main="Analisis caña de azucar")

2 Identifique 2 o 3 paĂ­ses con Ă¡reas de alto potencial para la caña de azĂºcar y realice un corte para estas zonas con el shape global. Grafique los mapas con una escala de colores adecuada.

En un solo mapa marcamos 3 paĂ­ses identificados con un alto potencial, Colombia, Guayana y filipinas

3.Identificar algunos puntos (2 o 3) al azar en la regiĂ³n del valle del cauca (use google maps) y extraer la informaciĂ³n de clima. Grafique las series de tiempo de temperatura y precipitaciĂ³n.

Se seleccionan los municipios de Palmira, Tulua y Florida y se genera el mapa de temperatura de los 12 meses

library(ggplot2)

ubicacion <- data.frame(x = c(-75.50, -76.27, -76.24), y = c(3.85, 4.09, 3.32))
valores_temperatura <- as.data.frame(t(as.data.frame(extract(mapatemp, ubicacion, method = 'bilinear'))))
colnames(valores_temperatura) <- c('Palmira', 'Tulua', 'Florida')

meses <- month.name
data <- data.frame(
  temperatura = as.numeric(unlist(valores_temperatura)),
  Ubicacion = rep(colnames(valores_temperatura), each = nrow(valores_temperatura)),
  Mes = rep(meses, nrow(valores_temperatura))
)

data$Mes <- factor(data$Mes, levels = meses)

ggplot(data, aes(x = Mes, y = temperatura, group = Ubicacion, color = Ubicacion)) +
  geom_line() +
  labs(x = "Mes", y = "Temperatura") +
  ggtitle("Temperaturas en los municipios por mes") +
  scale_color_discrete(name = "Municipios") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylim(16, NA)

Posteriormente se genera el mapa de precipitaciones durante los 12 meses del año para los 3 municipios

library(ggplot2)

ubicacion <- data.frame(x = c(-75.50, -76.27, -76.24), y = c(3.85, 4.09, 3.32))
valores_precipitaciones <- as.data.frame(t(as.data.frame(extract(mapaprec, ubicacion, method = 'bilinear'))))
colnames(valores_precipitaciones) <- c('Palmira', 'Tulua', 'Florida')

meses <- month.name
data <- data.frame(
  precipitaciones = as.numeric(unlist(valores_precipitaciones)),
  Ubicacion = rep(colnames(valores_precipitaciones), each = nrow(valores_precipitaciones)),
  Mes = rep(meses, nrow(valores_precipitaciones))
)

data$Mes <- factor(data$Mes, levels = meses)

ggplot(data, aes(x = Mes, y = precipitaciones, group = Ubicacion, color = Ubicacion)) +
  geom_line() +
  labs(x = "Mes", y = "Precipitaciones") +
  ggtitle("Precipitaciones en los municipios por mes") +
  scale_color_discrete(name = "Municipios") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylim(0, NA)

4.Por medio de alguna mĂ©trica de similaridad (ejemplo: distancia euclidiana) genere un cĂ³digo en R que permita identificar mapas de similaridad a nivel global para los sitios identificados en 3. Grafique los mapas con una escala de colores adecuada.

Se utiliza distancia euclidiana para generar mapas de similaridad con los 3 municipios seleccionadas

4.1. Similaridad con Palmira

coordenadas <- data.frame(x = c(-75.50), y = c(3.85))
valores_temperatura <- as.data.frame(extract(mapatemp, coordenadas, method = 'bilinear'))
row.names(valores_temperatura) <- c('Palmira')

total_coordenadas <- coordinates(mapatemp)
total_temperaturas <- values(mapatemp)

data <- data.frame(total_coordenadas, temperatura = total_temperaturas)
row.names(data) <- paste(data$x, data$y, sep = ";")
data <- data[,3:ncol(data)]

mapa_distancia = sum(mapatemp)/12

distancias <- apply(data, 1, function(row) dist(rbind(valores_temperatura, row),method = "euclidean"))

if (length(distancias) == ncell(mapa_distancia)) {

  valores <- getValues(mapa_distancia)
  valores[] <- distancias
  setValues(mapa_distancia, valores)
} else {
  print("La longitud del vector de precipitaciones no coincide con el nĂºmero de celdas en el RasterLayer.")
}
## class      : RasterLayer 
## dimensions : 300, 720, 216000  (nrow, ncol, ncell)
## resolution : 0.5, 0.5  (x, y)
## extent     : -180, 180, -60, 90  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +no_defs 
## source     : memory
## names      : layer 
## values     : 1.374773, 162.8622  (min, max)

Mapa similaridad Palmira

mytheme <- rasterTheme(region = heat.colors(9))
levelplot(mapa_distancia, main = "Mapa similaridad temperaturas con Palmira", par.settings=mytheme)

4.2. Similaridad con Tulua

coordenadas <- data.frame(x = c(-76.27), y = c(4.09))
valores_temperatura <- as.data.frame(extract(mapatemp, coordenadas, method = 'bilinear'))
row.names(valores_temperatura) <- c('Tulua')

total_coordenadas <- coordinates(mapatemp)
total_temperaturas <- values(mapatemp)

data <- data.frame(total_coordenadas, temperatura = total_temperaturas)
row.names(data) <- paste(data$x, data$y, sep = ";")
data <- data[,3:ncol(data)]

mapa_distancia = sum(mapatemp)/12

distancias <- apply(data, 1, function(row) dist(rbind(valores_temperatura, row),method = "euclidean"))

if (length(distancias) == ncell(mapa_distancia)) {

  valores <- getValues(mapa_distancia)
  valores[] <- distancias
  setValues(mapa_distancia, valores)
} else {
  print("La longitud del vector de precipitaciones no coincide con el nĂºmero de celdas en el RasterLayer.")}
## class      : RasterLayer 
## dimensions : 300, 720, 216000  (nrow, ncol, ncell)
## resolution : 0.5, 0.5  (x, y)
## extent     : -180, 180, -60, 90  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +no_defs 
## source     : memory
## names      : layer 
## values     : 0.5933973, 173.1334  (min, max)

Mapa similaridad Tulua

4.3. Similaridad con Florida

coordenadas <- data.frame(x = c(-76.24), y = c(3.32))
valores_temperatura <- as.data.frame(extract(mapatemp, coordenadas, method = 'bilinear'))
row.names(valores_temperatura) <- c('Florida')

total_coordenadas <- coordinates(mapatemp)
total_temperaturas <- values(mapatemp)

data <- data.frame(total_coordenadas, temperatura = total_temperaturas)
row.names(data) <- paste(data$x, data$y, sep = ";")
data <- data[,3:ncol(data)]

mapa_distancia = sum(mapatemp)/12

distancias <- apply(data, 1, function(row) dist(rbind(valores_temperatura, row),method = "euclidean"))

if (length(distancias) == ncell(mapa_distancia)) {

  valores <- getValues(mapa_distancia)
  valores[] <- distancias
  setValues(mapa_distancia, valores)
} else {
  print("La longitud del vector de precipitaciones no coincide con el nĂºmero de celdas en el RasterLayer.")}
## class      : RasterLayer 
## dimensions : 300, 720, 216000  (nrow, ncol, ncell)
## resolution : 0.5, 0.5  (x, y)
## extent     : -180, 180, -60, 90  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +no_defs 
## source     : memory
## names      : layer 
## values     : 1.1978, 175.4754  (min, max)

Mapa similaridad Florida

mytheme <- rasterTheme(region = heat.colors(9))
levelplot(mapa_distancia, main = "Mapa similaridad temperaturas con Florida", par.settings=mytheme)

5. Compare los mapas generados por ambas aproximaciones y concluya.

Si bien pueden generar resultados similares el mapa de similaridad se enfoca en comparar y encontrar similitudes entre diferentes ubicaciones a partir de uun punto de referencia con la variable de estudiio, mientras el mapa de actitud para este caso se centra en poder determinar los diversos puntos que cumplen con determinadas caracteristicas. En el primer caso, si conocemos que un sitio tiene las condiciones ideales, comparamos cual es similar a este (municipios del valle), mientras que el mapa de actitud nos permite encontrar aquellos puntos que cumplen con unas condiciones ideales