GribStream

Expresiones calculadas

GribStream permite definir expresiones para calcular columnas derivadas, transformaciones y filtros booleanos en tus consultas a la API.

Las expresiones usan el lenguaje expr, con soporte para operaciones numéricas, lógicas y sobre strings.

Para ver un dashboard de demo con una sola solicitud API: simulación de crecimiento de maíz

Funcionalidades

Expresiones de ejemplo

Solicitud de ejemplo

Solicitud de ejemplo que usa expresiones para agregar columnas calculadas y filtrar filas:

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" }
    ]
}'

Respuesta de ejemplo

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

Referencia del lenguaje de expresiones

Para la especificación completa del lenguaje, consulta: https://expr-lang.org/docs/language-definition

Funciones disponibles

Función Descripción
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)