Hoe query ik meetresultaten binnen een "geo boundingbox" en tijdsbestek van de RIVM SamenMeten/SensorThings API

Ik probeer de meetgegevens van de RIVM SamenMeten API op te vragen binnen een bepaalde “boundingbox” van een kaart (ofwel rechthoekig POLYGON) en binnen een bepaald tijdsbestek.
Maar in mijn pogingen tot dusver krijg ik of onvolledige data, maar vaker nog alleen maar foutmeldingen of verbroken verbindingen.
Heeft iemand hier ervaring mee? (Met deze of andere SensorThings API’s)
Mogelijk dat ik iets van de syntax niet helemaal goed toepas of het beter op een andere manier kan aanvliegen? (alle hulp is welkom!).

De API van het RIVM is een OGC SensorThings API v1.0 implentatie (waarschijnlijk(?) een GOST server, aangezien ze zelf naar deze uitleg linken https://gost1.docs.apiary.io/ )

Wat ik tot nu toe geprobeerd heb:
De meest voor de handliggende aanpak leek me om dit via de Observerations op te vragen, de geo-locatie zit in het FeatureOfInterest object, dus deze voeg ik d.m.v. $expand toe.
vervolgens kan ik met st_within() en een POLYGON((x y, x y, x y, x y, x y)) de rechthoek die ik zoek uitfilteren.

Poging: tijd + locaties filter (mislukt):
Alle observaties tussen 1 december 2025 10:00 en de dag 2 december 2025 10:00 en binnen het genoemde POLYGON.
Deze aanpak geeft mij een absolute server fout. (connection closed, no data)

GET http://api-samenmeten.rivm.nl/v1.0/Observations?$expand=FeatureOfInterest&$filter=phenomenonTime gt 2025-12-01T10:00:00Z and phenomenonTime lt 2025-12-02T10:00:00Z and st_within(FeatureOfInterest/feature, geography’SRID=4326;POLYGON((5.3480 52.144559, 5.3480 52.191825, 5.4380 52.191825, 5.4380 52.144559, 5.3480 52.144559))')

Poging: alleen binnen de genoemde datum en tijd filter (succesvol):
Dit lijkt wel te werkken maar we willen dus deze selectie nog een heleboel verkleinen door te filteren op geo-locatie.

GET http://api-samenmeten.rivm.nl/v1.0/Observations?$filter=phenomenonTime gt 2025-12-01T10:00:00Z and phenomenonTime lt 2025-12-02T10:00:00Z

Poging: locaties filter (onvolledig)
“Alle” observaties binnen dit POLYGON, ik verwacht meer dan 200 items, maar krijg er maar een handjevol.

GET http://api-samenmeten.rivm.nl/v1.0/Observations?$expand=FeatureOfInterest&$filter=st_within(FeatureOfInterest/feature, geography’SRID=4326;POLYGON((5.3480 52.144559, 5.3480 52.191825, 5.4380 52.191825, 5.4380 52.144559, 5.3480 52.144559))')

Bij verschillende andere pogingen liep ik vooral ook op timeouts of verbroken connecties, dus wellicht doe ik iets verkeerd of gaat er op de server iets niet goed.

Een snelle blik op die uitleg leert dat de FeatureOfInterest parameter een ID moet zijn, en dus geen geometrie kan bevatten. Voor zover ik kan zien, kun je de FeaturesOfInterest opvragen via het /v1.0/FeaturesOfInterest endpoint, en bij die vraag kun je een GeoJson object meegeven om binnen een bepaald gebied te zoeken. Daaruit krijg je dan waarschijnlijk een lijstje ID’s terug, die je dan 1 voor 1 kunt vragen om hun Observations.

Geen idee of dat zo is, en geen ervaring met deze specifieke API’s (wel met vergelijkbare), maar een snelle blik op https://gost1.docs.apiary.io/ lijkt er op te wijzen dat dat de werkwijze is.

leuke link!
inderdaad zoals @sbjager al aangeeft moet je de gegevens opvragen met de sensor id. bijv. https://api-samenmeten.rivm.nl/v1.0/Observations(650160088)
de id’s kun je via locations opvragen. https://api-samenmeten.rivm.nl/v1.0/Locations

Heb geen direct antwoord. Alweer plm 7 jaar geleden voor laatst met STA en GOST gewerkt. Destijds een “Cookbook” [1] samengesteld voor veelgebruikte queries. Misschien wat inspiratie daaruit.

Het is handig om het STA entiteiten model in het hoofd te hebben. De queries zijn een soort linked-data/navigatie benadering over dat model. Ook om rekening mee te houden: volgens mij is er standaard “Paging” dus krijg je vaak niet “alles” meteen terug. Je zou een $filter op tijd en geo, bijv st_within() moeten kunnen doen, zou de documentatie of de GOST ontwikkelaars (destijds Geodan) moeten kunnen aangeven.

[1] 14. Cookbook — Smart Emission Platform 1.0.0 documentation
(De betreffende services zijn niet meer actief, draaiden tot plm 2021 bij PDOK)

Inmiddels heb ik mijn queries ook kunnen testen op een andere SensorThings server implementatie (FROST) waar dit wel werkte. Dus mogelijk is zijn de fouten waar ik tegen aanloop heel specifiek voor de RIVM SamenMeten API.

Ik heb de vraag ook op het forum van het RIVM geplaatst, zie Hoe query ik meetresultaten binnen een "geo boundingbox" en tijdsbestek van de SamenMeten/SensorThings API - Luchtkwaliteit - citizen science data - Samen Meten forum

Hoi @wie-niet ik heb het even opgezocht. Je kunt filteren op basis van locatie.
Bijgaand een voorbeeld:

https://api-samenmeten.rivm.nl/v1.0/Locations?$filter=st_within(location, geography'SRID=4326;POLYGON((6.09 52.22, 6.21 52.22, 6.21 52.29, 6.09 52.29, 6.09 52.22))')