luftdaten-at / luftdaten-api

Open source database, analytics and API for air quality data build on the FastAPI Framework.
https://api.luftdaten.at
GNU Affero General Public License v3.0
1 stars 0 forks source link

change default endpoint #35

Closed n11ik closed 2 weeks ago

n11ik commented 2 weeks ago

@silvioheinze Ich wollte mir gerade ansehen in welchem Format die CSV daten sind, aber unter der url: "https://dev.luftdaten.at/d/station/history/all" sind keine Daten vorhanden.

Wie soll das Format aussehen? Soll ich dann ein CSV mit den gleichen Spalten, aber mit den Daten aus unserer Datenbank zurückgeben?

silvioheinze commented 2 weeks ago

Ja, genau, das Format, aber die Daten aus der Datenbank.

Das Format muss ich suchen. In der App wird es jedoch geparsed, um es anzuzeigen, vielleicht kann man es dort ableiten? Wurde leider schlecht dokumentiert.

n11ik commented 2 weeks ago

Ah ja habs.

class SCItem {
  SCItem(this.timestamp, this.sid, this.latitude, this.longitude, this.pm1, this.pm25, this.pm10);

  DateTime timestamp;
  int sid;
  double latitude;
  double longitude;
  double? pm1;
  double? pm25;
  double? pm10;
}
n11ik commented 2 weeks ago

@silvioheinze

Ich habe jetzt mal einen select geschrieben der die Daten in dem format zurückliefert. Wenn mehrere sensoren die selbe dimension messen habe ich den durchschnitt genommen.

select
time_measured,
device,
lat,
lon,
avg(case when dimension = 2 then value end) as "PM1",
avg(case when dimension = 3 then value end) as "PM2_5",
avg(case when dimension = 5 then value end) as "PM10"
from stations as s
inner join measurements as m on m.station_id = s.id
inner join locations as l on l.id = m.location_id
inner join values as v on v.measurement_id = m.id
where s.last_active = m.time_measured
group by s.id, device, m.id, m.time_measured, lat, lon
having avg(case when dimension = 2 then value end) is not null
and avg(case when dimension = 3 then value end) is not null
and avg(case when dimension = 5 then value end) is not null;
silvioheinze commented 2 weeks ago

@n11ik Super! Das sollte passen. Kannst du gleich Issues erstellen für die app und den datahub, wo die alten https://dev.luftdaten.at Endpunkte verwendet werden?

n11ik commented 2 weeks ago

@silvioheinze was soll der smooth Parameter bei dem /history endpunkt machen?

async def get_history_station_data(
    station_ids: str = None,
    smooth: str = "100",
    start: str = None
):
silvioheinze commented 2 weeks ago

@n11ik Wird, soweit ich mich erinnern kann, nicht verwendet.