Class GeoParquetFilterToSQL
- All Implemented Interfaces:
ExpressionVisitor
,FilterVisitor
This class extends DuckDBFilterToSQL with GeoParquet-specific optimizations for encoding OGC Filter objects into SQL queries. It handles translation of spatial filters, particularly optimizing bounding box (BBOX) queries to work efficiently with GeoParquet's metadata and structure.
Key features include:
- Optimized BBOX filter translation that uses GeoParquet's bounding box information
- Support for the standard set of spatial operations adapted to GeoParquet's spatial model
The implementation specifically targets the column structure and query patterns that perform well with GeoParquet datasets, considering both the GeoParquet specification and DuckDB's spatial capabilities.
-
Nested Class Summary
Nested classes/interfaces inherited from class FilterToSQL
FilterToSQL.FieldEncoder
-
Field Summary
Fields inherited from class FilterToSQL
capabilities, currentDimension, currentGeometry, currentSRID, databaseSchema, encodingFunction, escapeBackslash, featureType, fieldEncoder, filterFactory, inEncodingEnabled, inline, IO_ERROR, LOGGER, out, primaryKey, sqlNameEscape
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiontoString()
Returns a string representation of this filter encoder.protected Object
visitBBOX
(BBOX filter, Expression leftExp, Expression rightExpt, Object extraData) Converts a bounding box filter to optimized SQL using bbox components.Methods inherited from class DuckDBFilterToSQL
createFilterCapabilities, visitBinarySpatialOperator, visitBinarySpatialOperator, visitDistanceBufferOperator, visitLiteralBoundingBox, visitLiteralGeometry, visitLiteralGeometry, write
Methods inherited from class FilterToSQL
cast, encode, encode, encodeBinaryComparisonOperator, encodeToString, encodeToString, escapeLiteral, escapeName, evaluateLiteral, getCapabilities, getDatabaseSchema, getDistanceInNativeUnits, getExpressionType, getFeatureType, getFunctionName, getFunctionReturnType, getParameter, getPrimaryKey, getSqlNameEscape, isBinaryExpression, isEscapeBackslash, isInEncodingEnabled, processLikeLeftOperand, setCapabilities, setDatabaseSchema, setEscapeBackslash, setFeatureType, setFieldEncoder, setInEncodingEnabled, setInline, setPrimaryKey, setSqlNameEscape, setWriter, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitBinaryComparisonOperator, visitBinarySpatialOperator, visitBinaryTemporalOperator, visitBinaryTemporalOperator, visitBinaryTemporalOperator, visitInFunction, visitLiteralTimePeriod, visitNullFilter, writeBinaryExpression, writeBinaryExpressionMember, writeLiteral
-
Constructor Details
-
GeoParquetFilterToSQL
public GeoParquetFilterToSQL()
-
-
Method Details
-
toString
Returns a string representation of this filter encoder. -
visitBBOX
Converts a bounding box filter to optimized SQL using bbox components.This method optimizes bounding box queries by using the 'bbox' column components common in GeoParquet datasets. Instead of using expensive spatial functions, it uses simple comparisons on the xmin, xmax, ymin, ymax components, which can be much more efficient.
The generated SQL follows the pattern:
bbox.xmin <= maxX and bbox.xmax >= minX and bbox.ymin <= maxY and bbox.ymax >= minY
which implements a proper spatial intersection test using only simple comparisons.- Overrides:
visitBBOX
in classDuckDBFilterToSQL
- Parameters:
filter
- The BBOX filter to encodeleftExp
- The left expression (typically the geometry column)rightExpt
- The right expression (typically the literal bounding box)extraData
- Extra data that might be passed through- Returns:
- The extraData parameter, potentially modified
-