Class GeoParquetFilterToSQL
- Object
-
- FilterToSQL
-
- DuckDBFilterToSQL
-
- GeoParquetFilterToSQL
-
- All Implemented Interfaces:
ExpressionVisitor
,FilterVisitor
public class GeoParquetFilterToSQL extends DuckDBFilterToSQL
Filter SQL encoder for GeoParquet queries.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 Constructor Description GeoParquetFilterToSQL()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
toString()
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, 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
-
-
-
-
Method Detail
-
toString
public String toString()
Returns a string representation of this filter encoder.
-
visitBBOX
protected Object visitBBOX(BBOX filter, Expression leftExp, Expression rightExpt, Object extraData)
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
-
-