A source is a public service the server fetches on a schedule and feeds into a model —
a weather office's WFS, for instance. Each run asks only for the observations it has not seen yet, so
nothing lands twice; Backfill reaches further into the past than the first run did.
Add a source
Point it at a WFS 2.0 endpoint, pick a stored query or a feature type, fill in where, preview
what it gives, tap the columns that should be features — as numbers, or as categories so a place or a
station is an identity the anomaly is judged against — and say which model to feed and how often.
A weather service's ::simple stored queries answer a value per row; a GeoServer's feature
types answer a feature per row with its properties, and each fetch is a snapshot unless a property is a date.
1Service
The URL is requested as given, query string and all, with the headers below — an API key, a token,
a Digitraffic-User. Header values are stored on the server and shown masked afterwards. The answer's
JSON is read at path: an array gives one record per element, an object one record; nested objects are
flattened (current_temperature_2m), arrays inside a record are left out.
The URL is requested as given, with the headers below, and the answer is read as a
CSV FILE — the header row names the columns, one row is one record. The same reader the import route and
analyze_data use, so a file that imports cleanly fetches cleanly: the delimiter is sniffed, empty
cells are missing values, and a column of ISO-8601 stamps is the clock (pick it below, or let it be detected).
Each run keeps only the rows newer than the newest one already stored, so a rolling feed —
…/summary/2.5_day.csv — can be fetched as often as you like.
Headers
Request body (sent as JSON unless a Content-Type header says otherwise)
2Parameters for
3Columns — tap the ones that become features
Preview fetches the last hours of the query and lists every column it gives. Nothing needs typing:
tap a row to take it or leave it.