Camera Trap Data Management and Preparation of Occupancy and Spatial Capture-Recapture Analyses

Management of and data extraction from camera trap photographs in wildlife studies. The package provides a workflow for storing and sorting camera trap photographs, computes record databases and detection/non-detection matrices for occupancy and spatial capture-recapture analyses with great flexibility. In addition, it provides simple mapping functions (number of species, number of independent species detections by station) and can visualise activity data.


Changes in camtrapR 0.99.6

o fixed crash in cameraOperation function caused by underscores in station / camera IDs (reported by Wyatt Petersen)

o fixDateTimeOriginal: Makes DateTimeOriginal Exif metadata tag in Reconyx Hyperfire cameras readable

o spatialDetectionHistory: argument 'sessionCol' can now create multi-session capthist objects by either assigning individuals to different sessions or assigning station to different sessions o exifTagNames: gained argument 'returnTagGroup', and now by default returns metadata tag group in addition to metadata tag names (to unambiguously address specific metadata tags)

o detectionHistory / spatialDetectionHistory: occasionLength can be any value between 1 and the number of columns in camOp (not half the number of columns in camOp as before) o functions check for spaces in user-provided column names and report them as errors

Changes in camtrapR 0.99.5

o recordTable/recordTableIndividual: give warning if Exif DateTimeOriginal tag of images is unreadable (error if all tags of a station are unreadable). May happen if images files are corrupted due to camera malfunctioning. o recordTable/recordTableIndividual: 2 records of the same species at the same station and same time by different cameras are not collapsed into one record if camerasIndependent = TRUE o all functions using Exiftool: JPG files beginning with "._" are now ignored with a warning (these are hidden, uninformative system files created on Macs and were quite capable of messing up function calls)

o getSpeciesImages can now also read image file paths from a record table provided by the user instead of reading species IDs anew in every function call. It gained 3 new arguments for that purpose. o recordTable and recordTableIndividual both gained an argument (removeDuplicateRecords) to control whether duplicate records (same station, same species, exactly same time) should be collapsed into one record (former versions did that without asking)

o imageRename will first check all directories before actually renaming anything. So the function won't break halfway through, leaving you with a half-full directory of renamed images if something goes wrong (e.g. unreadable date/time tags).

Changes in camtrapR 0.99.4

o spatialDetectionHistory: trap usage now codes malfunctioning cameras and cameras that were not set up as 0 instead of NA (as expected by the secr package) o spatialDetectionHistory: argument "scaleEffort" can only be FALSE now (to avoid negative trapping effort values, which secr does not accept)

o spatialDetectionHistory gained argument "sessionCol". It can be used to split data (i.e., create a list with multiple capthist objects) if captures come from different sessions).

o package shows startup message and checks automatically if local package version is up to date

Changes in camtrapR 0.99.3

o addCopyrightTag: Write a copyright tag into image Exif metadata

o detectionHistory: malfunctioning cameras (0 in camera operation matrix) did not cause detection history matrix cells to be NA (even if includeEffort = FALSE; reported by Hsiang Ling Chen) o detectionHistory: if the last occasion is shorter than occasionLength, the corresponding detection history matrix cells will now be NA if includeEffort = FALSE o surveyReport: species column names other than "Species" are now supported, i.e. argument "speciesCol" is now respected (thanks to Valentine Herrmann and Stefano Anile for reporting)

o detectionHistory gained argument "minActiveDaysPerOccasion". It can be used to define the minimum number of active trap days per occasion for that occasion be included (0/1 instead of NA)

Changes in camtrapR 0.99.2

o recordTable: fixed problem with appending camera IDs o cameraOperation: improved messages to user

o added section about defining date formats in camera station table to vignette 1 (Image Organisation)

Changes in camtrapR 0.99.1

o detectionHistory and spatialDetectionHistory did not run correctly under some rare circumstances (combinations of input arguments) o column names of detection histories were incorrect if occasionStartTime != 0 and datesAsOccasionNames = TRUE o argument maxNumberDays in detectionHistory / spatialDetectionHistory works on each station individually if day1 = "survey" or "station"; and from the specified date if day1 is a date

o additional checks for consistency of input in a number of functions o code simplification invisible to the user

Changes in camtrapR 0.99.0

