Catalog: raster vs vector datasets¶
Load the Earthdata catalog and split its datasets by output_kind. Each row already declares whether it resolves to a raster or a vector request, so the partition is a simple comprehension over cat.datasets.
from earthlens.earthdata import Catalog
cat = Catalog()
raster = [k for k, d in cat.datasets.items() if d.output_kind == 'raster']
vector = [k for k, d in cat.datasets.items() if d.output_kind == 'vector']
The raster datasets are the gridded products; the vector ones are the point / footprint products (ICESat-2, GEDI, OCO-2). Print the counts to see the split:
print('raster datasets:', len(raster))
print('vector datasets:', sorted(vector))
What the output kind controls¶
When you build EarthLens(data_source='earthdata', ...), the resolved row's output_kind becomes the instance's OUTPUT_KIND. The facade reads it at download() time to gate aggregate=:
- a raster instance forwards
aggregate=AggregationConfig(...)into the backend, which reduces a stack of single-timestep granules per window; - a vector / tabular instance rejects
aggregate=withNotImplementedError.
A single request must not mix output kinds — EarthData rejects that at construction, since one instance carries exactly one kind.
DAAC registry¶
Each CMR provider code maps to a DAAC, its cloud region, and the S3 credentials endpoint used for in-region streaming. Look up the first few provider codes to see the mapping:
for code in sorted(cat.daacs)[:5]:
daac = cat.get_daac(code)
print(f'{code:12s} -> {daac.daac:10s} ({daac.cloud_region})')