Skip to contents

From camera-trap data to ecological reporting

The Ecological Report integrates camera-trap data, sampling summaries, ecological analyses, maps, figures, and data-informed narratives into a reproducible, modular HTML report. Users can customise its content to suit different monitoring objectives, datasets, and analytical requirements.

A Data Status Check is recommended before ecological analysis to identify potential data-quality issues.

Reporting workflow

Prepare → Check → Configure → Report

Import Camtrap DP data using camData(), assess data quality with status(), select relevant modules and analytical settings, and generate the Ecological Report using report().

The diagram shows how the selected modules contribute to report generation.

Workflow for generating an Ecological Report from camera-trap data using camtrapReport.

Figure 1. Workflow from Camtrap DP inputs and report configuration to an Ecological Report.

Generate your first report

This example uses the bundled Camtrap DP dataset, habitat data, and study-area boundary. The dataset is copied to a writable folder to protect the installed package files.

library(camtrapReport)

# Prepare a writable copy of the example dataset
example_root <- tempfile("camtrapReport-example-")
dir.create(example_root)

file.copy(
  system.file("external", "dataset", package = "camtrapReport"),
  example_root,
  recursive = TRUE
)

# Load supplementary data
habitat <- read.csv(
  system.file("external", "habitat", "habitat.csv",
              package = "camtrapReport")
)

study_area <- system.file(
  "external", "study_area", "study_area.shp",
  package = "camtrapReport"
)

# Import data and generate reports
cm <- camData(
  data = file.path(example_root, "dataset"),
  habitat = habitat,
  study_area = study_area
)

status(cm, view = FALSE)  # Assess data quality
report(cm, view = TRUE)   # Generate and open the Ecological Report

Save the report

By default, the report is saved in cm$info$directory, the object’s data directory. Use filename to specify an output location and view = FALSE to generate the report without opening it. The destination directory must already exist.

dir.create("reports", recursive = TRUE, showWarnings = FALSE)

report_file <- report(
  cm,
  filename = "reports/ecological_report_2026",
  view = FALSE
)

Note: Existing output files and intermediate R Markdown sources are protected by default (overwrite = FALSE). Use distinct filenames for different reports, or set overwrite = TRUE explicitly when replacement is intended.

Report content and customisation

The Ecological Report supports analyses of sampling effort, species detections, richness, activity patterns, co-occurrence, habitat associations, and population density. Available outputs depend on the selected modules, data, and analytical requirements.

Explanatory text draws on module templates, dataset metadata, and computed results; review it before sharing.

Explore the Module Catalog for available analyses, Analytical Profiles for reusable configurations, and Module Management for customisation.


Explore example ecological reports

Explore Ecological Reports from different monitoring projects. Select a preview to open the corresponding HTML report and see how analyses and outputs vary across datasets.


Configure the Ecological Report

Customise report metadata, focal species groups, years, filters, and sections through the camReport object. The following examples are independent; adapt species, years, file paths, and settings to your own dataset.

Report metadata

Use info() to inspect and update report information, including titles, authors, institutional affiliations, and logos.

# Inspect metadata
info(cm)

# Update selected fields
info(cm, name = "title") <- "Wildlife Monitoring Report"
info(cm, name = "subtitle") <- "Ecological assessment of camera-trap data"
info(cm, name = "authors") <- c("Elham Ebrahimi", "Patrick Jansen")
info(cm, name = "institute") <- "Utrecht University"
info(cm, name = "siteName") <- "Hoge Veluwe National Park"
info(cm, name = "logoPath") <- "path/to/logo.png"

Focus groups

Focus the report on an available taxonomic or ecological group, or define a group of interest.

# Explore available groups
names(cm$group_definition)

# Select an existing group
cm$set_focus_group(x = "birds")
cm$setup()

# Inspect a group definition
cm$get_group("birds")

To define a custom species group:

cm$add_group(
  name = "target_species",
  x = list(
    scientificName = c(
      "Vulpes vulpes",
      "Capreolus capreolus",
      "Sus scrofa"
    )
  )
)

cm$set_focus_group(x = "target_species")
cm$setup()

Monitoring years and filters

Select the monitoring period and adjust the minimum observation-count filter to suit the analytical objectives.

# Inspect available years
cm$extractYears()

# Select years and refresh the configuration
cm$years <- 2023:2024
cm$setup()

# Set the minimum observation count
cm$filterCount <- 10

Choose years present in the dataset and a threshold appropriate for your analysis.

Report sections

Select the analyses and sections to include in the final report.

# Inspect available sections
section_names(object = cm, profile = "default")
listReportSections(cm)

# Exclude selected analyses
selected <- section_names(
  object = cm, profile = "default",
  exclude = c("richness", "co_occurrence")
)

# Apply the configuration
sections(cm, selected, profile = "default")

# Generate the customised report
report(cm, filename = "ecological_custom", view = TRUE)

# To reset the section configuration, reapply the original profile
# or a previously saved selection of sections.

Reuse and extend configurations

Analytical Profiles provide reusable selections of modules for different monitoring workflows. Analytical methods and settings are defined through the associated modules and report configuration. See Analytical Profiles.

To modify existing analyses or develop new modules, work in a writable project directory rather than editing installed package files. See Module Management.

Interpretation and reproducibility

Interpret outputs in light of sampling design, effort, detectability, and method-specific assumptions. Capture-based indices are not direct measures of abundance; density models require suitable data and parameterisation.

Missing outputs may reflect unmet prerequisites rather than ecological absence. Review methods and generated narratives, retain data and settings for reproducibility, and protect sensitive species locations when sharing. Consult the Module Catalog for module requirements.