UNPKG

signalk-parquet

Version:

Vessel data Parquet file archive with automated value and geospatial triggers. History API compliant with cloud backups and queries.

58 lines 2.44 kB
/** * Spatial filtering utilities for History API * Supports bbox and radius filters for DuckDB Parquet queries and JavaScript buffer filtering */ import { BoundingBox, DataRecord } from '../types'; /** * Spatial filter configuration */ export interface SpatialFilter { type: 'bbox' | 'radius'; bbox: BoundingBox; centerLat?: number; centerLon?: number; radiusMeters?: number; } /** * Parse bbox query parameter in "west,south,east,north" format * @param bboxStr - Comma-separated bbox string * @returns BoundingBox or null if invalid */ export declare function parseBboxParam(bboxStr: string): BoundingBox | null; /** * Parse radius query parameter in "lon,lat,meters" format (GeoJSON convention) * @param radiusStr - Comma-separated radius string * @returns SpatialFilter with bbox approximation and precise radius info, or null if invalid */ export declare function parseRadiusParam(radiusStr: string): SpatialFilter | null; /** * Parse bbox or radius query parameters into a SpatialFilter * @param bboxStr - Optional bbox parameter * @param radiusStr - Optional radius parameter * @returns SpatialFilter or null if no valid spatial params */ export declare function parseSpatialParams(bboxStr?: string, radiusStr?: string): SpatialFilter | null; /** * Build DuckDB WHERE clause for spatial filtering on position data * Uses value_latitude and value_longitude columns * @param filter - Spatial filter configuration * @param latColumn - Column name for latitude (default: 'value_latitude') * @param lonColumn - Column name for longitude (default: 'value_longitude') * @returns SQL WHERE clause fragment (without leading AND) */ export declare function buildSpatialSqlClause(filter: SpatialFilter, latColumn?: string, lonColumn?: string): string; /** * Filter buffer records spatially using JavaScript * @param records - DataRecord array from SQLite buffer * @param filter - Spatial filter configuration * @returns Filtered records */ export declare function filterBufferRecordsSpatially(records: DataRecord[], filter: SpatialFilter): DataRecord[]; /** * Check if a SignalK path supports spatial filtering * Only paths that contain position data can be spatially filtered * @param signalkPath - The SignalK path to check * @returns true if path contains position data */ export declare function isPositionPath(signalkPath: string): boolean; //# sourceMappingURL=spatial-queries.d.ts.map