Autor / Autorin
Webredaktion umwelt.info
Nationales Zentrum für Umwelt- und Naturschutzinformationen / Umweltbundesamt
zuletzt aktualisiert am:

So laden Sie Daten bei umwelt.info mit Python und R herunter

Mit dieser Anleitung zeigen wir Ihnen, wie Sie Ressourcen von Suchergebnissen auf umwelt.info direkt automatisiert herunterladen können. Diese finden Sie in der Detailansicht eines Eintrages unter dem Aufklappmenü „Ressourcen“ (siehe Abbildung 1 für ein konkretes Beispiel). Solche Dateianhänge können unter anderem Messdaten, Karten oder Projektberichte beinhalten. 

Abbildung 1: Dateianhänge im Aufklappmenü „Ressourcen“

Mithilfe der Pakete umweltapir (für R) und umwelt-apy (für Python) können Sie die gewünschten Ressourcen anhand der verknüpften URLs wie dem unten gezeigten Beispiel herunterladen. So können Sie langwierige manuelle Downloads vermeiden, zum Beispiel, wenn es zu einem Suchergebnis sehr viele dazugehörige Ressourcen gibt. 

Workflow anhand eines Beispiels

Abbildung 2: Oben rechts finden Sie einen Button, mit dem Sie den API-Link generieren lassen können, den Sie als Input für die Funktion fetch_by_url benötigen.

Zunächst stellen Sie eine Suchanfrage auf umwelt.info und klicken dort auf den Button "API" (siehe Abbildung 2). Den dadurch generierten Link können Sie dann an die Funktion fetch_by_url (oder alternativ fetch_by_query) als Input übergeben. Im oben gezeigten Beispiel wird nach dem Suchbegriff „Ozon“ in der Quelle "open.bydata" gesucht.

Die Funktion unnest_filter ermöglicht es, die Ergebnisliste auf Resourcen mit bestimmten Dateiformaten (wie z.B. im Code-Abschnitt unterhalb: „Microsoft Excel Spreadsheet“ und „CSV“) einzuschränken. Darüber hinaus können Sie die Ergebnisliste bei Bedarf auf die Teilmenge reduzieren, die einen bestimmten Begriff in der Beschreibung der Ressource enthalten. Direkt in der Suchanfrage ist es nicht möglich, gezielt nur im Feld „Ressourcen“ zu suchen, daher muss dies im Nachhinein geschehen.

Mit der Funktion preview_resources erstellen Sie eine tabellarische Übersicht, die alle IDs, Titel, Beschreibungen und Dateitypen zu den Ressourcen auflistet. Mit dieser Datei kann überprüft werden, ob die Liste die gewünschten Ergebnisse enthält. Falls ja, können die Dateien mit download­_resources heruntergeladen werden.

url = "https://md.umwelt.info/search/all?query=(Ozon)+AND+organisation%3A%2FLand%2FBayern%2Fopen.bydata" 

results = (
    fetch_by_url(
        api_url = url,
        build_row = "only_resources",
        filter_datasets = lambda dataset: "resources" in dataset,
        output = "Pandas",
    )
    .pipe(unnest_and_filter, formats=["Microsoft Excel Spreadsheet", "CSV"], description_regex="Ozon")
    .pipe(preview_resources)
)

download_resources(results, base_dir="downloads")
url <- "https://md.umwelt.info/search/all?query=(Ozon)+AND+organisation%3A%2FLand%2FBayern%2Fopen.bydata" 
results <- fetch_by_url(url, columns = "resource_only") |>
  unnest_and_filter(formats = c("Microsoft Excel Spreadsheet", "CSV"), description_regex = "Ozon") |>
  preview_resources()

results |> download_resources(base_dir = tempdir())

Zusätzlich zu dem gezeigten Beispiel mit den Ressourcen zu „Ozon“ in der Quelle "open.bydata" finden Sie hier noch einige weitere beispielhafte Suchanfragen. Sie können alternativ statt nach „Ozon“ z.B. auch nach "Feinstaub" suchen. Weitere Beispiele sind u.a. die Wasserkörpersteckbriefe mit Wasserrahmenrichtlinie-Maßnahmen des Landes Brandenburg und die Artsteckbriefe des Rote-Liste-Zentrums:

url = "https://md.umwelt.info/search/all?query=(Feinstaub)+AND+organisation%3A%2FLand%2FBayern%2Fopen.bydata" 
url = "https://md.umwelt.info/search/all?query=organisation%3A%2FLand%2FBrandenburg+%2Btype%3A%2FWRRL-Ma%C3%9Fnahme" 
url = "https://md.umwelt.info/search/all?query=organisation%3A%2FBund%2FBfN%2FRote-Liste-Zentrum"
url <- "https://md.umwelt.info/search/all?query=(Feinstaub)+AND+organisation%3A%2FLand%2FBayern%2Fopen.bydata" 
url <-  "https://md.umwelt.info/search/all?query=organisation%3A%2FLand%2FBrandenburg+%2Btype%3A%2FWRRL-Ma%C3%9Fnahme" 
url <-  "https://md.umwelt.info/search/all?query=organisation%3A%2FBund%2FBfN%2FRote-Liste-Zentrum"

Es ist auch möglich, nach mehreren Organisationen gleichzeitig zu filtern, wie diese beiden Beispiele zeigen:

result_list = fetch_by_query(query="(organisation:/Bund/Destatis OR organisation:'/Land/Statistische Ämter des Bundes und der Länder') AND Abfallentsorgung")
result_list = fetch_by_query(query="(organisation:/Bund/Destatis OR organisation:'/Land/Statistische Ämter des Bundes und der Länder') AND Energieverbrauch")
results  <- fetch_by_query(query="(organisation:/Bund/Destatis OR organisation:'/Land/Statistische Ämter des Bundes und der Länder') AND Abfallentsorgung")
results  <- fetch_by_query(query="(organisation:/Bund/Destatis OR organisation:'/Land/Statistische Ämter des Bundes und der Länder') AND Energieverbrauch")

Kommen Sie bei Rückfragen und Vorschlägen gerne über unser Kontaktformular auf uns zu. Übrigens: Wenn Sie sich für maschinenlesbare Daten von Grundwasser- und Flusspegelmessstellen in Deutschland interessieren, finden Sie in den Artikeln Grundwasserdaten in Deutschland und Ständig in Bewegung: Flusspegel in Deutschland die zugehörigen Downloadskripte.  

Wie hat Ihnen der Beitrag gefallen?

Autor / Autorin
Webredaktion umwelt.info
Webredaktion umwelt.info
Nationales Zentrum für Umwelt- und Naturschutzinformationen / Umweltbundesamt