Enhance field boundary loading with success flags and improve dummy point handling in hexbin map generation

This commit is contained in:
Timon 2026-02-10 17:57:07 +01:00
parent 3d3df151d3
commit 53bfc20f96
2 changed files with 15 additions and 4 deletions

View file

@ -101,12 +101,15 @@ paths <- setup_project_directories(project_dir)
assign("paths", paths, envir = globalenv())
# Load field boundaries for hexbin map and spatial operations
# Uses: load_field_boundaries, field_boundaries_sf, assign(..., envir = globalenv()), safe_log
tryCatch({
boundaries_list <- load_field_boundaries(paths$data_dir)
field_boundaries_sf <- boundaries_list$field_boundaries_sf
assign("field_boundaries_sf", field_boundaries_sf, envir = globalenv())
assign("field_boundaries_loaded", TRUE, envir = globalenv())
safe_log("✓ Field boundaries loaded successfully")
}, error = function(e) {
assign("field_boundaries_loaded", FALSE, envir = globalenv())
safe_log(paste("⚠ Could not load field boundaries:", e$message), "WARNING")
safe_log("Hexbin map will not be available", "WARNING")
})
@ -558,6 +561,10 @@ tryCatch({
dummy_point <- st_as_sf(dummy_point, coords = c("X", "Y"), crs = st_crs(points_ready))
dummy_point <- cbind(dummy_point, st_coordinates(dummy_point))
# Mark dummy point with anchor flag before binding
# Referenced: dummy_point, st_as_sf, st_coordinates, area_ac
dummy_point$anchor_dummy <- TRUE
# Add dummy point to ensure consistent hexbin grid anchoring
points_ready <- rbind(points_ready, dummy_point)
points_not_ready <- rbind(points_not_ready, dummy_point)
@ -639,6 +646,11 @@ tryCatch({
)
)
# Remove dummy point rows after grid anchoring to prevent dummy cells in plot
# Referenced: points_ready, points_not_ready, anchor_dummy flag filtering
points_ready <- points_ready %>% filter(!anchor_dummy, na.rm = TRUE)
points_not_ready <- points_not_ready %>% filter(!anchor_dummy, na.rm = TRUE)
}, error = function(e) {
warning("Error creating hexbin map:", e$message)
})
@ -827,8 +839,7 @@ if (exists("summary_data") && !is.null(summary_data) && "field_analysis" %in% na
.groups = "drop"
) %>%
rename("Cloud Category" = Cloud_category) %>%
arrange("Cloud Category")
arrange(`Cloud Category`)
if (nrow(cloud_summary) > 0) {
# Create flextable
ft <- flextable(cloud_summary) %>%

View file

@ -437,9 +437,9 @@
#
# rmarkdown::render(
rmarkdown::render(
"r_app/90_CI_report_with_kpis_cane_supply.Rmd",
"r_app/90_CI_report_with_kpis_agronomic_support.Rmd",
params = list(data_dir = "angata", report_date = as.Date("2026-02-04")),
output_file = "SmartCane_Report_cane_supply_angata_2026-02-10_FIXED.docx",
output_file = "SmartCane_Report_agronomic_support_aura_2026-02-10_FIXED.docx",
output_dir = "laravel_app/storage/app/angata/reports"
)
#