GribStream permet de définir des expressions pour calculer des colonnes dérivées, des transformations et des filtres booléens dans vos requêtes API.
Les expressions utilisent le langage expr, avec des opérations numériques, logiques et sur valeurs de type string.
Pour voir un exemple de tableau de bord reposant sur une seule requête API : simulation de croissance du maïs
func.Hypot(uwind, vwind)
int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360
func.Hypot(uwind, vwind) > 10
Requête d’exemple utilisant des expressions pour ajouter des colonnes calculées et filtrer des lignes :
curl -X POST 'https://gribstream.com/api/v2/hrrr/timeseries' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2024-09-10T00:00:00Z",
"untilTime": "2024-09-10T10:00:00Z",
"minLeadTime": "1h",
"maxLeadTime": "50h",
"coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
"variables": [
{ "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
{ "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
],
"expressions": [
{ "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
{ "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
]
}'
forecasted_at,forecasted_time,lat,lon,name,uwind,vwind,wind_direction,wind_magnitude
2024-09-10T02:00:00Z,2024-09-10T03:00:00Z,40.7306,-73.9352,New York City,7.1213,1.7680,256,7.3375
2024-09-10T01:00:00Z,2024-09-10T02:00:00Z,40.7306,-73.9352,New York City,8.1815,1.6363,258,8.3435
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,40.7306,-73.9352,New York City,8.0572,2.9389,249,8.5765
2024-09-10T05:00:00Z,2024-09-10T06:00:00Z,40.7306,-73.9352,New York City,6.8368,0.1001,269,6.8375
2024-09-10T04:00:00Z,2024-09-10T05:00:00Z,40.7306,-73.9352,New York City,6.4087,3.0921,244,7.1157
2024-09-10T03:00:00Z,2024-09-10T04:00:00Z,40.7306,-73.9352,New York City,6.4841,2.5385,248,6.9633
2024-09-09T23:00:00Z,2024-09-10T00:00:00Z,40.7306,-73.9352,New York City,6.1795,3.9539,237,7.3362
2024-09-10T08:00:00Z,2024-09-10T09:00:00Z,40.7306,-73.9352,New York City,5.9424,-0.6889,276,5.9822
2024-09-10T06:00:00Z,2024-09-10T07:00:00Z,40.7306,-73.9352,New York City,7.3567,1.5594,258,7.5201
2024-09-10T07:00:00Z,2024-09-10T08:00:00Z,40.7306,-73.9352,New York City,6.5438,0.7486,263,6.5864
Pour la spécification complète du langage, voir : https://expr-lang.org/docs/language-definition
| Fonction | Description |
|---|---|
func.Abs |
Abs(a): returns absolute value |
func.Acos |
Acos(angle): returns arccosine of angle (in radians) |
func.Acosh |
Acosh(value): returns inverse hyperbolic cosine |
func.Asin |
Asin(angle): returns arcsine of angle (in radians) |
func.Asinh |
Asinh(value): returns inverse hyperbolic sine |
func.Atan |
Atan(angle): returns arctangent of angle (in radians) |
func.Atan2 |
Atan2(y, x): returns arctan of y/x, accounting for quadrant |
func.Atanh |
Atanh(value): returns inverse hyperbolic tangent |
func.Cbrt |
Cbrt(value): returns cube root |
func.Ceil |
Ceil(a): returns smallest integer ≥ a |
func.Copysign |
Copysign(magnitude, sign): returns magnitude with sign of second argument |
func.Cos |
Cos(angle): returns cosine of angle (in radians) |
func.Cosh |
Cosh(value): returns hyperbolic cosine |
func.Erf |
Erf(value): returns error function |
func.Erfc |
Erfc(value): returns complementary error function |
func.Exp |
Exp(power): returns e raised to power |
func.Exp2 |
Exp2(power): returns 2 raised to power |
func.Expm1 |
Expm1(power): returns e^power minus 1 |
func.Floor |
Floor(a): returns largest integer ≤ a |
func.Frexp |
Frexp(a): decomposes a into fraction and exponent (a = fraction * 2^exponent) |
func.Gamma |
Gamma(value): returns gamma function |
func.Hypot |
Hypot(a, b): returns sqrt(a² + b²) |
func.Ilogb |
Ilogb(a): returns integer logarithm base 2 of a |
func.Inf |
Inf(sign): returns infinity (positive if sign ≥ 0, negative if sign < 0) |
func.IsNaN |
IsNaN(a): returns true if a is NaN |
func.J0 |
J0(value): returns Bessel function (first kind, order 0) |
func.J1 |
J1(value): returns Bessel function (first kind, order 1) |
func.Jn |
Jn(n, value): returns Bessel function (first kind, order n) |
func.Ldexp |
Ldexp(fraction, exponent): returns fraction * 2^exponent |
func.Lgamma |
Lgamma(value): returns log gamma and sign |
func.Log |
Log(a): returns natural logarithm |
func.Log10 |
Log10(a): returns base-10 logarithm |
func.Log1p |
Log1p(a): returns logarithm of (1+a) |
func.Log2 |
Log2(a): returns base-2 logarithm |
func.Max |
Max(a, b): returns maximum of a and b |
func.Min |
Min(a, b): returns minimum of a and b |
func.Mod |
Mod(a, b): returns remainder of a divided by b |
func.NaN |
NaN(): returns not-a-number value |
func.Nextafter |
Nextafter(a, b): returns the next representable value after a towards b |
func.Pow |
Pow(base, exponent): returns base raised to exponent |
func.Pow10 |
Pow10(exponent): returns 10 raised to exponent |
func.Remainder |
Remainder(a, b): returns IEEE 754-style remainder of a/b |
func.Round |
Round(a): rounds a to the nearest integer |
func.RoundToEven |
RoundToEven(a): rounds a to the nearest even integer |
func.Signbit |
Signbit(a): returns true if a is negative |
func.Sin |
Sin(angle): returns sine of angle (in radians) |
func.Sinh |
Sinh(value): returns hyperbolic sine |
func.Sqrt |
Sqrt(a): returns square root |
func.Tan |
Tan(angle): returns tangent of angle (in radians) |
func.Tanh |
Tanh(value): returns hyperbolic tangent |
func.Trunc |
Trunc(a): returns integer part of a (truncates fractional part) |
func.Y0 |
Y0(value): returns Bessel function (second kind, order 0) |
func.Y1 |
Y1(value): returns Bessel function (second kind, order 1) |
func.Yn |
Yn(n, value): returns Bessel function (second kind, order n) |