AD4DG: Google Earth Engine
Michael Rustler
Source:vignettes/ad4gd_google-earth-engine.Rmd
ad4gd_google-earth-engine.Rmd
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)