Filter reference

Observation filters are CQL2 JSON mappings or JSON strings. The observation evaluator supports the following translations; this is not a complete CQL2 implementation.

Operator / property Accepted values AERONET parameter
and Supported expressions Joins query parameters
eq / site Name in the hosted station catalogue site
eq / data_type AOD10, AOD15, AOD20, SDA10, SDA15, SDA20, TOT10, TOT15, TOT20 Product name set to 1
eq / format csv, html if_no_html=1 or 0
eq / data_format all-points, daily-average AVG=10 or 20
t_after / time Timestamp year, month, day, hour
t_before / time Timestamp year2, month2, day2, hour2
s_intersects / geometry GeoJSON geometry Bounding box: lon1, lat1, lon2, lat2

Use UTC timestamps. Minutes and seconds are discarded when producing API parameters. Observation spatial filtering uses the geometry's bounding box, rather than its exact outline. See query processing.

format=html is available for URL generation; aeronet_search expects CSV. Invalid values for the enumerated properties raise ValueError. Repeated constraints on the same parameter do not implement arbitrary Boolean logic; use one product, aggregation, and time range per request.

Station filters instead use the pygeofilter DuckDB backend against GeoParquet columns, such as geometry, aeronet:site_name, and aeronet:land_use_type. The observation property site is not the station column name. See the station-query example.