Most engines bolt a bounding box onto a text index and call it geospatial. Lucenia indexes real geometry, carries the full spatial predicate set across two coordinate systems, and lets geometry participate in relevance ranking directly.
| Predicate | Semantics |
|---|---|
| INTERSECTS | query and indexed geometry share at least one point — the default for “what is in this area” |
| DISJOINT | no shared points — expensive to fake with bounding boxes, exact here |
| WITHIN | indexed geometry falls entirely inside the query geometry — containment, not overlap |
| CONTAINS | indexed geometry fully encloses the query geometry |
Supported shapes: points, lines, circles, and polygons, via geo_shape
on the map and xy_shape in Cartesian space. A query against a
coastline, a flight corridor, or an irregular administrative boundary returns the
exact answer, not an approximation of one.
xy_point and xy_shape apply the identical predicate set
to Cartesian coordinates. Regions of an image, detections on a raster, and features
in a non-georeferenced frame become first-class query targets — one language for
where something is on the earth and where it is in the frame.
Because spatial predicates execute in the same query as BM25 scoring and k-NN similarity, relevance can be a function of all three at once. There is no re-ranking pass over a candidate set fetched from a separate spatial system.
// detections in a raster region, ranked by text relevance
POST /detections/_search
{
"query": {
"bool": {
"must": [ { "match": { "label": "vehicle staging" } } ],
"filter": [ { "xy_shape": { "region": {
"shape": { "type": "envelope", "coordinates": [[1024,0],[2048,768]] },
"relation": "within" } } } ]
}
}
}
The envelope from the query above, in pixel coordinates — detections outside it never enter scoring.
Analysis primitives run where the index lives, so imagery workflows stay in the engine instead of moving data out to a notebook and back.
Change detection over an area of interest: structures present in July and absent in March, flagged as Δ — queryable like any other field.
| Capability | Function |
|---|---|
| Change detection | difference imagery across acquisitions over an area of interest |
| Temporal coverage | what imagery exists for an area, over what time window |
| Reprojection | transform between coordinate reference systems at query time |
| Image regions | address sub-image geometry directly, paired with xy_shape |
| Similar imagery | retrieve by visual similarity to a reference image |
| Contour · route · layers | derived geometry and network operations on indexed data |
See it running: imagecat is a live catalog of 144 Sentinel-2 scenes on Lucenia — natural-language multimodal search, with the semantic reasoning behind each match exposed.