Objetivo
En este artículo se presenta el proceso para organizar las fotografías obtenidas con cámaras-trampa empleando un paquete R muy interesante y relativamente sencillo. Para mostrar la utilidad del mismo, se ejemplifica con algunos datos obtenidos en un estudio que estamos realizando en una Reserva de Biósfera.
Paquete R empleado
camtrapR
por Niedballa ewt al. (2016)
Recursos en la web
El paquete está disponible en la librería CRAN en: https://cran.r-project.org/web/packages/camtrapR/
Mientras que el manual de referencia se puede bajar desde: https://cran.r-project.org/web/packages/camtrapR/camtrapR.pdf
El grupo de discusión del paquete en: https://groups.google.com/forum/#!forum/camtrapr
Introducción
El foto-trampeo permite obtener miles o decenas de miles de fotos de las especies que habitan en alguna región de estudio. Sin embargo, para un análisis eficiente de los datos es necesario un manejo organizado y sistemático del gran número de fotos obtenidas. Una de las opciones más empleadas es Excel para organizar la información. Alternativamente, se han desarrollado programas como:
camera base
(Tobler 2007),Wild.ID
(O’Brien 2010),deskTEAM
(Fegraus et al. 2011),eMammal
(http://emmamal.si.edu),Aardwolf
(Krishnappa y Turner 2014),cpw photo warehouse
(Ivan y Newkirk 2016),TRAPPER
(Bubnick et al. 2016), entre los principales.
En general todos estos programas permiten extraer los metadatos de las imágenes y exportarlos a otros programas para analizar la información. En el año 2016 se liberó el paquete camtrapR el cuál te permite organizar, renombrar y extraer metadatos de cientos de fotos. También se pueden realizar algunos gráficos exploratorios de riqueza, abundancia y patrones de actividad, así como preparar bases para análisis de ocupación.
Para este ejemplo utilizaremos una muestra de fotos de 5 cámaras-trampa ubicadas en la localidad de San Gabriel Casa Blanca, Oaxaca, dentro de la Reserva de la Biosfera Tehuacán-Cuicatlán. La cámaras estuvieron activas de mayo a julio de 2013 y se programaron para que tomaran 3 fotos consecutivas en intervalos de 10 a 15 s.
Instalación y datos iniciales
Descargar de la red el archivo ejecutable ´exiftool´ desde: http://www.sno.phy.queensu.ca/~phil/exiftool/index.html
Se debe descomprimir y se coloca en disco local (C:) dentro de la carpeta Windows; mientras que en el sistema OS X se sugiere emplear la ruta: export PATH=$PATH:/usr/local/bin.
Se modifica el nombre para que solo quede como exiftool. Este ejecutable permite extraer y editar los metadatos de las fotos.
Otra opción para extraer y editar los metadatos de las fotos es descargar de la red el programa digiKam de libre acceso desde: https://www.digikam.org/download/binary.
Sys.which("exiftool")
## exiftool
## "/usr/local/bin/exiftool"
Una vez instaladas todas las herramientas necesarias, se debe crear en Excel una tabla con las coordenadas UTM, fecha de colocación, fecha de retiro y fechas en que estuvo inactiva cada cámara, y se guarda en archivo *.csv. . En caso de tener dos o más cámaras por estación se debe agregar, después de la columna “Station”, una columna con el ID de la cámara.
En este paso es importante definir el formato de fecha que se utilizará ya que para ejecutar algunas funciones se pedirá especificarlo. Los títulos de la tabla se pueden editar posteriormente, sin embargo estos deben coincidir con los títulos de las tablas que irá generando el paquete por lo que se recomienda que se mantenga el formato en inglés
Organización y manejo de las fotos
Para cargar y leer el archivo con la información de ubicación y actividad de las cámaras:
library(camtrapR)
sitio_1 <- read.csv ("actividad de estaciones_1_cam.csv", header = TRUE)
Se crea una carpeta principal en la cual estarán todas las fotos clasificadas por número o nombre de cámara, para esto primero se especifica el directorio y el nombre de la carpeta, por ejemplo:
fotos_sitio_1 <- file.path("Sitio_1")#
Cada usuario deberá crear la ruta de lectura de datos y directorio de trabajo que más le convenga, una forma fácil de trabajo es creando un proyecto en R. Después se crea la carpeta principal con las subcarpetas de cada cámara con la función:
fotos_sitio_1_carpeta <- createStationFolders (inDir = fotos_sitio_1,
stations = as.character (sitio_1$Station),
createinDir = TRUE)
Una vez creada la carpeta principal, se arrastran las fotos de cada memoria SD a las subcarpetas con el número de cámara correspondiente. Es muy importante que las imágenes solo se arrastren; es decir, no se deben copiar y pegar, ni cortar y pegar ya que se puede perder información de los metadatos.
Después de colocar las imágenes en su carpeta correspondiente, el siguiente paso es verificar que la fecha y hora sean correctas en todas las fotos. En caso de que algunas imágenes presenten errores se pueden corregir utilizando la función “timeshift”. Para hacer la corrección de fecha y hora es necesario que todas las imágenes que presenten error se ubiquen en una carpeta independiente a la principal o la corrección se haga antes de arrastrar las fotos de la memoria SD a la carpeta principal. Para este ejemplo utilizaremos una carpeta independiente llamada “Corrección Casa Blanca”, como:
fotos_correccion_sitio_1 <- file.path("Corrección_sitio_1")
Una vez seleccionadas las fotos se creará una tabla que contenga la información que se quiera corregir.
La tabla debe contener el número de estación, “timeshift” y un signo “+” (para aumentar años y/o horas) o “-” (para disminuir años y/o horas). El formato que se utiliza en timeshift es el siguiente: Fecha, “Año:Mes:Dia”, por ejemplo para disminuir o aumentar un año se pone “1:0:0”. Para el caso de la hora se utiliza: “Hora:minutos:segundos”, por ejemplo para disminuir o aumentar una hora se pone: “1:0:0”. Estos dos valores deben estar en la misma celda como se muestra en la figura anterior. Luego se lee en R la tabla con la información como:
tabla_correccion_sitio_1 <- read.csv("correccion de hora.csv", header = TRUE)
Para obtener las imágenes con la información corregida, se utiliza la siguiente función:
fotos_sitio_1_corregidas <- timeShiftImages(inDir = foto_corrección_sitio_1,
timeShiftTable = tabla_correccion_sitio_1,
stationCol = "Station",
hasCameraFolders = FALSE,
timeShiftColumn = "timeshift",
timeShiftSignColumn = "sign",
undo = F)
Después de correr la función automáticamente en la carpeta se creará una copia de la foto con la hora y fecha corregida en los metadatos. Una vez corregidas las imágenes, el siguiente paso es renombrarlas. Un aspecto importante es que las fotos deben ser renombradas primero y después clasificadas por especie, si se hace a la inversa se pierde la clasificación cuando las fotos son copiadas a la nueva carpeta. Las carpetas de cámaras que no contengan fotos no serán copiadas a la carpeta de fotos renombradas.
Para crear la carpeta con las fotos renombradas se utilizan las siguientes funciones:
fotos_sitio_1_renombradas <- file.path("Sitio_1_R")
imageRename(inDir = foto_sitio_1,
outDir = fotos_sitio_1_renombradas,
hasCameraFolders = FALSE,
keepCameraSubfolders = FALSE,
copyImages = TRUE)
Otro aspecto importante es que se recomienda guardar a parte las fotos originales que fueron extraídas de las tarjetas SD. La carpeta con las fotos renombradas no puede ser guardada dentro de la carpeta principal, debe colocarse en un directorio diferente. Una vez que las fotos fueron renombradas, se puede agregar a los metadatos de cada foto el nombre del proyecto y la institución a la que pertenecen. Para esto se utiliza la función:
proyecto_institucion <- "Proyecto_RBTC (INECOL)"
addCopyrightTag(inDir = fotos_sitio_1_renombradas,
copyrightTag = proyecto_institucion,
askFirst = FALSE,
keepJPG_original = F)
## arguments 'show.output.on.console', 'minimized' and 'invisible' are for Windows only
## 42 directories scanned 118 image files updated
Para verificar que aparece la información en los metadatos se utiliza la siguiente función y se pueden visualizar los metadatos:
exifTagNames(fotos_sitio_1_renombradas, returnMetadata = TRUE)
## [1] "[ExifTool] ExifTool Version Number : 10.41"
## [2] "[File] File Name : CB23__2013-05-12__04-02-34(1).JPG"
## [3] "[File] Directory : Sitio_1_R/CB23/Conejo"
## [4] "[File] File Size : 917 kB"
## [5] "[File] File Modification Date/Time : 2017:11:24 18:14:14-06:00"
## [6] "[File] File Access Date/Time : 2017:11:24 18:14:14-06:00"
## [7] "[File] File Inode Change Date/Time : 2017:11:24 18:14:16-06:00"
## [8] "[File] File Permissions : rw-r--r--"
## [9] "[File] File Type : JPEG"
## [10] "[File] File Type Extension : jpg"
## [11] "[File] MIME Type : image/jpeg"
## [12] "[File] Exif Byte Order : Little-endian (Intel, II)"
## [13] "[File] Comment : 00dc\377\330\377\340.JFIF..HH\377\376.S&Q Technology Co., LTD. V01"
## [14] "[File] Image Width : 2560"
## [15] "[File] Image Height : 1920"
## [16] "[File] Encoding Process : Baseline DCT, Huffman coding"
## [17] "[File] Bits Per Sample : 8"
## [18] "[File] Color Components : 3"
## [19] "[File] Y Cb Cr Sub Sampling : YCbCr4:2:2 (2 1)"
## [20] "[EXIF] Image Description : D55IR_V076.B00038.069__FG=6000,FT=136069,NIR=0,GM=2,EV=59,PY=32,DY=38,GB=0x80,SG=0x38,EL=2525,AEY=0,AEM=0,AEB=3"
## [21] "[EXIF] Make : Digital MultiCam II"
## [22] "[EXIF] Camera Model Name : Moultrie Game Camera"
## [23] "[EXIF] Orientation : Horizontal (normal)"
## [24] "[EXIF] X Resolution : 72"
## [25] "[EXIF] Y Resolution : 72"
## [26] "[EXIF] Resolution Unit : inches"
## [27] "[EXIF] Software : "
## [28] "[EXIF] Modify Date : 2008:03:05 15:30:30"
## [29] "[EXIF] Y Cb Cr Positioning : Co-sited"
## [30] "[EXIF] Copyright : Proyecto_RBTC (INECOL)"
## [31] "[EXIF] Exposure Time : 1/7"
## [32] "[EXIF] F Number : 3.0"
## [33] "[EXIF] Exposure Program : Program AE"
## [34] "[EXIF] ISO : 0"
## [35] "[EXIF] Exif Version : 0220"
## [36] "[EXIF] Date/Time Original : 2013:05:12 04:02:34"
## [37] "[EXIF] Create Date : 2013:05:12 04:02:34"
## [38] "[EXIF] Components Configuration : Y, Cb, Cr, -"
## [39] "[EXIF] Compressed Bits Per Pixel : 1.25"
## [40] "[EXIF] Exposure Compensation : 0"
## [41] "[EXIF] Metering Mode : Average"
## [42] "[EXIF] Light Source : Unknown"
## [43] "[EXIF] Flash : Fired"
## [44] "[EXIF] Focal Length : 7.3 mm"
## [45] "[EXIF] Sensing Method : One-chip color area"
## [46] "[EXIF] Maker Note Unknown Text : ::20C:1:CB3"
## [47] "[EXIF] Flashpix Version : 0100"
## [48] "[EXIF] Color Space : sRGB"
## [49] "[EXIF] Exif Image Width : 2560"
## [50] "[EXIF] Exif Image Height : 1920"
## [51] "[EXIF] File Source : Digital Camera"
## [52] "[EXIF] Custom Rendered : Normal"
## [53] "[EXIF] Exposure Mode : Auto"
## [54] "[EXIF] White Balance : Auto"
## [55] "[EXIF] Scene Capture Type : Standard"
## [56] "[EXIF] Subject Distance Range : Distant"
## [57] "[EXIF] GPS Version ID : 0.0.0.0"
## [58] "[EXIF] GPS Latitude Ref : Unknown ()"
## [59] "[EXIF] GPS Longitude Ref : Unknown ()"
## [60] "[EXIF] Compression : JPEG (old-style)"
## [61] "[EXIF] Thumbnail Offset : 1104"
## [62] "[EXIF] Thumbnail Length : 3522"
## [63] "[EXIF] Thumbnail Image : (Binary data 3522 bytes, use -b option to extract)"
## [64] "[JFIF] JFIF Version : 1.00"
## [65] "[Composite] Aperture : 3.0"
## [66] "[Composite] GPS Latitude : 0 deg 0' 0.00\" N"
## [67] "[Composite] GPS Longitude : 0 deg 0' 0.00\" E"
## [68] "[Composite] GPS Position : 0 deg 0' 0.00\" N, 0 deg 0' 0.00\" E"
## [69] "[Composite] Image Size : 2560x1920"
## [70] "[Composite] Megapixels : 4.9"
## [71] "[Composite] Shutter Speed : 1/7"
## [72] "[Composite] Focal Length : 7.3 mm"
Clasificación por especie
La clasificación de especies se puede hacer de dos formas, la primera es crear subcarpetas con los nombres de cada especie o nombres comunes dentro de cada carpeta de estación; la segunda opción es poner una etiqueta a cada foto con un editor de imágenes como digiKam. Para este ejemplo se utilizarán las subcarpetas por especie. Para lo cual primero se crea un objeto con el nombre de cada especie o sus nombres comunes, como:
especies_sitio_1 <- c("Conejo","Coyote", "Lince", "Pecarí", "Venado", "Zorra")
Después de listar todas las especies, se crean las subcarpetas con la siguiente función como:
createSpeciesFolders(inDir = fotos_sitio_1_renombradas,
species = especies_sitio_1,
hasCameraFolders = FALSE,
removeFolders = FALSE)
## created 0 directories
## 30 directories already existed
## directory created exists
## 1 Sitio_1_R/CB23/Conejo FALSE TRUE
## 2 Sitio_1_R/CB23/Coyote FALSE TRUE
## 3 Sitio_1_R/CB23/Lince FALSE TRUE
## 4 Sitio_1_R/CB23/Pecar<U+00ED> FALSE TRUE
## 5 Sitio_1_R/CB23/Venado FALSE TRUE
## 6 Sitio_1_R/CB23/Zorra FALSE TRUE
## 7 Sitio_1_R/CB24/Conejo FALSE TRUE
## 8 Sitio_1_R/CB24/Coyote FALSE TRUE
## 9 Sitio_1_R/CB24/Lince FALSE TRUE
## 10 Sitio_1_R/CB24/Pecar<U+00ED> FALSE TRUE
## 11 Sitio_1_R/CB24/Venado FALSE TRUE
## 12 Sitio_1_R/CB24/Zorra FALSE TRUE
## 13 Sitio_1_R/CB25/Conejo FALSE TRUE
## 14 Sitio_1_R/CB25/Coyote FALSE TRUE
## 15 Sitio_1_R/CB25/Lince FALSE TRUE
## 16 Sitio_1_R/CB25/Pecar<U+00ED> FALSE TRUE
## 17 Sitio_1_R/CB25/Venado FALSE TRUE
## 18 Sitio_1_R/CB25/Zorra FALSE TRUE
## 19 Sitio_1_R/CB26/Conejo FALSE TRUE
## 20 Sitio_1_R/CB26/Coyote FALSE TRUE
## 21 Sitio_1_R/CB26/Lince FALSE TRUE
## 22 Sitio_1_R/CB26/Pecar<U+00ED> FALSE TRUE
## 23 Sitio_1_R/CB26/Venado FALSE TRUE
## 24 Sitio_1_R/CB26/Zorra FALSE TRUE
## 25 Sitio_1_R/CB27/Conejo FALSE TRUE
## 26 Sitio_1_R/CB27/Coyote FALSE TRUE
## 27 Sitio_1_R/CB27/Lince FALSE TRUE
## 28 Sitio_1_R/CB27/Pecar<U+00ED> FALSE TRUE
## 29 Sitio_1_R/CB27/Venado FALSE TRUE
## 30 Sitio_1_R/CB27/Zorra FALSE TRUE
Una vez creadas las subcarpetas las fotos son arrastradas de acuerdo a la especie correspondiente. Las ventajas de utilizar digiKam es que si en una foto se tienen más de una especie es posible etiquetar a cada una, en cambio si se utilizan subcarpetas se debe hacer una copia de las fotos en donde se observen más de una especie. Otra ventaja de las etiquetas es que el nombre de la especie queda grabado dentro de los metadatos y también se pueden hacer comparaciones cuando más de un observador realiza la identificación de la especie o individuos. También se pueden crear carpetas que contengan las fotos de todas las cámaras de una sola especie, para esto se usa la función:
fotos_venado_sitio_1 <- file.path("Venado")
venado <- "Venado"
getSpeciesImages(species = "venado",
IDfrom = "directory",
inDir = fotos_sitio_1_renombradas,
outDir = fotos_venado_sitio_1,
createStationSubfolders = TRUE)
Si se utiliza FALSE todas las fotos estarán en una sola carpeta. La nueva carpeta “Venado” no puede ser guardada dentro de la carpeta de fotos renombradas, por lo tanto, “inDir” y “outDir” deben tener rutas diferentes.
Extracción de metadatos por especie y/o individuos
Cuando se trabaja con especies que pueden ser identificadas individualmente es necesario clasificar las fotos a través de subcarpetas dentro de las carpetas de cada especie o etiquetas.
Para este ejemplo se utilizará la carpeta de venado. Dentro de cada carpeta de estación se deben crear manualmente o en camtrapR subcarpetas con el número de individuos que se han identificado. Posteriormente se deben arrastrar las fotos de cada individuo a la carpeta correspondiente.
Extracción de metadatos por especie y/o individuos
Una vez organizadas las fotos se pueden crear tablas con la información de cada foto por especie e individuos. Para crear las tablas por especie se utiliza la siguiente función:
tabla_sitio_1 <- recordTable(inDir = fotos_sitio_1_renombradas,
IDfrom = "directory",
timeZone = "America/Mexico_City",
writecsv = FALSE)
## CB23 : 31 images
## CB24 : 18 images
## CB25 : 49 images
## CB26 : 17 images
## CB27 : 3 images
Se crea una tabla con todas las fotos sin contemplar registros independientes y se pueden visualizar los primeros seis renglones como:
head(tabla_sitio_1)
## Station Species DateTimeOriginal Date Time delta.time.secs
## 1 CB23 Conejo 2013-05-12 04:02:34 2013-05-12 04:02:34 0
## 2 CB23 Conejo 2013-05-12 04:02:38 2013-05-12 04:02:38 4
## 3 CB23 Conejo 2013-05-12 04:02:43 2013-05-12 04:02:43 5
## 4 CB23 Venado 2013-06-04 18:21:00 2013-06-04 18:21:00 0
## 5 CB23 Venado 2013-06-04 18:21:05 2013-06-04 18:21:05 5
## 6 CB23 Venado 2013-06-04 18:21:09 2013-06-04 18:21:09 4
## delta.time.mins delta.time.hours delta.time.days Directory
## 1 0 0 0 Sitio_1_R/CB23/Conejo
## 2 0 0 0 Sitio_1_R/CB23/Conejo
## 3 0 0 0 Sitio_1_R/CB23/Conejo
## 4 0 0 0 Sitio_1_R/CB23/Venado
## 5 0 0 0 Sitio_1_R/CB23/Venado
## 6 0 0 0 Sitio_1_R/CB23/Venado
## FileName
## 1 CB23__2013-05-12__04-02-34(1).JPG
## 2 CB23__2013-05-12__04-02-38(2).JPG
## 3 CB23__2013-05-12__04-02-43(3).JPG
## 4 CB23__2013-06-04__18-21-00(1).JPG
## 5 CB23__2013-06-04__18-21-05(2).JPG
## 6 CB23__2013-06-04__18-21-09(3).JPG
Para obtener la tabla solo con los registros independientes se deben agregar otros datos a la función:
tabla_sitio_1_independientes <- recordTable(inDir = fotos_sitio_1_renombradas,
IDfrom = "directory",
minDeltaTime = 60,
deltaTimeComparedTo = "lastRecord",
timeZone = "America/Mexico_City")
## CB23 : 31 images
## CB24 : 18 images
## CB25 : 49 images
## CB26 : 17 images
## CB27 : 3 images
Note que la función “minDeltaTime” es el lapso de tiempo que se considera entre una foto y otra para ser un registro independiente, para el ejemplo se utilizaron 60 min. En “exclude” se listan las especies que se quieren omitir en la tabla o la carpeta con especies no identificadas.
Las tablas pueden ser guardadas en formato *.csv y leídas posteriormente en camtrapR
con las siguientes funciones:
write.csv(tabla_sitio_1, "tabla sitio 1.csv")
write.csv(tabla_sitio_1_independientes, "tabla sitio 1 independientes.csv")
read.csv("tabla sitio 1.csv", header = T)
read.csv("tabla sitio 1 independientes.csv", header = T)
La cual se visualiza como:
Para crear las tablas con la información de cada individuo, se utiliza el objeto creado anteriormente con la dirección de la carpeta “Venado” como:
fotos_venado_sitio_1 <- file.path("Venado")
Después se utiliza la siguiente función:
tabla_venado_individuos <- recordTableIndividual(inDir = fotos_venado_sitio_1,
IDfrom = "directory",
minDeltaTime = 60,
deltaTimeComparedTo = "lastIndependentRecord",
metadataIDTag = "individuo",
hasStationFolders = TRUE,
timeZone = "America/Mexico_City")
## CB23 : 25 images
## CB24 : 15 images
## CB25 : 40 images
## CB27 : 3 images
En IDfrom se utiliza “metadata” si las fotos tienen etiquetas y “directory” si estan en subcarpetas. En “metadataIDTag” se debe poner el nombre que identifica a la carpeta de cada individuo. Se puede visualizar como:
head(tabla_venado_individuos)
## Station Species Individual DateTimeOriginal Date Time
## 1 CB23 Venado Individuo 1 2013-06-04 18:21:00 2013-06-04 18:21:00
## 2 CB23 Venado Individuo 1 2013-06-08 19:57:12 2013-06-08 19:57:12
## 3 CB23 Venado Individuo 1 2013-06-26 04:13:05 2013-06-26 04:13:05
## 4 CB23 Venado Individuo 1 2013-07-05 06:00:23 2013-07-05 06:00:23
## 5 CB23 Venado Individuo 1 2013-07-07 18:05:56 2013-07-07 18:05:56
## 6 CB23 Venado Individuo 1 2013-07-20 05:21:43 2013-07-20 05:21:43
## delta.time.secs delta.time.mins delta.time.hours delta.time.days
## 1 0 0 0.0 0.0
## 2 351372 5856 97.6 4.1
## 3 1498553 24976 416.3 17.3
## 4 784038 13067 217.8 9.1
## 5 216333 3606 60.1 2.5
## 6 1077347 17956 299.3 12.5
## Directory FileName
## 1 Venado/CB23/Individuo 1 CB23__2013-06-04__18-21-00(1).JPG
## 2 Venado/CB23/Individuo 1 CB23__2013-06-08__19-57-12(1).JPG
## 3 Venado/CB23/Individuo 1 CB23__2013-06-26__04-13-05(1).JPG
## 4 Venado/CB23/Individuo 1 CB23__2013-07-05__06-00-23(1).JPG
## 5 Venado/CB23/Individuo 1 CB23__2013-07-07__18-05-56(1).JPG
## 6 Venado/CB23/Individuo 1 CB23__2013-07-20__05-21-43(1).JPG
La tabla creada se puede guardar con la siguiente función:
write.csv(tabla_venado_individuos, "tabla venado.csv")
La tabla se puede visualizar como:
Exploración y visualización de datos
En el paquete camtrapR
se pueden crear algunos gráficos de riqueza, número de fotos por cámara, así como de actividad de especies. También se puede obtener un resumen del número de días que trabajo cada estación, el número de especies capturadas por cámara y el número total de registros por especie. Es importante tener en cuenta que camtrapR
solo nos ayuda hacer una exploración general de los datos, para análisis más específicos se deben utilizar otros paquetes, no obstante las tablas obtenidas pueden ser de mucha utilidad.
Para crear mapa de riqueza de especies por estación como:
mapa_riqueza_estacion <- detectionMaps(CTtable = sitio_1,
recordTable = tabla_sitio_1_independientes,
Xcol = "X",
Ycol = "Y",
stationCol = "Station",
speciesCol = "Species",
printLabels = TRUE,
richnessPlot = TRUE,
speciesPlots = FALSE,
addLegend = TRUE)
Observe que el objeto “casa_blanca” contiene la tabla que contiene las UTM y el lapso de operación de cada cámara. El objeto “tabla_indepen_casablanca” es el que contiene los metadatos de los registros independientes.
Para conocer el número de registros de una especie por estación como:
mapa_lince <- detectionMaps(CTtable = sitio_1,
recordTable = tabla_sitio_1_independientes,
Xcol = "X",
Ycol = "Y",
stationCol = "Station",
speciesCol = "Species",
speciesToShow = "Lince",
printLabels = TRUE,
richnessPlot = FALSE,
speciesPlots = TRUE,
addLegend = TRUE)
Para estimar la actividad empleando la densidad kernel como:
zorra <- "Zorra"
activityDensity(recordTable = tabla_sitio_1_independientes, species = zorra, xlab = "Hora", ylab = "Densidad")
Para crear histograma del número de fotos por hora como:
activityHistogram(recordTable = tabla_sitio_1_independientes, species = zorra)
Para generar gráfica circular de actividad con barras:
venado_cb <- "Venado"
activityRadial(recordTable = tabla_sitio_1_independientes, species = venado_cb, lwd = 3)
Para generar gráfica circular de actividad con polígono:
activityRadial(recordTable = tabla_sitio_1_independientes, species = venado_cb, speciesCol = "Species", plotR = TRUE, ldw = 3, rp.type = "p")
## Warning in polygon(xpos, ypos, border = linecol, col = polycol, lty =
## ltype, : "ldw" is not a graphical parameter
Para comparar la actividad de dos especies con densidad kernel como:
zorra <- "Zorra"
conejo <- "Conejo"
activityOverlap(recordTable = tabla_sitio_1_independientes,
speciesA = zorra,
speciesB = conejo,
writePNG = FALSE,
plotR = TRUE,
addLegend = TRUE,
legendPosition = "topright",
linecol = c("grey", "black"),
linewidth = c(3,3),
add.rug = TRUE,
xlab = "Hora",
ylab = "Densidad",
ylim = c(0,0.40))
Para generar reporte de datos:
reporte_sitio_1 <- surveyReport (recordTable = tabla_sitio_1_independientes, CTtable = sitio_1,speciesCol = "Species",stationCol = "Station", setupCol = "Fecha_colocaci.n", retrievalCol = "Fecha_retiro", CTDateFormat = "%d/%m/%Y", recordDateTimeCol = "DateTimeOriginal",recordDateTimeFormat = "%Y-%m-%d %H:%M:%S", CTHasProblems = T)
##
## -------------------------------------------------------
## [1] "Total number of stations: 5"
##
## -------------------------------------------------------
## [1] "Number of operational stations: 5"
##
## -------------------------------------------------------
## [1] "n nights with cameras set up (operational or not. NOTE: only correct if 1 camera per station): 455"
##
## -------------------------------------------------------
## [1] "n nights with cameras set up and active (trap nights. NOTE: only correct if 1 camera per station): 426"
##
## -------------------------------------------------------
## [1] "total trapping period: 2013-05-01 - 2013-07-31"
Para extraer datos específicos como la operación de la cámara, número de días activa e inactiva:
reporte_sitio_1 [[1]]
## Station setup_date first_image_date last_image_date retrieval_date
## 1 CB23 2013-05-01 2013-05-08 2013-07-20 2013-07-31
## 2 CB24 2013-05-01 2013-05-09 2013-06-28 2013-07-31
## 3 CB25 2013-05-01 2013-05-14 2013-07-16 2013-07-31
## 4 CB26 2013-05-01 2012-05-10 2013-07-22 2013-07-31
## 5 CB27 2013-05-01 2013-07-17 2013-07-17 2013-07-31
## n_nights_total n_nights_active n_cameras
## 1 91 91 1
## 2 91 91 1
## 3 91 62 1
## 4 91 91 1
## 5 91 91 1
Para extraer datos del número de especies por estación:
reporte_sitio_1 [[2]]
## Station n_species
## 1 CB23 3
## 2 CB24 2
## 3 CB25 3
## 4 CB26 3
## 5 CB27 1
Para extraer datos del número de registros independientes totales por especie y número de estaciones en las que se registraron:
reporte_sitio_1 [[3]]
## species n_events n_stations
## 1 Conejo 4 2
## 2 Coyote 1 1
## 3 Lince 1 1
## 4 Pecari 2 1
## 5 Venado 23 4
## 6 Zorra 7 3
Para extraer datos del número de registros de cada especie por estación:
reporte_sitio_1 [[4]]
## Station Species n_events
## 1 CB23 Conejo 1
## 2 CB23 Venado 7
## 3 CB23 Zorra 1
## 4 CB24 Lince 1
## 5 CB24 Venado 4
## 6 CB25 Pecari 2
## 7 CB25 Venado 11
## 8 CB25 Zorra 1
## 9 CB26 Conejo 3
## 10 CB26 Coyote 1
## 11 CB26 Zorra 5
## 12 CB27 Venado 1
Exportación de datos para análisis de ocupación
En camtrapR
se pueden crear historiales de capturas, es decir que el paquete crea una tabla de 0 (no detección) y 1 (detección) para cada especie, estas tablas pueden ser utilizadas en otros paquetes para modelar la ocupación de las especies de interés. La detección se puede tabular por día o se pueden realizar agrupaciones del número de días que se requieran.
A continuación se muestra un ejemplo con el venado cola blanca. Para crear las tablas de historias de captura por especie, primero se necesita crear un objeto que contenga la tabla con la información de cuantos días estuvo activa cada cámara:
cam_activas_sitio_1 <- cameraOperation(CTtable = sitio_1,
stationCol = "Station",
setupCol = "Fecha_colocaci.n",
retrievalCol = "Fecha_retiro",
hasProblems = T,
dateFormat = "%d/%m/%Y")
En pantalla se muestra como:
View(cam_activas_sitio_1)
También se puede obtener la gráfica del periodo de operación de las cámaras:
En la gráfica de operación de la cámara el color gris representa el periodo que la cámara estuvo activa y el color rojo los días que estuvo inactiva por alguna falla.
Para crear la tabla con las historias de captura de una especie se utiliza:
hist_captura_venado <- detectionHistory(recordTable = tabla_sitio_1_independientes,
camOp = cam_activas_sitio_1,
stationCo = "Station",
speciesCol = "Species",
recordDateTimeCol = "DateTimeOriginal",
recordDateTimeFormat = "%Y-%m-%d",
species = "Venado",
occasionLength = 1,
day1 = "station",
includeEffort = FALSE,
timeZone = "America/Mexico_City")
En “recordDateTimeCol” se debe especificar el formato de la fecha que contiene la tabla de registros independientes. En “occasionLength” se debe especificar el número de días de cada ocasión de detección, por ejemplo, “1” dará la detección del venado en cada día de actividad de la cámara y “10” agrupará las detecciones de venado cada diez días.
Una vez creada la tabla se puede guardar en archivo *.csv para poder ser utilizada en otros paquetes y/o programas y se puede visualizar como se muestra:
write.csv(hist_captura_venado, "historia captura venado.csv")
Conclusiones
De acuerdo a los resultados y experiencia obtenidos con el empleo de camtrapR
en este trabajo, consideramos que es un paquete eficiente para renombrar automáticamente las imágenes, extraer sus metadatos en archivos *.csv, generar gráficos exploratorios de la información y crear bases para análisis de ocupación. Otra ventaja es que en camtrapR no es necesario importar cada una de las imágenes, a diferencia de otros programas como camera base
, CPW photo warehouse
y eMammal
.
Otra de las ventajas de este programa es que lee imágenes ilimitadamente ya que las fotos se guardan en directorios locales y al mismo tiempo se pueden trasladar fácilmente a otros equipos (Niedballa et al., 2016).
Te permite editar en los metadatos la fecha y hora de captura de la foto en caso de que sea errónea, lo cual no se puede hacer en los otros programas.
Además, con camtrapR
se pueden extraer de la base general los registros independientes de acuerdo a los criterios establecidos por el usuario. Si se utilizan etiquetas se pueden comparar especies o individuos identificados por dos o más observadores.
Finalmente, como organizador y gestor de fotos, camtrapR permite trasladar datos y archivos a sistemas de información geográfica de uno modo relativamente similar al programa Camera Trap Manager
(Zaragozí et al., 2015). Asimismo, permite crear archivos para el análisis en otros programas como PRESENCE
, MARK
, y paquetes R como unmarked
, secr
y otros para diferentes análisis (Niedballa et al., 2016).
Bibliografía
- Ivan, J.S. y E.S. Newkirk. 2016. CPW PhotoWarehouse: a custom database to facilitate archiving, identifying, summarizing and managing photo data collected from camera traps. Methods in Ecology and Evolution, 7:499–504.
- Kozlov, D. 2009. ReNamer. https://www.advancedrenamer.com. Krishnappa, Y.S. y W.C. Turner. 2014. Software for minimalistic data management in large camera trap studies. Ecological Informatics, 24:11–16.
- Newkirk, E.S. 2016. CPW Photo Warehouse. Colorado Parks and Wildlife, Fort Collins, Colorado, USA. http://cpw.state.co.us/learn/Pages/ResearchMammalsSoftware.aspx
- Niedballa, J. 2016. Package ‘camtrapR’. Repository CRAN. Date/Publication 2016-06-24 07:39:57.
- Niedballa, J., R. Sollmann, A. Courtiol y A. Wilting. 2016. camtrapR: an R package for efficient camera trap data management. Methods in Ecology and Evolution, 7:1457-1462.
- Tobler, M. 2007. Camera Base Version 1.3. Botanical Research Institute of Texas
Este documento fue creado con RMarkdown y se puede consultar en: http://rpubs.com/SMR8810