Large carnivore populations in fenced protected areas require robust
density estimates to inform management, yet such data remain scarce for
arid systems, where restricted dispersal and low primary productivity
jointly shape carnivore densities. This dataset provides spatial
capture-recapture data for three sympatric, individually identifiable
carnivores, leopard (Panthera pardus), brown hyaena (Parahyaena brunnea),
and spotted hyaena (Crocuta crocuta), collected from a camera trap survey
at 85 paired stations across the Korannaberg section of Tswalu Kalahari
Reserve, South Africa, between January and May 2024. For each species,
individuals were identified from pelage and stripe patterns and compiled
into spatially explicit capture histories (individual × occasion × trap
site), accompanied by a binary camera operation file accounting for
station downtime across the survey period. Trap coordinates, state-space
definitions, and site-level detection covariates, including camera
placement (game path vs. road) for all species and distance to den site
for spotted hyaena, are included alongside the R scripts used to fit the
spatial capture-recapture models in 'oSCR'. Together, these data
allow density and abundance to be estimated for three co-occurring
carnivores from a shared camera trap array, and can be reused to test
alternative model structures, compare detection probability and space-use
parameters against other arid or fenced systems, or contribute to broader
multi-species analyses of carnivore density. # Data and code from: Estimating large carnivore populations in an arid
fenced reserve using spatial capture-recapture modelling Dataset DOI:
[10.5061/dryad.rxwdbrvrt](
doi.org) ##
Description of the data and file structure This dataset contains the data
and code required to replicate the spatial capture-recapture (SCR)
analyses in Visagie et al. (2026), estimating population density of
leopard (*Panthera pardus*), brown hyaena (*Parahyaena brunnea*), and
spotted hyaena (*Crocuta crocuta*) in the Korannaberg section of Tswalu
Kalahari Reserve, Northern Cape, South Africa. Data were collected from a
camera trap survey conducted at 85 paired stations over 127 sampling
occasions (18 January–23 May 2024). For each species, individuals were
identified from natural markings and compiled into encounter data files
(capture histories) and trap detection files, used to fit SCR models in
the R package oSCR. Trap-level covariates include camera placement (road
vs. game path) for all three species, and distance to den site for spotted
hyaena, derived from GPS cluster locations of collared individuals.
Spatial data include the Korannaberg reserve boundary, camera trap
locations, and the state-space grids used to define the area over which
density was estimated. **Analysis found:** * Leopard density among the
lowest reported for a fenced reserve (0.18/100 km²) * Brown hyaena density
exceeding values from mesic systems (2.68/100 km²) * Spotted hyaena
density representing the first SCR estimate for the Northern Cape
(0.66/100 km²) **Collection and analysis timeline:** * Camera trap
deployment and image collection: 18 January – 23 May 2024 * Individual
identification and capture history compilation: 2024 * Spotted hyaena GPS
collar data (used to derive the den-distance covariate), collected
independently as part of ongoing reserve monitoring: [insert date range] *
SCR model fitting and analysis: 2024–2025 **Location:** Korannaberg
section (1,017 km²) of Tswalu Kalahari Reserve, Northern Cape Province,
South Africa. ### Files and variables **Coordinate generalization**\
Camera trap coordinates in this dataset have been generalized to protect
the sensitive/threatened species associated with this study, following
guidance from Dryad's data curation team and GBIF's
best-practice recommendations for sensitive species data
([
docs.gbif.org](
docs.gbif.org)). Each camera trap's true GPS location has been replaced with the centroid coordinates of the 1 km × 1 km grid cell in which it falls, using the same grid (grid_tswalu_1km.shp) that underlies the spotted hyaena state space. True, un-generalized trap coordinates are not included anywhere in this submission. #### File: Tswalu_09.07.26.zip #### Encounter and trap detection data | **File** | **Description** | | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Tswalu\_spotted\_edf.csv | Encounter data file (capture history) for spotted hyaena. Columns: SESSION, ANIMAL\_ID, SO (sampling occasion), TRAP\_ID — one row per detection event across the 127-occasion survey. Duplicate rows present in the raw file are removed in the analysis script prior to model fitting. | | Tswalu\_leopard.csv | Encounter data file for leopard, same column structure as above. | | Tswalu\_brown.csv | Encounter data file for brown hyaena, same column structure as above. | | Tswalu\_tdf.csv | Contains trap ID, X/Y coordinates (generalized to 1 km grid cell centroids, see *Coordinate generalization* above, converted to km scale), a binary operation matrix (station functional per sampling occasion), and two trap-level covariates: TRAIL (camera placement, binary: 0 = road, 1 = game path) and DEN (distance from each trap to the nearest spotted hyaena den site, originally in metres, converted to km in the script). The DEN covariate was calculated using true (non-generalized) trap locations at the time of analysis; the X/Y coordinates provided in this file have subsequently been generalized to grid cell centroids for data sharing and might not reproduce the original DEN values if recalculated. |
#### Spatial data — boundary and camera locations | **File** |
**Description** | |
:-------------------------------------------------------- |
:--------------------------------------------------------------------------------------------------------------------------------------- | | Korranaberg boundary.shp (+ .dbf, .shx, .prj, .cpg, .qmd) | Polygon shapefile of the Korannaberg section boundary, used to construct the state space for spotted hyaena (assumed fence-impermeable). | | Camera traps.shp (+ .dbf, .shx, .prj, .cpg) | Point shapefile of the 85 camera trap station locations, generalized to 1 km grid cell centroids. | #### Model outputs | **File** | **Description** | | :-------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Tswalu\_spotted\_hyaena\_model\_output\_WildlifeBiologyR1.RData | Saved R objects (m0–m3): four fitted SCR candidate models for spotted hyaena — null model (D1, p01, sig\~1), and models testing camera placement (TRAIL), distance to den (DEN), and both combined on baseline encounter probability (p0). | | Tswalu\_leopard\_model\_output\_WildlifeBiologyR1.RData | Saved R objects (m0–m1): null model and a model testing the effect of TRAIL on baseline encounter probability, for leopard. | | Tswalu\_brown\_hyaena\_model\_output\_WildlifeBiologyR1.RData | Saved R objects (m0–m1), same model structure as leopard, for brown hyaena. | #### State space and grid | **File** | **Description** | | :------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | state\_space.csv | State-space coordinates (1 km² resolution activity-centre grid, X/Y in km) for spotted hyaena density estimation, restricted to the Korannaberg boundary. Generated in Step 2 of Tswalu\_carnivores\_density\_models\_.R via sf::st\_make\_grid(); one activity centre falling outside the boundary was excluded prior to export. | | state\_space\_Tswalu\_1km.shp (+ .dbf, .prj, .shx) | Shapefile of the state-space activity-centre points (1 km² resolution), exported for inspection in GIS software. | | grid\_tswalu\_1km.shp (+ .dbf, .prj, .shx) | Shapefile of the 1 km² grid cells underlying the spotted hyaena state space. | #### Predicted density rasters | **File** | **Description** | | :----------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | tswalu\_spotted\_density\_pred.grd / .gri / .tif tswalu\_leopard\_density\_pred.grd / .gri / .tif tswalu\_brownhyaena\_density\_pred.grd / .gri / .tif | Predicted spatial density (individuals per pixel) for spotted hyaena, leopard, and brown hyaena respectively, from each species' top-ranked model. .grd/.gri: intermediate km-scale outputs from predict.oSCR/writeRaster in Tswalu\_carnivores\_density\_models\_.R (Step 5) — not directly plottable in GIS. .tif: final metre-scale rasters, reprojected to EPSG:32734 (UTM Zone 34S), produced by make\_rasters\_from\_oSCR\_preds.R for direct GIS use. | #### Scripts | **File** | **Description** | | :-------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | | Tswalu\_carnivores\_density\_models\_.R | Full analysis workflow. | | make\_rasters\_from\_oSCR\_preds.R | Converts each species' top-ranked model prediction surface to a metre-scale, correctly projected GeoTIFF for GIS use. | #### Supplemental information | **File** | **Description** | | :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [
doi.org](
doi.org) | Four original figures generated during analysis: Density\_figure.jpg (composite three-panel spatial density map for spotted hyaena, leopard, and brown hyaena across the Korannaberg boundary, with camera trap locations overlaid), spotted\_den\_covariate\_plot.png (baseline encounter probability vs. distance to den, spotted hyaena), leopard\_trail\_covariate\_plot.png (baseline encounter probability by camera placement, leopard), brown\_trail\_plot.png (baseline encounter probability by camera placement, brown hyaena). | ## Code/software Analyses were conducted in **R (version 4.5.1, 2025-06-13)** using: * **oSCR** (Sutherland et al., 2019): spatial capture-recapture model fitting and density estimation * **sf**: handling and processing shapefiles, constructing state spaces * **ggplot2**: generating encounter probability plots * **terra**: exporting predicted density surfaces as raster files, and reprojecting/rescaling those surfaces to metre-scale GeoTIFFs for GIS use ### Tswalu_carnivores_density_models_.R Divided into three sections (spotted hyaena, leopard, brown hyaena), each following the same five-step workflow: 1. **Read in data** — encounter data file (edf) and trap detection file (tdf); format coordinates and covariates to the km scale. 2. **Build scrFrame and state space** — construct an scrFrame object via data2oscr. For spotted hyaena, this includes generating the Korannaberg-restricted 1 km² grid and activity-centre points directly via sf::st_make_grid() (producing state_space.csv, state_space_Tswalu_1km.shp, and grid_tswalu_1km.shp); for leopard and brown hyaena, the state space is built with make.ssDF using a 20 km buffer around the camera array. 3. **Fit candidate models** using oSCR.fit. 4. **Compare models by AIC** using fitList.oSCR and modSel.oSCR. 5. **Interpret the top-ranked model** — extract density, abundance, baseline encounter probability, and sigma estimates using get.real; generate prediction plots (den-distance plot for spotted hyaena, camera-placement plots for leopard and brown hyaena); export a predicted density raster using predict.oSCR and writeRaster. This produces a km-scale .grd/.gri raster pair for each species that requires further reprocessing before use in GIS (see below). ### make_rasters_from_oSCR_preds.R Takes the km-scale prediction surface (pred$r[[1]]) generated for each species' top-ranked model, converts it to a data frame, rescales coordinates from km to metres, assigns the EPSG:32734 (UTM Zone 34S) coordinate reference system, and writes the result as a GeoTIFF (tswalu_brownhyaena_density_pred.tif, tswalu_leopard_density_pred.tif, tswalu_spotted_density_pred.tif). Each species' section reloads its model output (.RData) and recomputes the prediction surface independently, so the script runs standalone without depending on objects from Tswalu_carnivores_density_models_.R.