Skip to contents

Install R packages

pkgs_cran <- c("geojsonsf", "rgee", "reticulate")
pkgs_runiverse <- "kwb.python"
pkgs <- c(pkgs_cran, pkgs_runiverse)
install.packages(pkgs, repos = c("https://cloud.r-project.org",
                                 "https://kwb-r.r-universe.dev"))
#> Installing packages into 'D:/a/_temp/Library'
#> (as 'lib' is unspecified)
#> package 'geojsonsf' successfully unpacked and MD5 sums checked
#> package 'rgee' successfully unpacked and MD5 sums checked
#> package 'reticulate' successfully unpacked and MD5 sums checked
#> Warning: cannot remove prior installation of package 'reticulate'
#> Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
#> D:\a\_temp\Library\00LOCK\reticulate\libs\x64\reticulate.dll to
#> D:\a\_temp\Library\reticulate\libs\x64\reticulate.dll: Permission denied
#> Warning: restored 'reticulate'
#> package 'kwb.python' successfully unpacked and MD5 sums checked
#> 
#> The downloaded binary packages are in
#>  C:\Users\runneradmin\AppData\Local\Temp\RtmpEr5isS\downloaded_packages


### Downgrade to last one supplied by R package "rgee"
kwb.python::conda_py_install("ad4gd", pkgs = list(conda = c("python=3.12.2",
                                                            "numpy"),
                                                  py = "earthengine-api==0.1.370"))
#> * Installing Miniconda -- please wait a moment ...
#> * Downloading "https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe" ...
#> + "C:\Users\runneradmin\AppData\Local\Temp\RtmpEr5isS\Miniconda3-latest-Windows-x86_64.exe" /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /S /D=C:\Users\runneradmin\AppData\Local\r-miniconda
#> + "C:/Users/runneradmin/AppData/Local/r-miniconda/condabin/conda.bat" update --yes --name base conda
#> + "C:/Users/runneradmin/AppData/Local/r-miniconda/condabin/conda.bat" create --yes --name r-reticulate "python=3.10" numpy --quiet -c conda-forge
#> * Miniconda has been successfully installed at "C:/Users/runneradmin/AppData/Local/r-miniconda".
#> + "C:/Users/runneradmin/AppData/Local/r-miniconda/condabin/conda.bat" create --yes --name ad4gd python --quiet -c conda-forge
#> + "C:/Users/runneradmin/AppData/Local/r-miniconda/condabin/conda.bat" install --yes --name ad4gd -c conda-forge "python=3.12.2" numpy
#> python:         C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/python.exe
#> libpython:      C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/python312.dll
#> pythonhome:     C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd
#> version:        3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:42:31) [MSC v.1937 64 bit (AMD64)]
#> Architecture:   64bit
#> numpy:          C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/Lib/site-packages/numpy
#> numpy_version:  1.26.4
#> 
#> NOTE: Python version was forced by use_python() function

Use

Get Lakes

Lakes Berlin

library(magrittr)

url <- "https://fbinter.stadt-berlin.de/fb/atom/Gewaesserkarte/Gewaesserkarte.zip"
tfile <- basename(url)

download.file(url, destfile = basename(url))

unzip(zipfile = tfile,
      exdir = "lakes_berlin")

lakes_berlin <- sf::read_sf("lakes_berlin/Gewaesser_Berlin_Flaechen.shp",
                                  options = "ENCODING=WINDOWS-1252") %>% 
  dplyr::mutate(area = sf::st_area(.)) %>%
  dplyr::filter(stringr::str_starts(GEWART, pattern = "Stehendes"))

Lakes Brandenburg

archive::archive_extract("https://data.geobasis-bb.de/geofachdaten/Wasser/Hydrologie/seen25.zip", 
                         dir = "lakes_bb")
lakes_bb <- sf::read_sf("lakes_bb/Seen25_20211105/seen25.shp")

csv_path <- system.file("extdata/seen25_selected.csv", package = "kwb.satellite")

lakes_bb_selected <- lakes_bb %>%
  dplyr::inner_join(readr::read_csv(csv_path, col_types = "c"), by = "SEE_KZ")


shp_path <- system.file("extdata/brandenburger_see_collection/seen25_wgs84_selection_centroid3.shp", package = "kwb.satellite")

lakes_bb_selected_points <- sf::read_sf(shp_path) %>% 
  dplyr::inner_join(lakes_bb_selected[, c("SEE_KZ", "JP_ID")] %>% 
                      dplyr::rename(geometry_polygon = geometry) %>% 
                      tibble::as_tibble() , by = "JP_ID")

