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
TypeScript
/**
* 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