# SAR Analysis Test Script # ======================== # # Quick test to verify SAR analysis functions work with downloaded data # Run this to check everything is working before generating full report # Set working directory and load functions # setwd("r_app") # Don't change directory, we're already in main folder source("r_app/sar_analysis_functions.R") source("r_app/sar_visualization.R") # Load field boundaries library(sf) field_boundaries <- st_read("../../../pivot.geojson", quiet = TRUE) cat("=== SAR Analysis Test ===\n") cat("Fields loaded:", nrow(field_boundaries), "\n") # Test 1: Load SAR data cat("\n1. Testing SAR data loading...\n") test_week <- 33 vv_data <- load_sar_mosaic(test_week, band = "VV_dB_filtered", data_dir = "python_scripts/data/aura/weekly_SAR_mosaic") vh_data <- load_sar_mosaic(test_week, band = "VH_dB_filtered", data_dir = "python_scripts/data/aura/weekly_SAR_mosaic") if (!is.null(vv_data) && !is.null(vh_data)) { cat("✓ SAR data loaded successfully\n") cat(" VV dimensions:", dim(vv_data), "\n") cat(" VH dimensions:", dim(vh_data), "\n") cat(" VV range:", round(global(vv_data, range, na.rm = TRUE)[,1], 2), "dB\n") cat(" VH range:", round(global(vh_data, range, na.rm = TRUE)[,1], 2), "dB\n") } else { cat("✗ Failed to load SAR data\n") stop("SAR data loading failed") } # Test 2: Calculate SAR metrics cat("\n2. Testing SAR metrics calculation...\n") vv_linear <- load_sar_mosaic(test_week, band = "VV", data_dir = "python_scripts/data/aura/weekly_SAR_mosaic") vh_linear <- load_sar_mosaic(test_week, band = "VH", data_dir = "python_scripts/data/aura/weekly_SAR_mosaic") if (!is.null(vv_linear) && !is.null(vh_linear)) { rvi <- calculate_rvi(vv_linear, vh_linear) cross_ratio <- calculate_cross_pol_ratio(vv_data, vh_data) cat("✓ SAR metrics calculated\n") cat(" RVI range:", round(global(rvi, range, na.rm = TRUE)[,1], 3), "\n") cat(" Cross-pol ratio range:", round(global(cross_ratio, range, na.rm = TRUE)[,1], 2), "dB\n") } else { cat("⚠ Linear scale data not available for metrics\n") } # Test 3: Create basic map cat("\n3. Testing SAR visualization...\n") tmap_mode("plot") # Create simple map sar_map <- create_sar_map(vv_data, field_boundaries, "Test SAR Map", "VV_dB") # Save map tmap_save(sar_map, "output/test_sar_map.png", width = 1200, height = 800, dpi = 150) cat("✓ SAR map created and saved to output/test_sar_map.png\n") # Test 4: Field-level analysis cat("\n4. Testing field-level analysis...\n") test_field <- field_boundaries$Name[1] field_trends <- analyze_sar_field_trends(test_field, field_boundaries, week_range = 26:33, band = "VV_dB_filtered") if (!is.null(field_trends)) { cat("✓ Field analysis completed for:", test_field, "\n") cat(" Trend direction:", field_trends$trend_direction, "\n") cat(" Trend slope:", round(field_trends$trend_slope, 4), "dB/week\n") cat(" R-squared:", round(field_trends$trend_r2, 3), "\n") } else { cat("✗ Field analysis failed\n") } # Test 5: Time series loading cat("\n5. Testing time series loading...\n") sar_stack <- load_sar_timeseries(26:33, "VV_dB_filtered") if (!is.null(sar_stack)) { cat("✓ Time series loaded successfully\n") cat(" Number of weeks:", nlyr(sar_stack), "\n") cat(" Stack dimensions:", dim(sar_stack), "\n") } else { cat("✗ Time series loading failed\n") } # Test 6: Create time series plot cat("\n6. Testing time series plotting...\n") sample_fields <- head(field_boundaries$Name, 3) ts_plot <- plot_sar_timeseries(sample_fields, field_boundaries, week_range = 26:33, band = "VV_dB_filtered", facet_fields = TRUE) # Save plot ggsave("output/test_sar_timeseries.png", ts_plot, width = 12, height = 8, dpi = 150) cat("✓ Time series plot created and saved to output/test_sar_timeseries.png\n") cat("\n=== All Tests Completed Successfully! ===\n") cat("\nReady to generate full SAR analysis report:\n") cat("rmarkdown::render('r_app/SAR_exploration_report.Rmd')\n") # Don't reset working directory - we're staying in main folder