Publicado el :
Informes EXTERNE

Mapa de calor de detecciones de aves por día

Este código también está disponible en: Deutsch Français
En espera de validación
El script ejecuta un proceso completo de informes. Comienza descargando un archivo CSV que contiene datos de detección de aves mediante una solicitud HTTP. Luego, utiliza un paso DATA para leer y analizar este archivo creando un conjunto de datos SAS© en la librería WORK. Posteriormente, se utiliza una consulta PROC SQL para agregar los datos, contando el número de detecciones por día y por especie. Finalmente, después de ordenar, PROC SGPLOT genera un gráfico de dispersión que funciona como un mapa de calor, visualizando la intensidad de las detecciones diarias para cada especie de ave.
Análisis de datos

Type : EXTERNE


Los datos se cargan desde un archivo CSV remoto alojado en GitHub. El procedimiento PROC HTTP se utiliza para descargar el archivo en una ubicación temporal, que luego es leído por un paso DATA.

1 Bloque de código
PROC HTTP
Explicación :
Este bloque utiliza el procedimiento HTTP para descargar el contenido de un archivo CSV desde una URL en GitHub. El contenido se almacena en un archivo temporal referenciado por 'birdcsv'.
¡Copiado!
1filename birdcsv temp;
2PROC HTTP
3 method="GET"
4 url="https://raw.githubusercontent.com/cjdinger/birdnet-data/refs/heads/main/alldetect.csv"
5 out=birdcsv;
6RUN;
2 Bloque de código
DATA STEP Data
Explicación :
Este paso DATA lee el archivo CSV temporal. Define la estructura de la tabla de destino 'WORK.BIRDS_EVENTS', incluyendo informats y formatos para cada columna, y luego carga los datos ignorando la primera línea de encabezado (firstobs=2).
¡Copiado!
1DATA WORK.BIRDS_EVENTS;
2 INFILE BIRDCSV delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2;
3 informat Date yymmdd10.;
4 informat Time time20.3;
5 informat Sci_Name $30.;
6 informat Com_Name $30.;
7 informat Confidence best32.;
8 informat Lat best32.;
9 informat Lon best32.;
10 informat Cutoff best32.;
11 informat Week best32.;
12 informat Sens best32.;
13 informat Overlap best32.;
14 informat File_Name $57.;
15 FORMAT Date yymmdd10.;
16 FORMAT Time time20.3;
17 FORMAT Sci_Name $30.;
18 FORMAT Com_Name $30.;
19 FORMAT Confidence best12.;
20 FORMAT Lat best12.;
21 FORMAT Lon best12.;
22 FORMAT Cutoff best12.;
23 FORMAT Week best12.;
24 FORMAT Sens best12.;
25 FORMAT Overlap best12.;
26 FORMAT File_Name $57.;
27 INPUT
28 Date
29 Time
30 Sci_Name $
31 Com_Name $
32 Confidence
33 Lat
34 Lon
35 Cutoff
36 Week
37 Sens
38 Overlap
39 File_Name $
40 ;
41RUN;
3 Bloque de código
PROC SQL Data
Explicación :
Este bloque SQL crea una tabla resumen 'WORK.birds_DailyDetect'. Agrupa los datos por fecha, nombre científico y nombre común, y cuenta el número de detecciones para cada grupo. También extrae un nombre de familia tomando la última palabra del nombre común.
¡Copiado!
1PROC SQL;
2 CREATE TABLE WORK.birds_DailyDetect AS
3 SELECT t1.Date,
4 t1.Sci_Name,
5 t1.Com_Name,
6 scan(t1.Com_Name,-1,' ') as Family,
7 /* Detections */
8 (COUNT(t1.Date)) AS Detections FROM WORK.birds_events t1 GROUP BY t1.Date, Family, t1.Sci_Name, t1.Com_Name;
9QUIT;
4 Bloque de código
PROC SORT
Explicación :
Este procedimiento ordena la tabla agregada 'birds_dailyDetect' según la columna 'Family'. Esta ordenación es útil para la organización de los datos, aunque no tiene un impacto directo en el gráfico SGPLOT final tal como se define.
¡Copiado!
1 
2PROC SORT
3DATA=birds_dailyDetect;
4BY Family;
5RUN;
6 
5 Bloque de código
PROC SGPLOT
Explicación :
Este bloque utiliza SGPLOT para crear una visualización. Se genera un diagrama de dispersión con la fecha en el eje X y el nombre común del ave en el eje Y. El color de cada punto está determinado por el número de detecciones ('Detections'), creando así un mapa de calor que muestra los días y las especies con mayor actividad.
¡Copiado!
1ods graphics / width=1000 height=2000;
2/* ods html5(eghtml) gtitle; */
3 
4PROC SGPLOT DATA=work.birds_DailyDetect;
5 title "Birdsong Detections by Day - from BirdNET-Pi";
6 scatter x=Date y=Com_Name / colorresponse=Detections
7 colormodel=(lightblue lightgreen darkgreen lightorange orange red darkred)
8 markerattrs=(size=4);
9 xaxis grid minor;
10 yaxis fitpolicy=none grid minor valueattrs=(size=8pt) display=(nolabel);
11RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.