61 lines
2.3 KiB
Python
61 lines
2.3 KiB
Python
|
import requests
|
||
|
import pandas as pd
|
||
|
import os
|
||
|
|
||
|
# Funkcja do pobierania danych z API GIOŚ i eksportu do CSV
|
||
|
def fetch_gios_data_to_csv(start_date, end_date, pollutants, output_file):
|
||
|
"""
|
||
|
Pobiera dane z API GIOŚ i zapisuje je do pliku CSV.
|
||
|
|
||
|
:param start_date: Data początkowa w formacie 'YYYY-MM-DD'.
|
||
|
:param end_date: Data końcowa w formacie 'YYYY-MM-DD'.
|
||
|
:param pollutants: Lista identyfikatorów zanieczyszczeń (np. ["PM10", "WWA"]).
|
||
|
:param output_file: Nazwa pliku wynikowego CSV.
|
||
|
"""
|
||
|
base_url = "https://powietrze.gios.gov.pl/pjp-api/rest/data/getData"
|
||
|
|
||
|
# Lista przykładowych ID stacji w Polsce (dostępne w API GIOŚ)
|
||
|
station_ids = [101, 102, 103, 104] # Zastąp ID rzeczywistymi z API
|
||
|
|
||
|
all_data = []
|
||
|
|
||
|
for station_id in station_ids:
|
||
|
for pollutant in pollutants:
|
||
|
try:
|
||
|
print(f"Pobieranie danych dla stacji {station_id} i zanieczyszczenia {pollutant}...")
|
||
|
url = f"{base_url}/{station_id}/{pollutant}/{start_date}/{end_date}"
|
||
|
response = requests.get(url)
|
||
|
response.raise_for_status() # Wyjątek, jeśli status != 200
|
||
|
|
||
|
data = response.json()
|
||
|
|
||
|
if "values" in data:
|
||
|
for measurement in data["values"]:
|
||
|
if measurement["value"] is not None:
|
||
|
all_data.append({
|
||
|
"station_id": station_id,
|
||
|
"pollutant": pollutant,
|
||
|
"date": measurement["date"],
|
||
|
"value": measurement["value"]
|
||
|
})
|
||
|
except Exception as e:
|
||
|
print(f"Błąd podczas pobierania danych dla stacji {station_id}: {e}")
|
||
|
|
||
|
# Eksport danych do CSV
|
||
|
if all_data:
|
||
|
df = pd.DataFrame(all_data)
|
||
|
df.to_csv(output_file, index=False)
|
||
|
print(f"Dane zapisane w pliku: {output_file}")
|
||
|
else:
|
||
|
print("Brak danych do zapisania.")
|
||
|
|
||
|
# Parametry wejściowe
|
||
|
start_date = "2023-01-01" # Początek okresu pomiarów
|
||
|
end_date = "2023-12-31" # Koniec okresu pomiarów
|
||
|
pollutants = ["PM10", "WWA"] # Lista zanieczyszczeń
|
||
|
output_file = "gios_data.csv" # Plik wynikowy
|
||
|
|
||
|
# Wywołanie funkcji
|
||
|
fetch_gios_data_to_csv(start_date, end_date, pollutants, output_file)
|
||
|
|