Get Satellite Data

Single Core


plot_solar_azimut_angle <- function(res) {

res %>% 
ggplot2::ggplot(ggplot2::aes(x = datetime_start,
                            y = MEAN_SOLAR_AZIMUTH_ANGLE,
                            col = tile_id)) +
  ggplot2::geom_point() +
  ggplot2::geom_line() +
  ggplot2::theme_bw()
}


reticulate::use_condaenv("ad4gd")

library(rgee)

rgee::ee_Initialize()

system.time(
lakes_01_ptonsurface <- kwb.satellite::gee_get_data_for_years(
  years = 2018,
  lakes = lakes_berlin[1, ],
  #bands = NULL,
  point_on_surface = TRUE)
)

lakes_01_ptonsurface <- kwb.satellite::flatten_results(lakes_01_ptonsurface)
plot_solar_azimut_angle(lakes_01_ptonsurface)


system.time(
lakes_malte_test <- kwb.satellite::gee_get_data_for_years(
  years = 2021:2024,
  lakes = lakes_bb_selected[lakes_bb_selected$SEE_NAME == "Senftenberger See",],
  point_on_surface = FALSE,
  scale = 5,
  col_lakename = "SEE_NAME",
  debug = TRUE)
)

lakes_malte_test_flatten <- kwb.satellite::flatten_results(lakes_malte_test)

plot_solar_azimut_angle(lakes_malte_test_flatten)

Multi Core

reticulate::use_condaenv("ad4gd")
library(rgee)
rgee::ee_Initialize()


csv_path <- system.file("extdata/lakes_bb_malte.csv", package = "kwb.satellite")

lakes_malte <- readr::read_csv(csv_path) %>% 
  sf::st_as_sf(coords = c("long", "lat"),  crs = 4326)

years <- 2017:2023
#kwb.utils::hsOpenWindowsExplorer(exp_dir)

exp_dir <- fs::path_join(c(getwd(), "vignettes/gee/malte_point"))
fs::dir_create(exp_dir)

system.time(
lakes_malte_points_parallel <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_malte,
  point_on_surface = FALSE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

lakes_selected <- lakes_bb %>% 
  dplyr::filter(SEE_KZ %in% lakes_malte$SEE_KZ)

exp_dir <- fs::path_join(c(getwd(), "vignettes/gee/lakes-bb_point-on-surface"))
fs::dir_create(exp_dir)

system.time(
lakes_bb_point_on_surface <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_selected,
  point_on_surface = TRUE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "vignettes/gee/lakes-bb_polygon"))
fs::dir_create(exp_dir)

system.time(
lakes_bb_polygon <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_selected,
  point_on_surface = FALSE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "vignettes/gee/berlin_point"))
fs::dir_create(exp_dir)

system.time(
lakes_bb_point_on_surface <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_selected,
  point_on_surface = TRUE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "vignettes/gee/berlin_polygon"))
fs::dir_create(exp_dir)

system.time(
lakes_bb_polygon <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_selected,
  point_on_surface = FALSE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "gee/lakes-bb-selected_point-on-surface"))

fs::dir_create(exp_dir)

system.time(
lakes_bb_point_on_surface <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_bb_selected[lakes_bb_selected$SEE_NAME == "Heiliger See",],
  point_on_surface = TRUE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "gee/lakes_bb_selected_polygon"))
fs::dir_create(exp_dir)
                           
