library(tikatuwq)
# Try to make wq_demo available even when the package
# cannot be temporarily reinstalled during pkgdown build.
ok <- FALSE
try({
utils::data("wq_demo", package = "tikatuwq", envir = environment())
ok <- exists("wq_demo", inherits = FALSE)
}, silent = TRUE)
if (!ok) {
# Fallback: read example CSV shipped with the package
csv <- system.file("extdata", "exemplo_chamagunga.csv", package = "tikatuwq")
if (nzchar(csv)) {
wq_demo <- read_wq(csv)
ok <- TRUE
}
}
if (!ok) {
# Last resort: small synthetic dataset (schema-compatible)
set.seed(1)
wq_demo <- data.frame(
data = as.Date("2025-01-01") + 0:9,
rio = "Demo",
ponto = paste0("P", seq_len(10)),
turbidez = runif(10, 1, 50),
od = runif(10, 5, 9),
pH = runif(10, 6.5, 8.5),
temperatura = runif(10, 20, 28),
condutividade = runif(10, 50, 300),
stringsAsFactors = FALSE
)
}
# Coerce common numeric columns defensively (some example files may carry strings)
num_candidates <- c(
"turbidez","od","pH","temperatura","condutividade",
"dbo","dbo5","nitrato","fosforo","amonia",
"coliformes","coliformes_totais","coliformes_termotolerantes"
)
for (nm in intersect(num_candidates, names(wq_demo))) {
suppressWarnings({ wq_demo[[nm]] <- as.numeric(wq_demo[[nm]]) })
}
head(wq_demo)
#> ponto data ph od turbidez dbo coliformes p_total nt_total
#> 1 P1 2024-06-07 7.08 5.33 63.8 5.38 331 0.080 1.30
#> 2 P1 2024-06-27 6.79 8.29 35.7 1.46 98 0.348 3.69
#> 3 P1 2024-01-14 8.43 4.23 60.6 1.22 3712 0.313 4.25
#> 4 P1 2024-07-13 8.30 6.21 50.7 4.09 200 0.447 2.54
#> 5 P1 2024-06-18 7.88 7.99 57.1 2.39 66 0.340 2.00
#> 6 P2 2024-02-19 8.09 4.61 1.0 4.11 3930 0.371 1.31
#> temperatura tds
#> 1 23.0 249
#> 2 21.2 329
#> 3 25.6 480
#> 4 20.2 731
#> 5 28.4 201
#> 6 27.0 724
ok_iqa <- TRUE
df <- tryCatch({
wq_demo |>
validate_wq() |>
iqa(na_rm = TRUE)
}, error = function(e) {
ok_iqa <<- FALSE
message("iqa() failed in vignette build: ", conditionMessage(e))
wq_demo |>
validate_wq()
})
conf <- tryCatch({
conama_check(df, classe = "2")
}, error = function(e) {
message("conama_check() failed in vignette build: ", conditionMessage(e))
NULL
})
if (!is.null(conf)) head(conf)
#> ponto data ph od turbidez dbo coliformes p_total nt_total
#> 1 P1 2024-06-07 7.08 5.33 63.8 5.38 331 0.080 1.30
#> 2 P1 2024-06-27 6.79 8.29 35.7 1.46 98 0.348 3.69
#> 3 P1 2024-01-14 8.43 4.23 60.6 1.22 3712 0.313 4.25
#> 4 P1 2024-07-13 8.30 6.21 50.7 4.09 200 0.447 2.54
#> 5 P1 2024-06-18 7.88 7.99 57.1 2.39 66 0.340 2.00
#> 6 P2 2024-02-19 8.09 4.61 1.0 4.11 3930 0.371 1.31
#> temperatura tds IQA ph_ok ph_status ph__lim_min ph__lim_max ph__delta
#> 1 23.0 249 8.169772 TRUE ok 6 9 0
#> 2 21.2 329 8.772986 TRUE ok 6 9 0
#> 3 25.6 480 7.195704 TRUE ok 6 9 0
#> 4 20.2 731 8.022852 TRUE ok 6 9 0
#> 5 28.4 201 8.789324 TRUE ok 6 9 0
#> 6 27.0 724 7.422467 TRUE ok 6 9 0
#> od_ok od_status od__lim_min od__lim_max od__delta turbidez_ok
#> 1 TRUE ok 5 NA 0.00 TRUE
#> 2 TRUE ok 5 NA 0.00 TRUE
#> 3 FALSE abaixo_do_minimo 5 NA -0.77 TRUE
#> 4 TRUE ok 5 NA 0.00 TRUE
#> 5 TRUE ok 5 NA 0.00 TRUE
#> 6 FALSE abaixo_do_minimo 5 NA -0.39 TRUE
#> turbidez_status turbidez__lim_min turbidez__lim_max turbidez__delta dbo_ok
#> 1 ok NA 100 0 FALSE
#> 2 ok NA 100 0 TRUE
#> 3 ok NA 100 0 TRUE
#> 4 ok NA 100 0 TRUE
#> 5 ok NA 100 0 TRUE
#> 6 ok NA 100 0 TRUE
#> dbo_status dbo__lim_min dbo__lim_max dbo__delta coliformes_ok
#> 1 acima_do_maximo NA 5 0.38 TRUE
#> 2 ok NA 5 0.00 TRUE
#> 3 ok NA 5 0.00 FALSE
#> 4 ok NA 5 0.00 TRUE
#> 5 ok NA 5 0.00 TRUE
#> 6 ok NA 5 0.00 FALSE
#> coliformes_status coliformes__lim_min coliformes__lim_max coliformes__delta
#> 1 ok NA 1000 0
#> 2 ok NA 1000 0
#> 3 acima_do_maximo NA 1000 2712
#> 4 ok NA 1000 0
#> 5 ok NA 1000 0
#> 6 acima_do_maximo NA 1000 2930
#> p_total_ok p_total_status p_total__lim_min p_total__lim_max p_total__delta
#> 1 FALSE acima_do_maximo NA 0.05 0.030
#> 2 FALSE acima_do_maximo NA 0.05 0.298
#> 3 FALSE acima_do_maximo NA 0.05 0.263
#> 4 FALSE acima_do_maximo NA 0.05 0.397
#> 5 FALSE acima_do_maximo NA 0.05 0.290
#> 6 FALSE acima_do_maximo NA 0.05 0.321
conf_long <- tryCatch(conama_summary(df, classe = "2"), error = function(e) NULL)
if (!is.null(conf_long)) head(conf_long)
#> # A tibble: 6 × 7
#> parametro valor lim_min lim_max status ok delta
#> <chr> <dbl> <dbl> <dbl> <chr> <lgl> <dbl>
#> 1 ph 7.08 6 9 ok TRUE 0
#> 2 ph 6.79 6 9 ok TRUE 0
#> 3 ph 8.43 6 9 ok TRUE 0
#> 4 ph 8.3 6 9 ok TRUE 0
#> 5 ph 7.88 6 9 ok TRUE 0
#> 6 ph 8.09 6 9 ok TRUE 0
if (eval_interactive) {
# Minimal example dataset with coordinates
df_map <- data.frame(
rio = c("Buranhem","Chamagunga"),
ponto = c("P1","P2"),
data = as.Date(c("2025-09-20","2025-09-21")),
latitude = c(-16.435, -16.498),
longitude = c(-39.062, -39.080),
iqa = c(72, 58)
)
plot_map(
df_map,
popup_cols = c("rio","ponto","data","iqa"),
color_by = "iqa"
)
}