Veröffentlicht am :
Reporting EXTERNE

Heatmap der Vogeldetektionen pro Tag

Dieser Code ist auch verfügbar auf: Español Français
Wartet auf Validierung
Das Skript führt einen vollständigen Berichterstellungsprozess aus. Es beginnt mit dem Herunterladen einer CSV-Datei mit Vogeldetektionsdaten über eine HTTP-Anfrage. Anschließend wird ein DATA-Schritt verwendet, um diese Datei zu lesen und zu parsen, wodurch ein SAS©-Datensatz in der WORK-Bibliothek erstellt wird. Eine PROC SQL-Anfrage wird dann verwendet, um die Daten zu aggregieren, indem die Anzahl der Detektionen pro Tag und pro Art gezählt wird. Schließlich, nach einer Sortierung, generiert PROC SGPLOT ein Streudiagramm, das als Heatmap fungiert und die Intensität der Detektionen pro Tag für jede Vogelart visualisiert.
Datenanalyse

Type : EXTERNE


Die Daten werden aus einer entfernten CSV-Datei geladen, die auf GitHub gehostet wird. Die PROC HTTP-Prozedur wird verwendet, um die Datei in einen temporären Speicherort herunterzuladen, der dann von einem DATA-Schritt gelesen wird.

1 Codeblock
PROC HTTP
Erklärung :
Dieser Block verwendet die HTTP-Prozedur, um den Inhalt einer CSV-Datei von einer GitHub-URL herunterzuladen. Der Inhalt wird in einer temporären Datei gespeichert, die als 'birdcsv' referenziert wird.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Schritt liest die temporäre CSV-Datei. Er definiert die Struktur der Zieltabelle 'WORK.BIRDS_EVENTS', einschließlich der Informate und Formate für jede Spalte, und lädt dann die Daten, wobei die erste Kopfzeile ignoriert wird (firstobs=2).
Kopiert!
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 Codeblock
PROC SQL Data
Erklärung :
Dieser SQL-Block erstellt eine zusammenfassende Tabelle 'WORK.birds_DailyDetect'. Er gruppiert die Daten nach Datum, wissenschaftlichem Namen und gebräuchlichem Namen und zählt die Anzahl der Detektionen für jede Gruppe. Er extrahiert auch einen Familiennamen, indem er das letzte Wort des gebräuchlichen Namens nimmt.
Kopiert!
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 Codeblock
PROC SORT
Erklärung :
Diese Prozedur sortiert die aggregierte Tabelle 'birds_dailyDetect' basierend auf der Spalte 'Family'. Diese Sortierung ist nützlich für die Datenorganisation, obwohl sie keinen direkten Einfluss auf das endgültige SGPLOT-Diagramm hat, wie es definiert ist.
Kopiert!
1 
2PROC SORT
3DATA=birds_dailyDetect;
4BY Family;
5RUN;
6 
5 Codeblock
PROC SGPLOT
Erklärung :
Dieser Block verwendet SGPLOT, um eine Visualisierung zu erstellen. Ein Streudiagramm wird mit dem Datum auf der X-Achse und dem gebräuchlichen Namen des Vogels auf der Y-Achse generiert. Die Farbe jedes Punktes wird durch die Anzahl der Detektionen ('Detections') bestimmt, wodurch eine Heatmap entsteht, die die Tage und Arten mit der höchsten Aktivität anzeigt.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.