Los siguientes operadores definidos en SQL componen raster_value con las funciones estándar de restricción temporal y predicado de MobilityDB. Aceptan un argumento opcional band (por defecto 1) e invocan raster_value exactamente una vez por invocación.
Devolver los instantes de una trayectoria donde el valor ráster muestreado cae dentro de un rango de flotante
atRasterValue(tgeompoint,raster,floatspan,band integer DEFAULT 1) → tgeompoint
Evalúa raster_value en cada instante de traj y devuelve la sub-trayectoria restringida a los tiempos en que el valor del píxel está dentro de vspan. Devuelve NULL cuando ningún instante satisface la condición.
WITH rast AS (
SELECT ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0.0, 3.0, 1.0, -1.0, 0.0, 0.0, 4326),
'32BF'::text, 0.0::float8, NULL::float8),
1, 1, 1,
ARRAY[[10.0::float4, 20.0::float4, 30.0::float4],
[40.0::float4, 50.0::float4, 60.0::float4],
[70.0::float4, 80.0::float4, 90.0::float4]]) AS r
)
SELECT asText(atRasterValue(
tgeompoint 'SRID=4326;[POINT(0.5 2.5)@2000-01-01,
POINT(1.5 1.5)@2000-01-02,
POINT(0.5 0.5)@2000-01-03]',
r, floatspan '[40, 90]'))
FROM rast;
Devolver los instantes de una trayectoria donde el valor ráster muestreado cae fuera de un rango de flotante
minusRasterValue(tgeompoint,raster,floatspan,band integer DEFAULT 1) → tgeompoint
El complemento de atRasterValue: devuelve la sub-trayectoria restringida a los tiempos en que el valor del píxel está fuera de vspan. Devuelve NULL cuando todos los instantes satisfacen la condición.
-- Keep only the instant whose raster value (10) is below 40 SELECT asText(minusRasterValue(traj, elev_raster, floatspan '[40, 9999]')) FROM trips, elevation_raster;
Devolver verdadero si la trayectoria alguna vez muestrea un valor de píxel ráster dentro de un rango de flotante
eRasterValue(raster,tgeompoint,floatspan,band integer DEFAULT 1) → boolean
Devuelve true cuando al menos un instante dentro de la extensión de traj muestrea un valor de píxel dentro de vspan, false en caso contrario. Devuelve NULL únicamente cuando la entrada es NULL.
-- Trips that ever crossed terrain above 200 m SELECT tripid FROM trips, elevation_raster WHERE eRasterValue(elev_raster, trip4326, floatspan '[200, 9999]');
Devolver verdadero si cada instante de la trayectoria dentro de la extensión del ráster muestrea un valor de píxel dentro de un rango de flotante
aRasterValue(raster,tgeompoint,floatspan,band integer DEFAULT 1) → boolean
Devuelve true cuando cada instante dentro de la extensión de traj muestrea un valor de píxel dentro de vspan, false cuando al menos uno no lo hace. Devuelve NULL únicamente cuando la entrada es NULL.
-- Trips that stayed entirely below 100 m elevation SELECT tripid FROM trips, elevation_raster WHERE aRasterValue(elev_raster, trip4326, floatspan '[0, 100]');