3.3 Instalación de rgee

conda create -n rgee_py python=3.9
activate rgee_py
pip install google-api-python-client
pip install earthengine-api
pip install numpy
  • Listar los ambientes de Python disponibles en anaconda prompt
conda env list
  • Una vez identificado la ruta del ambiente ambiente rgee_py definirla en R (no se debe olvidar cambiar \ por /).
  • Instalar reticulate y rgee, cargar paquetes para procesamiento espacial y configurar el ambiente de trabajo como sigue:
library(reticulate) # Conexión con Python
library(rgee) # Conexión con Google Earth Engine
library(sf) # Paquete para manejar datos geográficos
library(dplyr) # Paquete para procesamiento de datos
library(magrittr)

rgee_environment_dir = "C://Users//sguerrero//Anaconda3//envs//rgee_py//python.exe"

# Configurar python (Algunas veces no es detectado y se debe reiniciar R)
reticulate::use_python(rgee_environment_dir, required=T)

rgee::ee_install_set_pyenv(py_path = rgee_environment_dir, py_env = "rgee_py")

Sys.setenv(RETICULATE_PYTHON = rgee_environment_dir)
Sys.setenv(EARTHENGINE_PYTHON = rgee_environment_dir)
  • Una vez configurado el ambiente puede iniciarlizarse una sesión de Google Earth Engine como sigue:
rgee::ee_Initialize(drive = T)

Notas:

  • Se debe inicializar cada sesión con el comando rgee::ee_Initialize(drive = T).

  • Los comandos de javascript que invoquen métodos con “.” se sustituyen por signo peso ($), por ejemplo:

ee.ImageCollection().filterDate()  # Javascript
ee$ImageCollection()$filterDate()  # R

3.3.1 Descargar información satelital

  • Paso 1: disponer de los shapefile
shape <- read_sf("Recursos/Día1/Sesion2/Shape/DOM.shp")
plot(shape["geometry"])

  • Paso 2: Seleccionar el archivo de imágenes que desea procesar, para nuestro ejemplo luces nocturnas.
luces <- ee$ImageCollection("NOAA/DMSP-OLS/NIGHTTIME_LIGHTS") %>%
  ee$ImageCollection$filterDate("2013-01-01", "2014-01-01") %>%
  ee$ImageCollection$map(function(x) x$select("stable_lights")) %>%
  ee$ImageCollection$toBands()
  • Paso 3: Descargar la información
shape_luces <- map(unique(shape$dam),
                 ~tryCatch(ee_extract(
                   x = luces,
                   y = shape["dam"] %>% filter(dam == .x),
                   ee$Reducer$mean(),
                   sf = FALSE
                 ) %>% mutate(dam = .x),
                 error = function(e)data.frame(dam = .x)))

shape_luces %<>% bind_rows()

tba(shape_luces, cap = "Promedio de luces nocturnasa")

Repetir la rutina para:

dam luces_nocturnas cubrimiento_cultivo cubrimiento_urbano modificacion_humana accesibilidad_hospitales accesibilidad_hosp_caminado
02 97.27735 107.10243 100.28394 111.01645 112.25437 109.66652
03 94.36142 97.71126 96.32667 96.29454 100.55525 105.35470
04 96.53042 95.73335 96.55354 98.67362 102.77860 103.78255
05 91.61138 98.91270 93.17994 95.16236 97.72809 95.59357
01 97.65958 86.79795 106.90397 82.34083 89.53466 87.11064
06 100.52567 107.21708 99.96448 104.95498 94.75524 95.69942
08 94.54495 103.38473 93.84241 102.73169 98.74441 101.96155
09 96.82438 91.41961 97.18788 92.96846 91.28395 90.46557
30 95.68487 91.78986 93.93370 96.83847 98.54392 98.93543
10 92.18900 98.33939 94.53840 97.45111 108.54346 107.34596

Los resultados se muestran en los siguientes mapas

3.3.2 Luces nocturnas

3.3.3 Cubrimiento cultivos

3.3.4 Cubrimiento urbanos

3.3.5 Modificación humana

3.3.6 Tiempo promedio al hospital

3.3.7 Tiempo promedio al hospital en vehiculo no motorizado