br-data / corona-deutschland-api-wrapper

API-Wrapper für die gemeldeten Corona-Fallzahlen und Todesfälle in Deutschland aus dem RKI-Dashboard (veraltet)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Corona Deutschland Scraper (RKI)

Der RKI-Wrapper greift auf die API des Robert Koch-Instituts zu und gibt die ausgelieferten Daten in einer für Datawrapper geeigneten Form zurück.

Der Wrapper holt in einer einzelnen Anfrage die Daten bis zum gewählten End-Datum gemeldeten Fälle und aggregiert die Fallzahlen pro Tag und wahlweise nach weiteren Feldern, wie Altersgruppe oder Landkreis. Im Anschluss berechnet er die kumulative Summe der Fallzahlen vom ersten Meldetag an (=2020-01-24).

Hinweis: Um herauszufinden, welche Werte man in die Felder einsetzen kann, lohnt sich ein Blick in den Überblick der Daten. Eine detaillierte Beschreibung der RKI-API findet sich in RKI-API.md.

⚠️ Diese API ist veraltet und wird bald abgeschaltet. Alle Corona-Daten werden zukünftig über eine zentrale Corona-API bereitgestellt.

API

Für die Verwendung der Daten in Apps und interaktiven Grafiken (Datawrapper) stellen wir einen API bereit, die das Abfragen der RKI-Daten nach bestimmten Parametern (Zeitpunkt, Bundesland, Dateiformat) ermöglicht.

URL: https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/

Parameter

  • startDate | optional | Default: '2020-01-24' (= erster Tag, den das RKI liefert): Gibt an, ab welchem Tag der Wrapper Daten zurück gibt. Hinweis: Die aggregierten Fallzahlen enthalten auch weiter zurückliegende Fälle als fromDate.
  • endDate | optional | Default: aktuelles Datum: Gibt an, bis zu welchem Tag der Wrapper Daten zurück gibt
  • dateField | optional | Default: Meldedatum: Gibt an, zu welchem Datum Fälle zählen. Mögliche Werte sind Meldedatum und Refdatum, wobei Refdatum den Erkrankungsbeginn (= Datum des Symptombeginns) darstellt. Dieser kann vor, aber auch nach dem Meldedatum liegen. Falls der Erkrankungsbeginn unbekannt ist, gilt dafür das Meldedatum.
  • sumField | optional | Default: AnzahlFall: Gibt an, welche Werte summiert und ausgegeben werden. Mögliche Werte sind AnzahlFall, AnzahlTodesfall und AnzahlGenesen.
  • group | optional: Gibt an, nach welchem Feld aggregiert wird. Hinweis: Bis jetzt nur einzelne Felder wählbar, z.B. group=Geschlecht. Falls group=Regierungsbezirk gesetzt ist, muss auch der Filter bundesland=Bayern gesetzt sein
  • filetype | optional | Default: json: Wählt das Ausgabeformat. Hinweis: Für Datawrapper wähle format=csv
  • geschlecht, altersgruppe,altersgruppe2, bundesland, landkreis, regierungsbezirk | optional: Filtert die entsprechenden Felder. Mehrfachauswahl ist möglich, z.B. gibt bundesland=Bayern&geschlecht=M die Anzahl der gemeldeten infizierten Männer in Bayern zurück. Mehrfachauswahl innerhalb der Felder ist auch möglich, z.B. landkreis=SK München,Sk Hamburg. Hinweis: altersgruppe2 teilt die Personen in 5-Jahresgruppen ein.
  • sumValue | optional | Default: true: Tageswerte aufaddieren (Summe aller Gemeldeten bis zum jeweiligen Tag) oder nur die Fälle des jeweiligen Tages anzeigen. Nur wirksam bei filetype=csv.
  • newCases | optional | Default: false: Sollen zusätzlich die neuen Fälle in den Feldern newCases und sumNewCases ausgegeben werden. Neue Fälle sind alle, die nur in der aktuellen Publikation des RKI und keiner vorherigen enthalten sind. Hinweis: sumNewCases macht nur für den aktuellen Tag Sinn. newCases im Objekt gibt an, wievele der neuen Fälle dem Datum im Objekt zugeordnet sind.
  • currentCases | optional | Default: false: Wenn true, berechnet der Wrapper die Anzahl der Infizierten und Genesenen pro Tag und ergänzt die Felder currentlyInfected, currentlyRecoverd und deathSum, wobei deathSum die Summe der Todesfälle bis zum jeweiligen Tag ist.

