Skip to content

As a data user, I want to perform geospatial searches with configurable spatial fieldsΒ #151

@jordanpadams

Description

@jordanpadams

Checked for duplicates

Yes - I've already checked

πŸ§‘β€πŸ”¬ User Persona(s)

Data User, Data Engineer, Planetary Scientist, GIS Analyst

πŸ’ͺ Motivation

...so that I can find products for specific geographic regions of interest across different missions without needing to know each mission's spatial metadata field conventions.

πŸ“– Additional Details

Current Behavior:

  • within_bbox() and within_range() exist only in OrexQueryBuilder (hardcoded to orex:Spatial fields)
  • Base QueryBuilder raises NotImplementedError for spatial methods
  • Each mission has different spatial metadata field conventions

Proposed Solution:
Implement configurable geospatial search in base QueryBuilder:

# Bounding box search with configurable field prefix
products.within_bbox(
    lat_min=-10, lat_max=10, 
    lon_min=-20, lon_max=20,
    spatial_field_prefix="orex:Spatial"
)

# Radius search from a point
products.within_radius(
    lat=0, lon=0, radius_km=100,
    spatial_field_prefix="orex:Spatial"
)

# Range from target
products.within_range(
    range_in_km=5000,
    range_field="orex:Spatial.orex:target_range"
)

Implementation Approach:

  1. Move from NotImplementedError to configurable implementation
  2. Accept optional spatial_field_prefix or individual field parameters
  3. Add within_radius() method for point+radius queries
  4. Keep OrexQueryBuilder mission-specific defaults

Related:


For Internal Dev Team To Complete

Acceptance Criteria

Given a user wants to search by bounding box or spatial criteria
When I perform products.within_bbox(lat_min, lat_max, lon_min, lon_max, spatial_field_prefix="custom:Spatial")
Then I expect products filtered by the specified spatial bounds using the configured field names

βš™οΈ Engineering Details

To be filled by Engineering Node Team

πŸŽ‰ I&T

To be filled by Engineering Node Team

Metadata

Metadata

Assignees

Type

No type

Projects

Status

ToDo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions