Skip to content

Catalog & layer registry

MOON is the discovery catalog — enumerate probes, instruments, and products, and reach the dataset classes. LAYERS maps each layer id to its provenance and backing source (LayerSpec.source is "stac", "ode", or "mosaic"). A probe may also carry granules: experimental, non-map-projected dataset classes (see Raw granules) that sit outside the layer/product contract entirely and are not part of LAYERS.

astrofetch.moon.layers.MOON module-attribute

MOON = Body(
    name="Moon",
    crs=CRS,
    probes={
        "kaguya": Probe(
            name=KaguyaTC.probe,
            instruments={
                "tc_dtm": _instrument(KaguyaTC),
                "tc_imagery": _instrument(KaguyaTCImagery),
            },
        ),
        "lro": Probe(
            name=LROCNACDTM.probe,
            instruments={
                "nac_dtm": _instrument(LROCNACDTM),
                "wac_mosaic": _instrument(LROCWACMosaic),
                "lola": _instrument(LOLA),
                "sldem2015": _instrument(SLDEM2015),
                "minirf": _instrument(MiniRF),
                "diviner": _instrument(DivinerGDR),
                "wac_gld100": _instrument(WACGLD100),
                "wac_tio2": _instrument(WACTiO2),
                "wac_global_tiled": _instrument(
                    LROCWACGlobal
                ),
                "wac_color": _instrument(LROCWACColor),
                "nac_roi": _instrument(LROCNACROI),
            },
            granules={
                "nac_raw": LROCNACRaw,
                "wac_raw": LROCWACRaw,
            },
        ),
        "chandrayaan1": Probe(
            name=M3.probe,
            instruments={},
            granules={"m3": M3},
        ),
        "kplo": Probe(
            name=ShadowCam.probe,
            instruments={
                "shadowcam": _instrument(ShadowCam)
            },
        ),
        "clementine": Probe(
            name=ClementineUVVIS.probe,
            instruments={
                "uvvis": _instrument(ClementineUVVIS),
                "nir": _instrument(ClementineNIR),
            },
        ),
    },
)

Discovery catalog for the Moon: enumerate probes, instruments, products, and (where a probe has any) experimental raw-granule datasets.

astrofetch.moon.layers.LAYERS module-attribute

LAYERS: dict[str, LayerSpec] = {
    (spec.name): spec
    for spec in (
        _spec(KaguyaTC, "dtm"),
        _spec(KaguyaTC, "ortho"),
        _spec(KaguyaTCImagery, "image"),
        _spec(LROCNACDTM, "dtm"),
        _spec(LROCNACDTM, "ortho"),
        _spec(LROCNACDTM, "confidence"),
        _spec(LROCWACMosaic, "morphology"),
        _spec(LOLA, "dem"),
        _spec(SLDEM2015, "dem"),
        _spec(MiniRF, "cpr"),
        _spec(MiniRF, "sc"),
        _spec(MiniRF, "oc"),
        _spec(DivinerGDR, "rock_abundance"),
        _spec(DivinerGDR, "regolith_temp"),
        _spec(WACGLD100, "dtm"),
        _spec(WACTiO2, "tio2"),
        _spec(LROCWACGlobal, "morphology"),
        _spec(LROCWACColor, "refl_321nm"),
        _spec(LROCWACColor, "refl_360nm"),
        _spec(LROCWACColor, "refl_415nm"),
        _spec(LROCWACColor, "refl_566nm"),
        _spec(LROCWACColor, "refl_604nm"),
        _spec(LROCWACColor, "refl_643nm"),
        _spec(LROCWACColor, "refl_689nm"),
        _spec(LROCNACROI, "mosaic_5m"),
        _spec(LROCNACROI, "mosaic_20m"),
        _spec(ShadowCam, "mosaic"),
        _spec(ShadowCam, "dtm"),
        _spec(ShadowCam, "confidence"),
        _spec(ClementineUVVIS, "band_415nm"),
        _spec(ClementineUVVIS, "band_750nm"),
        _spec(ClementineUVVIS, "band_900nm"),
        _spec(ClementineUVVIS, "band_950nm"),
        _spec(ClementineUVVIS, "band_1000nm"),
        _spec(ClementineNIR, "band_1100nm"),
        _spec(ClementineNIR, "band_1250nm"),
        _spec(ClementineNIR, "band_1500nm"),
        _spec(ClementineNIR, "band_2000nm"),
        _spec(ClementineNIR, "band_2600nm"),
        _spec(ClementineNIR, "band_2780nm"),
    )
}

astrofetch.moon.layers.LayerSpec dataclass

Provenance and read config for one user-facing layer.

name instance-attribute

name: str

Layer identifier used in sample dicts, e.g. "kaguya_tc_dtm".

probe instance-attribute

probe: str

Probe (spacecraft) that acquired the data.

instrument instance-attribute

instrument: str

Instrument on the probe.

product instance-attribute

product: str

Product name within the instrument, e.g. "dtm".

source instance-attribute

source: str

Where this layer is read from: "stac", "ode", or "mosaic".

collection class-attribute instance-attribute

collection: str = ''

USGS ARD STAC collection id (source == "stac").

asset class-attribute instance-attribute

asset: str = ''

STAC asset key read from each item (source == "stac").

ihid class-attribute instance-attribute

ihid: str = ''

PDS ODE instrument host id, e.g. "LRO" (source == "ode").

iid class-attribute instance-attribute

iid: str = ''

PDS ODE instrument id, e.g. "LROC" (source == "ode").

pt class-attribute instance-attribute

pt: str = ''

PDS ODE product type, e.g. "SDNDTM" (source == "ode").

pattern class-attribute instance-attribute

pattern: str = ''

Filename pattern selecting the file within an ODE product (source == "ode").

file_type class-attribute instance-attribute

file_type: str = ''

Required ODE file role for pattern to match against (source == "ode"); almost always "Product".

product_id class-attribute instance-attribute

product_id: str = ''

ODE productid wildcard filter narrowing the search server-side (source == "ode"); empty when the product type needs no narrowing.

href class-attribute instance-attribute

href: str = ''

Fixed archive URL (source == "mosaic").

astrofetch.moon.layers.Body dataclass

Catalog root: one planetary body and the probes that observed it.

astrofetch.moon.layers.Probe dataclass

Catalog node: one probe, the instrument datasets it carries, and any experimental raw-granule datasets (see :mod:astrofetch.moon.granules).

astrofetch.moon.layers.Instrument dataclass

Catalog node: one instrument dataset, its products, and its class.

dataset instance-attribute

dataset: type[_ProductDataset]

The dataset class (not an instance); construct it on demand.