## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----install, eval = FALSE----------------------------------------------------
# install.packages("lakefetch")
# 
# # Optional packages for extra features:
# # install.packages("nhdplusTools")                      # NHD integration
# # install.packages(c("shiny", "leaflet", "base64enc"))  # Interactive app

## ----load-sites---------------------------------------------------------------
# library(lakefetch)
# 
# # From CSV file
# sites <- load_sites("my_lake_sites.csv")
# 
# # Or create manually
# sites <- data.frame(
#   Site = c("Site_A", "Site_B", "Site_C"),
#   latitude = c(43.42, 43.43, 43.41),
#   longitude = c(-73.69, -73.68, -73.70)
# )
# sites <- load_sites(sites)

## ----get-lake-----------------------------------------------------------------
# # Automatically download from OpenStreetMap
# lake <- get_lake_boundary(sites)
# 
# # Or load from a local shapefile
# lake <- get_lake_boundary(sites, file = "lake_boundary.shp")

## ----calculate----------------------------------------------------------------
# results <- fetch_calculate(sites, lake)
# 
# # View results
# head(results$results)

## ----visualize----------------------------------------------------------------
# # Map of sites
# plot_fetch_map(results)
# 
# # Bar chart
# plot_fetch_bars(results)
# 
# # Interactive app
# fetch_app(results)

## ----options------------------------------------------------------------------
# # View current options
# lakefetch_options()
# 
# # Change options
# lakefetch_options(
#   buffer_distance_m = 20,      # GPS accuracy buffer
#   angle_resolution_deg = 10,   # Direction resolution (degrees)
#   max_fetch_m = 30000,         # Maximum fetch distance
#   use_parallel = TRUE          # Parallel processing for multiple lakes
# )
# 
# # Reset to defaults
# lakefetch_reset_options()

## ----nhd----------------------------------------------------------------------
# # NHD context is added automatically if available
# results <- fetch_calculate(sites, lake, add_context = TRUE)
# 
# # Check connectivity
# table(results$results$connectivity_class)

## ----multi-lake---------------------------------------------------------------
# # Sites are assigned to their containing lake polygon
# sites_with_lakes <- assign_sites_to_lakes(lake$sites, lake$all_lakes)
# 
# # Check assignment
# table(sites_with_lakes$lake_name)

## ----export-------------------------------------------------------------------
# # To CSV (without geometry)
# write.csv(sf::st_drop_geometry(results$results),
#           "fetch_results.csv", row.names = FALSE)
# 
# # To GeoPackage (with geometry)
# sf::st_write(results$results, "fetch_results.gpkg")
# 
# # Export ray geometries for GIS
# rays <- create_ray_geometries(results)
# sf::st_write(rays, "fetch_rays.gpkg")