Allgemein Hinweise zur Verwendung der Parameter:

  • Bei Mehrfachauswahl innerhalb eines Feldes sind die Werte mit , ohne Leerzeichen anzugeben.
  • Die Filter-Keys sind in Kleinbuchstaben anzugeben, z.B. bundesland.
  • Alle Werte sind ohne Anführungszeichen anzugeben.
  • Die verschiedenen Filterfelder sind mit logischem AND verknüpft. Mehrfachauswahl innerhalb eines Feldes ist mit OR verknüpft.
  • Abweichung der Schreibweise macht den Filter wirkungslos.
  • Ergänzend zur Filterung ist es fast immer sinnvoll auch den Parameter group mit einem der Filterfelder zu besetzen.

Beispiele

Entwicklung der Fallzahlen für Deutschland nach Erkennungsdatum abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?dateField=Refdatum

Entwicklung der Fallzahlen für Deutschland ab dem 12.03.2020 abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?startDate=2020-03-12

Entwicklung der Fallzahlen für Bayern abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?group=Bundesland
  &bundesland=Bayern

Entwicklung der Fallzahlen für alle bayerischen Regierungsbezirke abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?group=Regierungsbezirk
  &bundesland=Bayern

Entwicklung der Fallzahlen für drei spezifische Regierungsbezirke (Mittelfranken, Oberfranken, Unterfranken) als CSV-Tabelle abfragen:

https://europe-west3-brdata-niels.cloudfunctions.net/rkiApi/query
  ?group=Regierungsbezirk
  &bundesland=Bayern
  &regierungsbezirk=Mittelfranken,Oberfranken,Unterfranken
  &filetype=csv

Entwicklung der Fallzahlen für alle bayerischen Landkreise abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?group=Landkreis
  &bundesland=Bayern

Entwicklung der Fallzahlen für den Landkreis Tirschenreuth abfragen:

https://europe-west3-brdata-corona.cloudfunctions.net/rkiApi/query
  ?group=Landkreis
  &bundesland=Bayern
  &landkreis=LK Tirschenreuth

Verwendung

  1. Repository klonen git clone https://...
  2. Erforderliche Module installieren npm install
  3. Entwicklungsserver starten npm watch

Um die Module installieren und die Entwicklerwerkzeuge nutzen zu können, muss vorher die JavaScript-Runtime Node.js installiert werden. Informationen für Entwickler finden sich weiter unten.

Deployment

Diese Anleitung geht davon aus, dass bereits ein Google Cloud-Konto vorhanden und ein Rechnungskonto eingerichtet ist. Außerdem sollte das Google Cloud-Kommandzeilenwerkzeug installiert und mit einem Benutzerkonto verknüpft sein.

Projekt anlegen

Neues Projekt mit der ID brdata-corona erstellen. Der Parameter --name ist optional.

$ gcloud projects create brdata-corona --name=30-BRData-corona

Das Projekt als aktuelles Arbeitsprojekt festlegen:

$ gcloud config set project brdata-corona

API deployen

Google Cloud Function für das aktuelle Projekt aktivieren:

$ gcloud services enable cloudfunctions.googleapis.com

Rechenzentrum europe-west3 (Frankfurt) als Ziel für das Funktions-Deployment festlegen.

$ gcloud config set functions/region europe-west3

API-Funktion deployen: In diesem Beispiel wird der nicht authentifizierte Zugriff von außerhalb erlaubt, um den Datenaustausch zwischen API und beispielsweise einer Web-App zu ermöglichen:

$ gcloud functions deploy rkiApi --runtime=nodejs10 --trigger-http --allow-unauthenticated

Lokale Entwicklungsumgebung

Um das Skript index.js lokal zu testen, verwendet man am besten das Google Functions Framework. Das Functions Framework kann mit dem Befehl npm run watch gestartet werden. Das hat den Vorteil, dass das Skript jedes Mal neu geladen wird, sobald man Änderungen am Code vornimmt.

Man kann das Functions Framework aber auch manuell installieren und ausführen:

$ npm i -g @google-cloud/functions-framework

Funktion rkiApi starten:

$ functions-framework --target=rkiApi

API-Anfrage stellen (Beispiel):

$ curl -X GET 'localhost:8080/query?group=Landkreis&bundesland=Bayern'

About

API-Wrapper für die gemeldeten Corona-Fallzahlen und Todesfälle in Deutschland aus dem RKI-Dashboard (veraltet)

License:MIT License


Languages

Language:JavaScript 100.0%