원클릭으로
loftgaedi
Icelandic air quality (UST) — PM10, PM2.5, NO2, H2S from 57 monitoring stations, hourly data.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Icelandic air quality (UST) — PM10, PM2.5, NO2, H2S from 57 monitoring stations, hourly data.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Iceland energy authority — electricity generation, use, fuel sales, power plants and licences. Use for energy-system analysis.
Fiskistofa — public WFS layers for fishing closures, regulations and fishing areas; paid REST catch/quota data is excluded.
Hafrannsóknastofnun / MFRI — annual fish-stock assessments, advice, landings and survey series in embedded tables.
Environment Agency of Iceland GIS — open WFS layers for contaminated land, water, protected areas, noise and wastewater.
Icelandic Met Office (Veðurstofa) — weather observations, stations, forecasts and earthquakes via the modern JSON API at api.vedur.is.
Iceland Tax Authority — annual reports (ársreikningar), company registry, ownership chain mapping by kennitala.
| name | loftgaedi |
| description | Icelandic air quality (UST) — PM10, PM2.5, NO2, H2S from 57 monitoring stations, hourly data. |
PM10, PM2.5, NO2, SO2, H2S monitoring via Umhverfisstofnun (Environment Agency).
Base URL: https://api.ust.is/aq/a/
No authentication required. Returns JSON. CORS enabled.
| Endpoint | Description |
|---|---|
getStations | All stations with coordinates, parameters, activity dates |
getStation/{local_id} | Single station metadata |
getLatest | Last 24h for all stations |
getCurrent/{local_id} | Last 24h for one station |
getDate/date/{YYYY-MM-DD} | All stations, all params, one day (hourly) |
{
"STA-IS0005A": {
"name": "Reykjavik Grensas",
"local_id": "STA-IS0005A",
"parameters": {
"PM10": {
"unit": "µg/m3",
"resolution": "1h",
"0": { "endtime": "2024-03-15 23:00:00", "value": "42.5", "verification": 3 },
...
}
}
}
}
Values are strings — cast to float. Numbered keys (0, 1, ...) are hourly readings.
| Station | local_id | Type | Active |
|---|---|---|---|
| Grensásvegur | STA-IS0005A | traffic | 1990– |
| Húsdýragarðurinn | STA-IS0006A | background | 2002– |
| Norðlingaholt | STA-IS0022A | industrial | 2011– |
| Laugarnes | STA-IS0061A | industrial | 2021– |
Primary station for PM10/nagladekk (studded tire) analysis: Grensásvegur (traffic station on major road).
| Parameter | Relevance |
|---|---|
| PM10 | Spring dust from studded tires. EU 24h limit: 50 µg/m³ |
| PM2.5 | Fine particles. EU annual limit: 25 µg/m³ |
| NO2 | Traffic. EU 1h limit: 200 µg/m³ |
| H2S | Geothermal (Hellisheiði). Nuisance smell at 5 µg/m³ |
Annual CSVs at https://api.ust.is/static/aq/ust_aq_timeseries_{YEAR}.csv (62-113 MB each).
station_name, pollutantnotation, local_id, endtime, the_value, resolution, verification, validity, station_local_id, concentrationYYYY-MM-DD HH:MM:SS (2015-2021) and DD/MM/YYYY HH:MM:SS (2022+)station_local_id == "STA-IS0005A" and pollutantnotation == "PM10"the_value < 2000 (values >2000 are instrument faults)import httpx
def fetch_pm10_day(date_str: str, station: str = "STA-IS0005A") -> list[dict]:
"""Fetch hourly PM10 for one day. date_str: YYYY-MM-DD"""
url = f"https://api.ust.is/aq/a/getDate/date/{date_str}"
resp = httpx.get(url, timeout=30)
data = resp.json()
station_data = data.get(station, {})
pm10 = station_data.get("parameters", {}).get("PM10", {})
rows = []
for k, v in pm10.items():
if isinstance(v, dict) and "value" in v:
rows.append({"datetime": v["endtime"], "pm10": float(v["value"])})
return rows
Rate limiting: No documented limits. Use 0.15s delay between requests.
uv run python scripts/loftgaedi.py — downloads bulk CSVs + API for recent data, outputs data/processed/reykjavik_pm10_daily.csv with PM10 + wind + weather joined.
Base URL: http://loftapi.reykjavik.is/api/v1/stations/data/{station}/{pollutant}/{start}/{sh}/{sm}/{end}/{eh}/{em}
Use Open-Meteo for historical daily wind speed in Reykjavik:
https://archive-api.open-meteo.com/v1/archive?latitude=64.13&longitude=-21.90&start_date=2024-01-01&end_date=2024-12-31&daily=wind_speed_10m_max,wind_speed_10m_mean,precipitation_sum&timezone=Atlantic/Reykjavik
Low wind + dry = high PM10 (dust not dispersed). High wind can also resuspend settled dust.