o checkSpeciesNames: checks a vector of species names (common or scientific) against the ITIS taxonomic database via package 'taxize' o checkSpeciesIdentification: expanded from former function checkSpeciesFolders (now defunct). Can check identification if metadata tags were used for species identification. o createStationFolders: Create camera trap station directories, possibly with camera subdirectories, for storing raw images (was not included in NAMESPACE of version 0.98.0, therefore invisible. Thanks to Patrick Lorch and Brent Pease for notification)

o recordDatabase -> recordTable o recordDatabaseIndividual -> recordTableIndividual

o recordDatabaseSample -> recordTableSample o recordDatabaseIndividualSample -> recordTableIndividualSample

o detectionHistory and spatialDetectionHistory: - detection histories can begin on any specified date, station-specific setup date or day the first station was set up (to that end argument "beginWithDay1" was changed to "day1") - a buffer between setup and the first occasion can be applied (argument "buffer"). o spatialDetectionHistory: - output can be given as counts or binary (argument "output") - an RMark data frame can be created using argument makeRMarkInput o extended support for identification via metadata tags (in functions appendSpeciesNames, getSpeciesImages) o exifTagNames: can return metadata, not only metadata tag names (new argument "returnMetadata") o createStationFolders: new argument "createinDir". o detecionMaps: new argument "speciesToShow" to make maps for certain species only o activity plot functions show number of records that were used

o surveyReport returned an error when there were stations without records. o detecionMaps: Xcol and Ycol have arbitrary names now.

o arguments "customMetadataTags" and hasSpeciesFolders/ hasIndividualFolders was removed and replaced with argument "IDfrom" o metadata tags assigned in image management software are always extracted and tabulated in recordTable functions (making argument "customMetadataTags" obsolete) o some functions changed the user's working directory. Fixed. Thanks to Patrick Lorch for notification. o argument "hasCameraSubfolders" was renamed to "hasCameraFolders" (functions appendSpeciesNames, checkSpeciesIdentification, createSpeciesFolders, imageRename, timeShiftImages) o in all 4 activity plot functions, argument "all.species" was renamed to "allSpecies" o argument "recordTable" in spatialDetectionHistory was renamed to "recordTableIndividual" to make the difference from "recordTable" in "detectionHistory" clearer

Changes in camtrapR 0.98.0

o createStationFolders: Create camera trap station directories, possibly with camera subdirectories, for storing raw images o recordDatabaseIndividual: Single-species record databases from camera trap images with custom metadata tags o spatialDetectionHistory: prepare a capthist object for spatial capture-recapture analyses

o support for camera subdirectories in species identification: Station/Camera/Species in the following function: - appendSpeciesFolders - createSpeciesFolders - checkSpeciesFolders - createStationFolders - getSpeciesImages - imageRename - recordDatabase - recordDatabaseIndividual o recordDatabase: can handle different types of directory structures and metadata tags (both custom and manufacturer-specific) and has gained new arguments: - hasSpeciesFolders - cameraID (expanded from includeCameras) - camerasIndependent - stationCol - customMetadataTags - metadataHierarchyDelimitor - metadataSpeciesTag - additionalMetadataTags (renamed from metadataTags) o detectionMaps: shapefile export using packages sp and rgdal o checkSpeciesFolders: new argument stationsToCheck

o checkSpeciesFolders: renamed argument exclude -> excludeSpecies o detectionHistory: "session" in argument names was renamed to "occasion" (to be consistent with secr nomenclature) o getSpeciesImages: removed argument emptyOutDir (nothing can be deleted anymore) o recordDatabase: row names of object are 1:nrow

Changes in camtrapR 0.97.1

o surveyReport: fixed bug which caused wrong numbers of active trap nights to be returned o surveyReport: does not depend on function cameraOperation anymore o renamed function TimeShiftImages to timeShiftImages o minor fixes in cameraOperation o some rephrasing in help files o changes to author list

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.99.7 by Juergen Niedballa, 21 days ago

Browse source code at

Authors: Juergen Niedballa [aut, cre], Alexandre Courtiol [aut], Rahel Sollmann [aut], John Mathai [ctb], Seth Timothy Wong [ctb], An The Truong Nguyen [ctb], Azlan bin Mohamed [ctb], Andrew Tilker [ctb], Andreas Wilting [ctb, ths]

Documentation:   PDF Manual  

GPL (>= 2) license

Imports methods, rgdal, sp, overlap, secr, taxize, ritis

Suggests unmarked, knitr, rmarkdown, raster

System requirements: ExifTool (

See at CRAN