Skip to content

Commit ac0d52f

Browse files
committedMar 7, 2025
agrego stringr para corregir error (no funcionó)
1 parent 71a2cea commit ac0d52f

8 files changed

+291
-291
lines changed
 

‎notebooks/extraccion_reflect.qmd

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ if (nrow(coord_sitios) != nrow(coord_sf_sin_nubes)) { # <4>
9393
by = join_by(punto)
9494
) |>
9595
pull(punto) |>
96-
str_flatten_comma(string = _, last = " y ")
96+
stringr::str_flatten_comma(string = _, last = " y ")
9797
9898
mensaje(glue("Los sitios {puntos_nubes} presentan nubes y se descartan"))
9999
}

‎scripts_quarto/mapa_interactivo.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ fechas_v <- unique(v_tbl$fecha) |> str_remove_all("-")
3535
# ráster
3636
r_files <- list.files(
3737
path = "recorte/",
38-
pattern = str_flatten(fechas_v, "|"),
38+
pattern = stringr::str_flatten(fechas_v, "|"),
3939
full.names = TRUE)
4040

4141
# creo el stack de bandas y agrego las fechas como nombres
@@ -80,7 +80,7 @@ f_label <- function(fecha_date) {
8080
mutate(v = format(valor, nsmall = 1, digits = 1, decimal.mark = ",")) |>
8181
mutate(label = glue("{nombre}: {v} {unidad}")) |>
8282
reframe(
83-
l = str_flatten(label, collapse = "<br>"),
83+
l = stringr::str_flatten(label, collapse = "<br>"),
8484
.by = c(longitud, latitud)
8585
) |>
8686
pull(l)

‎scripts_quarto/soporte.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ link_github_gistaq <- "https://github.com/vhgauto/gistaq_parana"
9393
simbolo_sig <- glue("<span style='color: {c1}'>&#9733;</span>") # estrella
9494

9595
# separación entre logos de insticiones
96-
espacios <- \(x = 15) str_flatten(rep("&nbsp;", x))
96+
espacios <- \(x = 15) stringr::str_flatten(rep("&nbsp;", x))
9797

9898
# fecha de actualización
9999
actualizado <- format(now(), "%d/%m/%Y %H:%M")

‎scripts_viejos/funciones.R

+88-88
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,38 @@ paquetes <- function() {
2020

2121
archivo_excel <- function() {
2222
r <- "datos/2024 Todos_los_parametros_Victor1.xlsx"
23-
23+
2424
return(r)
2525
}
2626

2727
# función que genera script Python para la descarga de la imagen de la fecha dada
2828
script_descarga_py <- function(fecha_de_adquisicion = fecha) {
29-
29+
3030
# rango de fechas para la búsqueda de la imagen
3131
fecha_inicio <- ymd(fecha_de_adquisicion)
3232
fecha_final <- ymd(fecha_de_adquisicion) + 1
3333

3434
# leo las líneas del template
3535
r_txt <- readLines("scripts/plantilla.py")
36-
36+
3737
# remplazo las variables con las fechas
3838
r_txt <- gsub(
3939
pattern = "fecha_i",
4040
replacement = fecha_inicio,
4141
x = r_txt
4242
)
43-
43+
4444
r_txt <- gsub(
4545
pattern = "fecha_f",
4646
replacement = fecha_final,
4747
x = r_txt
4848
)
49-
49+
5050
# write to new file
5151
writeLines(r_txt, con = "scripts/d.py")
52-
52+
5353
mensaje("Script Python creado")
54-
54+
5555
}
5656

5757
# ejecuto script Python para la descarga de la imagen
@@ -63,37 +63,37 @@ descarga <- function() {
6363
reflectancia <- function() {
6464
# condición de ERROR
6565
# si NO existe el SAFE, NO extrae la reflectancia
66-
if (file.exists(glue("producto/producto.zip")) == FALSE)
66+
if (file.exists(glue("producto/producto.zip")) == FALSE)
6767
stop(mensaje("SAFE NO descargado"))
68-
68+
6969
mensaje("Leo producto S2-MSI")
70-
70+
7171
# cambio de nombre la variable
7272
fecha_date <- fecha
73-
73+
7474
# archivo .zip descargado
7575
producto <- list.files("producto/", pattern = "zip", full.names = TRUE)
76-
76+
7777
# extraigo .zip
7878
unzip(zipfile = producto, exdir = "producto/")
79-
79+
8080
mensaje("Producto extraído")
81-
81+
8282
# nombre del producto
8383
lis <- list.files(path = "producto/", pattern = "SAFE", full.names = TRUE)
84-
84+
8585
# carpeta con las carpetas de distintas resoluciones
8686
carpeta1 <- glue("{lis}/GRANULE")
8787
carpeta2 <- list.files(carpeta1)
8888
carpeta3 <- glue("{carpeta1}/{carpeta2}/IMG_DATA")
89-
89+
9090
r10m <- list.files(glue("{carpeta3}/R10m"), full.names = TRUE)
9191
r20m <- list.files(glue("{carpeta3}/R20m"), full.names = TRUE)
92-
92+
9393
#nombres de las bandas en el orden correcto
9494
bandas_nombres <- c(
9595
"B01", "B02", "B03", "B04", "B05", "B06", "B07", "B08", "B8A", "B11", "B12")
96-
96+
9797
#caminos para cada archivo de la banda requerida
9898
b01 <- r20m[2]
9999
b02 <- r10m[2]
@@ -106,155 +106,155 @@ reflectancia <- function() {
106106
b8a <- r20m[11]
107107
b11 <- r20m[9]
108108
b12 <- r20m[10]
109-
109+
110110
#vector de los caminos de los archivos en el orden correcto
111111
vector_bandas <- c(b01, b02, b03, b04, b05, b06, b07, b08, b8a, b11, b12)
112-
112+
113113
#leo los archivos
114114
lista_bandas <- map(vector_bandas, rast)
115115
names(lista_bandas) <- bandas_nombres
116-
116+
117117
mensaje("Recorto y reproyecto el producto")
118-
118+
119119
#vector para recortar los raster alrededor del puente
120120
recorte_puente <- vect("vector/recorte_puente.gpkg")
121-
121+
122122
#recorte de cada elemento de la lista con el vector puente
123123
lista_recortes <- map(
124-
.x = lista_bandas,
124+
.x = lista_bandas,
125125
~terra::crop(x = .x, y = recorte_puente))
126-
126+
127127
#los raster de 20m los reproyecto a 10m
128128
lista_recortes$B01 <- project(lista_recortes$B01, lista_recortes$B02)
129129
lista_recortes$B05 <- project(lista_recortes$B05, lista_recortes$B02)
130130
lista_recortes$B06 <- project(lista_recortes$B06, lista_recortes$B02)
131131
lista_recortes$B07 <- project(lista_recortes$B07, lista_recortes$B02)
132132
lista_recortes$B8A <- project(lista_recortes$B8A, lista_recortes$B02)
133-
lista_recortes$B11 <- project(lista_recortes$B11, lista_recortes$B02)
133+
lista_recortes$B11 <- project(lista_recortes$B11, lista_recortes$B02)
134134
lista_recortes$B12 <- project(lista_recortes$B12, lista_recortes$B02)
135-
135+
136136
#creamos un stack con todas las bandas recortadas y la misma resolucion espacial (10m)
137137
stack_bandas <- rast(lista_recortes)
138-
138+
139139
# guardo stack de bandas recortado
140140
writeRaster(stack_bandas, glue("raster/{fecha_date}.tif"), overwrite = TRUE)
141-
141+
142142
mensaje("Recorte almacenado")
143-
143+
144144
#leemos el excel que contiene las coordenadas geograficas de los puntos de muestreo
145145
coord_sitios <- readxl::read_xlsx(
146146
path = "datos/2023 Todos_los_parametros_Victor.xlsx",
147147
sheet = 1,
148-
.name_repair = "unique_quiet") |>
149-
select(fechas = 1,latitud = 4,longitud = 5) |>
150-
fill(fechas) |>
151-
dplyr::filter(fechas == fecha_date) |>
152-
select(-fechas) |>
148+
.name_repair = "unique_quiet") |>
149+
select(fechas = 1,latitud = 4,longitud = 5) |>
150+
fill(fechas) |>
151+
dplyr::filter(fechas == fecha_date) |>
152+
select(-fechas) |>
153153
mutate(punto = row_number(), .before = 1)
154-
154+
155155
#convertimos la tabla de coordenadas a sf
156156
coord_vect <- vect(
157-
coord_sitios,
158-
geom = c("longitud", "latitud"),
159-
crs="EPSG:4326",
160-
keepgeom = FALSE) |>
157+
coord_sitios,
158+
geom = c("longitud", "latitud"),
159+
crs="EPSG:4326",
160+
keepgeom = FALSE) |>
161161
project("EPSG:32721")
162-
162+
163163
mensaje("Vector de sitios de muestreo")
164-
164+
165165
# verificar probabilidad de NUBES
166-
166+
167167
mensaje("Verifico presencia de nubes")
168-
168+
169169
carpeta4 <- glue("{carpeta1}/{carpeta2}/QI_DATA")
170-
170+
171171
#leo el raster
172172
raster_prob <- terra::rast(glue("{carpeta4}/MSK_CLDPRB_20m.jp2"))
173-
173+
174174
#extraemos los valores de pixel para cada punto
175-
nubes <- terra::extract(raster_prob, coord_vect) |>
176-
as_tibble() |>
177-
rename(punto = ID, probabilidad = MSK_CLDPRB_20m) |>
175+
nubes <- terra::extract(raster_prob, coord_vect) |>
176+
as_tibble() |>
177+
rename(punto = ID, probabilidad = MSK_CLDPRB_20m) |>
178178
dplyr::filter(probabilidad == 0)
179-
179+
180180
#se conservan los sitios de muestreo con probabilidad de nubes CERO
181181
coord_sf_sin_nubes <- inner_join(
182182
st_as_sf(coord_vect),
183183
nubes,
184184
by = join_by(punto))
185-
185+
186186
if (nrow(coord_sitios) != nrow(coord_sf_sin_nubes)) {
187-
187+
188188
# sitios con nubes
189189
puntos_nubes <- anti_join(
190190
st_as_sf(coord_vect),
191191
nubes,
192-
by = join_by(punto)) |>
193-
pull(punto) |>
194-
str_flatten_comma(string = _, last = " y ")
195-
192+
by = join_by(punto)) |>
193+
pull(punto) |>
194+
stringr::str_flatten_comma(string = _, last = " y ")
195+
196196
mensaje(glue("Los sitios {} presentan nubes y se descartan"))
197197
}
198-
198+
199199
# extraemos los valores de pixel para cada punto
200200
# acomodo de los datos de reflectancia y se agregan las coord geof
201-
201+
202202
# 1X1
203-
reflect_1x1 <- terra::extract(stack_bandas, coord_sf_sin_nubes) |>
204-
as_tibble() |>
205-
rename(punto = ID) |>
206-
pivot_longer(cols = -punto, names_to = "banda", values_to = "reflect") |>
207-
mutate(reflect = reflect/10000) |>
208-
mutate(fecha = ymd(fecha), .before = 1) |>
209-
inner_join(coord_sitios, by = join_by(punto)) |>
203+
reflect_1x1 <- terra::extract(stack_bandas, coord_sf_sin_nubes) |>
204+
as_tibble() |>
205+
rename(punto = ID) |>
206+
pivot_longer(cols = -punto, names_to = "banda", values_to = "reflect") |>
207+
mutate(reflect = reflect/10000) |>
208+
mutate(fecha = ymd(fecha), .before = 1) |>
209+
inner_join(coord_sitios, by = join_by(punto)) |>
210210
mutate(pixel = "1x1", .before = banda)
211-
211+
212212
# 3X3
213213
stack_bandas_3x3 <- terra::focal(
214214
stack_bandas, w = 3, fun = mean, na.rm = TRUE)
215-
216-
reflect_3x3 <- terra::extract(stack_bandas_3x3, coord_sf_sin_nubes) |>
217-
as_tibble() |>
218-
rename(punto = ID) |>
219-
pivot_longer(cols = -punto, names_to = "banda", values_to = "reflect") |>
220-
mutate(reflect = reflect/10000) |>
221-
mutate(fecha = ymd(fecha), .before = 1) |>
222-
inner_join(coord_sitios, by = join_by(punto)) |>
215+
216+
reflect_3x3 <- terra::extract(stack_bandas_3x3, coord_sf_sin_nubes) |>
217+
as_tibble() |>
218+
rename(punto = ID) |>
219+
pivot_longer(cols = -punto, names_to = "banda", values_to = "reflect") |>
220+
mutate(reflect = reflect/10000) |>
221+
mutate(fecha = ymd(fecha), .before = 1) |>
222+
inner_join(coord_sitios, by = join_by(punto)) |>
223223
mutate(pixel = "3x3", .before = banda)
224-
224+
225225
# combino las reflectancias 1x1 y 3x3
226226
reflect <- bind_rows(reflect_1x1, reflect_3x3)
227-
227+
228228
# guardo la tabla como .csv
229229
if (file.exists("datos/base_de_datos.csv")) {
230230
base_de_datos <- read_csv("datos/base_de_datos.csv", show_col_types = FALSE)
231-
232-
bind_rows(base_de_datos, reflect) |>
233-
arrange(fecha, punto) |>
231+
232+
bind_rows(base_de_datos, reflect) |>
233+
arrange(fecha, punto) |>
234234
write_csv("datos/base_de_datos.csv")
235-
235+
236236
mensaje("Base de datos actualizada")
237-
237+
238238
} else {
239239
write_csv(reflect, "datos/base_de_datos.csv")
240-
240+
241241
mensaje("Datos almacenados")
242242
}
243-
243+
244244
}
245245

246246
# elimino todos los archivos descargados
247247
elimino <- function() {
248-
248+
249249
# abro una ventana de confirmación
250250
if (askYesNo("¿Eliminar archivos descargados?")) {
251-
251+
252252
unlink("producto/*", recursive = TRUE)
253253
mensaje("Archivos eliminados")
254-
254+
255255
} else {
256-
256+
257257
mensaje("Archivos NO eliminados")
258-
258+
259259
}
260260
}

0 commit comments

Comments
 (0)