system.time(
lakes_polygon <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_bb_selected,
  point_on_surface = FALSE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

exp_dir <- fs::path_join(c(getwd(), "gee/lakes-bb-selected-points_point"))
fs::dir_create(exp_dir)

system.time(
lakes_points <- kwb.satellite::gee_get_data_for_years_parallel(
  years = years,
  lakes = lakes_bb_selected_points,
  point_on_surface = FALSE,
  spatial_fun = "mean",
  col_lakename = "SEE_NAME",
  debug_dir = exp_dir, 
  export_dir = exp_dir,
  debug = TRUE)
)

Info

Session Info

sessioninfo::session_info() %>%
  details::details(open = TRUE)


[1m
[36m─ Session info ───────────────────────────────────────────────────────────────
[39m
[22m
 
[3m
[90msetting 
[39m
[23m 
[3m
[90mvalue
[39m
[23m
 version  R version 4.4.0 (2024-04-24 ucrt)
 os       Windows Server 2022 x64 (build 20348)
 system   x86_64, mingw32
 ui       RTerm
 language en
 collate  English_United States.utf8
 ctype    English_United States.utf8
 tz       UTC
 date     2024-05-30
 pandoc   3.1.11 @ C:/HOSTED~1/windows/pandoc/31F387~1.11/x64/PANDOC~1.11/ (via rmarkdown)


[1m
[36m─ Packages ───────────────────────────────────────────────────────────────────
[39m
[22m
 
[3m
[90m!
[39m
[23m 
[3m
[90mpackage    
[39m
[23m 
[3m
[90m*
[39m
[23m 
[3m
[90mversion
[39m
[23m 
[3m
[90mdate (UTC)
[39m
[23m 
[3m
[90mlib
[39m
[23m 
[3m
[90msource
[39m
[23m
 
[37m
[41mD
[49m
[39m archive       1.1.8   
[90m2024-04-28
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   bit           4.0.5   
[90m2022-11-15
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   bit64         4.0.5   
[90m2020-08-30
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   bslib         0.7.0   
[90m2024-03-29
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   cachem        1.1.0   
[90m2024-05-16
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   class         7.3-22  
[90m2023-05-03
[39m 
[90m[2]
[39m 
[90mCRAN (R 4.4.0)
[39m
   classInt      0.4-10  
[90m2023-09-05
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   cli           3.6.2   
[90m2023-12-11
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   clipr         0.8.0   
[90m2022-02-22
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   crayon        1.5.2   
[90m2022-09-29
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   DBI           1.2.2   
[90m2024-02-16
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   desc          1.4.3   
[90m2023-12-10
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   details       0.3.0   
[90m2022-03-27
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   digest        0.6.35  
[90m2024-03-11
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   dplyr         1.1.4   
[90m2023-11-17
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   e1071         1.7-14  
[90m2023-12-06
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   evaluate      0.23    
[90m2023-11-01
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   fansi         1.0.6   
[90m2023-12-08
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   fastmap       1.2.0   
[90m2024-05-15
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   fs            1.6.4   
[90m2024-04-25
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   generics      0.1.3   
[90m2022-07-05
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   glue          1.7.0   
[90m2024-01-09
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   hms           1.1.3   
[90m2023-03-21
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   htmltools     0.5.8.1 
[90m2024-04-04
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   htmlwidgets   1.6.4   
[90m2023-12-06
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   httr          1.4.7   
[90m2023-08-15
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   jquerylib     0.1.4   
[90m2021-04-26
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   jsonlite      1.8.8   
[90m2023-12-04
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   KernSmooth    2.23-22 
[90m2023-07-10
[39m 
[90m[2]
[39m 
[90mCRAN (R 4.4.0)
[39m
   knitr         1.47    
[90m2024-05-29
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   kwb.python    0.1.0   
[90m2024-05-21
[39m 
[90m[1]
[39m 
[1m
[35mhttps://kwb-r.r-universe.dev (R 4.4.0)
[39m
[22m
   lattice       0.22-6  
[90m2024-03-20
[39m 
[90m[2]
[39m 
[90mCRAN (R 4.4.0)
[39m
   lifecycle     1.0.4   
[90m2023-11-07
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   magrittr    * 2.0.3   
[90m2022-03-30
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   Matrix        1.7-0   
[90m2024-03-22
[39m 
[90m[2]
[39m 
[90mCRAN (R 4.4.0)
[39m
   memoise       2.0.1   
[90m2021-11-26
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   pillar        1.9.0   
[90m2023-03-22
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   pkgconfig     2.0.3   
[90m2019-09-22
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   pkgdown       2.0.9   
[90m2024-04-18
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   png           0.1-8   
[90m2022-11-29
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   proxy         0.4-27  
[90m2022-06-09
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   purrr         1.0.2   
[90m2023-08-10
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   R6            2.5.1   
[90m2021-08-19
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   ragg          1.3.0   
[90m2024-03-13
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   rappdirs      0.3.3   
[90m2021-01-31
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   Rcpp          1.0.12  
[90m2024-01-09
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   readr         2.1.5   
[90m2024-01-10
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   reticulate    1.37.0  
[90m2024-05-21
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   rlang         1.1.3   
[90m2024-01-10
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   rmarkdown     2.27    
[90m2024-05-17
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   sass          0.4.9   
[90m2024-03-15
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   sessioninfo   1.2.2   
[90m2021-12-06
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   sf            1.0-16  
[90m2024-03-24
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   stringi       1.8.4   
[90m2024-05-06
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   stringr       1.5.1   
[90m2023-11-14
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   systemfonts   1.0.6   
[90m2024-03-07
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   textshaping   0.3.7   
[90m2023-10-09
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   tibble        3.2.1   
[90m2023-03-20
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   tidyselect    1.2.1   
[90m2024-03-11
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   tzdb          0.4.0   
[90m2023-05-12
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   units         0.8-5   
[90m2023-11-28
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   utf8          1.2.4   
[90m2023-10-22
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   vctrs         0.6.5   
[90m2023-12-01
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   vroom         1.6.5   
[90m2023-12-05
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   withr         3.0.0   
[90m2024-01-16
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   xfun          0.44    
[90m2024-05-15
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   xml2          1.3.6   
[90m2023-12-04
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m
   yaml          2.3.8   
[90m2023-12-11
[39m 
[90m[1]
[39m 
[90mCRAN (R 4.4.0)
[39m


[90m [1] D:/a/_temp/Library
[39m

[90m [2] C:/R/library
[39m

 
[41m
[37mD
[39m
[49m ── DLL MD5 mismatch, broken installation.


[1m
[36m─ Python configuration ───────────────────────────────────────────────────────
[39m
[22m
 python:         C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/python.exe
 libpython:      C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/python312.dll
 pythonhome:     C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd
 version:        3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:42:31) [MSC v.1937 64 bit (AMD64)]
 Architecture:   64bit
 numpy:          C:/Users/runneradmin/AppData/Local/r-miniconda/envs/ad4gd/Lib/site-packages/numpy
 numpy_version:  1.26.4
 
 NOTE: Python version was forced by use_python() function


[1m
[36m──────────────────────────────────────────────────────────────────────────────
[39m
[22m


Python Info

env_yml <- kwb.python::conda_export("ad4gd", export_dir = ".")

paste0(readLines(env_yml), collapse = "\n") %>% 
  details::details(open = TRUE)

name: ad4gd
channels:
  - conda-forge
  - defaults
dependencies:
  - bzip2=1.0.8=hcfcfb64_5
  - ca-certificates=2024.2.2=h56e8100_0
  - intel-openmp=2024.1.0=h57928b3_966
  - libblas=3.9.0=22_win64_mkl
  - libcblas=3.9.0=22_win64_mkl
  - libexpat=2.6.2=h63175ca_0
  - libffi=3.4.2=h8ffe710_5
  - libhwloc=2.10.0=default_h8125262_1001
  - libiconv=1.17=hcfcfb64_2
  - liblapack=3.9.0=22_win64_mkl
  - libsqlite=3.45.3=hcfcfb64_0
  - libxml2=2.12.7=h73268cd_0
  - libzlib=1.3.1=h2466b09_1
  - mkl=2024.1.0=h66d3029_692
  - numpy=1.26.4=py312h8753938_0
  - openssl=3.3.0=h2466b09_3
  - pip=24.0=pyhd8ed1ab_0
  - pthreads-win32=2.9.1=hfa6e2cd_3
  - python=3.12.2=h2628c8c_0_cpython
  - python_abi=3.12=4_cp312
  - setuptools=70.0.0=pyhd8ed1ab_0
  - tbb=2021.12.0=hc790b64_1
  - tk=8.6.13=h5226925_1
  - tzdata=2024a=h0c530f3_0
  - ucrt=10.0.22621.0=h57928b3_0
  - vc=14.3=ha32ba9b_20
  - vc14_runtime=14.38.33135=h835141b_20
  - vs2015_runtime=14.38.33135=h22015db_20
  - wheel=0.43.0=pyhd8ed1ab_1
  - xz=5.2.6=h8d14728_0
  - pip:
      - cachetools==5.3.3
      - certifi==2024.2.2
      - charset-normalizer==3.3.2
      - earthengine-api==0.1.370
      - google-api-core==2.19.0
      - google-api-python-client==2.131.0
      - google-auth==2.29.0
      - google-auth-httplib2==0.2.0
      - google-cloud-core==2.4.1
      - google-cloud-storage==2.16.0
      - google-crc32c==1.5.0
      - google-resumable-media==2.7.0
      - googleapis-common-protos==1.63.0
      - httplib2==0.22.0
      - idna==3.7
      - proto-plus==1.23.0
      - protobuf==4.25.3
      - pyasn1==0.6.0
      - pyasn1-modules==0.4.0
      - pyparsing==3.1.2
      - requests==2.32.3
      - rsa==4.9
      - uritemplate==4.1.1
      - urllib3==2.2.1
prefix: C:\Users\runneradmin\AppData\Local\r-miniconda\envs\ad4gd


You can download the python environment used for this tutorial here: ./environment_ad4gd.yml. You can re-import to R with:

path_to_env_yml <- env_yml
reticulate::conda_create(envname = "ad4gd", environment = path_to_env_yml)