eomatch.finder.sat2insitu.Sat2InSituMUFinder

eomatch.finder.sat2insitu.Sat2InSituMUFinder#

class eomatch.finder.sat2insitu.Sat2InSituMUFinder(*args: Any, **kwargs: Any)[source]#

Finder for collocated pairs of satellite and in-situ (ground-based) products.

Wraps the full satellite-to-in-situ matchup discovery pipeline:

  1. Query scrappi for the satellite collection over the in-situ site’s own registered ROI, for the whole configured time window.

  2. Cluster the returned satellite products into events by time gap (see parse_matchup_events()) – there is no orbit propagation step here, unlike Sat2SatMUFinder, since the in-situ site’s fixed location, not a crossover, defines where to search.

  3. For each event, query scrappi per platform (satellite + in-situ site), check geometric overlap, and build Matchup objects.

  4. Return the full list of MatchupEvent objects, each carrying its MatchupSet.

Example usage:

from eomatch import EOMatchContext
from eomatch.finder.sat2insitu import Sat2InSituMUFinder

ctx = EOMatchContext("my_config.yaml")
finder = Sat2InSituMUFinder(context=ctx)
events = finder.finder()
__init__(context: dict | str | None = None) → None#

Initialise the finder.

Parameters:

context – EOMatchContext (or a dict/path accepted by the parent BaseProcessor) supplying runtime configuration. Defaults to EOMatchContext().

Methods

__init__([context])

Initialise the finder.

all_products_overlap(products)

Return True if every pair of products in products has a non-empty geometric intersection.

all_products_within_time_diff(products, ...)

Return True if every pair of products has time ranges no more than threshold seconds apart.

filter_overlapping_products(productitem, ...)

Return the subset of productitemset whose geometry overlaps productitem.

finder()

Run the full matchup discovery pipeline.

has_products(product_array)

Return True if product_array is non-None and non-empty.

identify_mu_events()

Identify candidate matchup events between the satellite and in-situ site.

parse_matchup_events(products)

Split products into clusters by time gap, returning cluster boundary indices.

plot_matchup_event(path, matchupset)

Plot the geometries of every matchup in matchupset on a map and save to path.

run_scrappi(query[, context])

Execute a single scrappi query and return the matching products.

to_matchup_set(mu_events)

Query scrappi for each event and build per-event MatchupSet objects.