easy-eo 0.3.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. {easy_eo-0.3.0 → easy_eo-0.4.0}/.gitignore +6 -0
  2. {easy_eo-0.3.0 → easy_eo-0.4.0}/PKG-INFO +37 -9
  3. {easy_eo-0.3.0 → easy_eo-0.4.0}/README.md +34 -7
  4. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/__init__.py +4 -2
  5. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/core.pyi +5 -0
  6. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/datasets/_registry.py +42 -3
  7. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/datasets/_samples.py +6 -0
  8. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/io/__init__.py +6 -2
  9. easy_eo-0.4.0/eeo/io/_archive.py +392 -0
  10. easy_eo-0.4.0/eeo/io/_bands.py +417 -0
  11. easy_eo-0.4.0/eeo/io/_landsat.py +439 -0
  12. easy_eo-0.4.0/eeo/io/_sentinel2.py +458 -0
  13. easy_eo-0.4.0/eeo/io/_stacking.py +242 -0
  14. easy_eo-0.4.0/eeo/io/products.py +413 -0
  15. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/io/stac.py +7 -140
  16. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/io/xarray.py +3 -1
  17. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/preprocessing/resample.py +13 -1
  18. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/viz/plot.py +68 -11
  19. {easy_eo-0.3.0 → easy_eo-0.4.0}/pyproject.toml +8 -1
  20. {easy_eo-0.3.0 → easy_eo-0.4.0}/LICENSE +0 -0
  21. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/_optional.py +0 -0
  22. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/_show_versions.py +0 -0
  23. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/analysis/__init__.py +0 -0
  24. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/analysis/indices.py +0 -0
  25. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/analysis/stats.py +0 -0
  26. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/common.py +0 -0
  27. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/__init__.py +0 -0
  28. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/adapters/__init__.py +0 -0
  29. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/adapters/base.py +0 -0
  30. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/adapters/numpy.py +0 -0
  31. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/adapters/rasterio.py +0 -0
  32. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/core.py +0 -0
  33. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/decorators.py +0 -0
  34. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/exceptions.py +0 -0
  35. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/loader.py +0 -0
  36. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/plugins.py +0 -0
  37. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/core/types.py +0 -0
  38. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/datasets/__init__.py +0 -0
  39. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/datasets/_cache.py +0 -0
  40. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/ops/__init__.py +0 -0
  41. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/ops/algebra.py +0 -0
  42. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/ops/merge.py +0 -0
  43. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/preprocessing/__init__.py +0 -0
  44. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/preprocessing/clip.py +0 -0
  45. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/preprocessing/normalize.py +0 -0
  46. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/preprocessing/reproject.py +0 -0
  47. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/py.typed +0 -0
  48. {easy_eo-0.3.0 → easy_eo-0.4.0}/eeo/viz/__init__.py +0 -0
@@ -21,6 +21,12 @@ others/
21
21
  # Docs
22
22
  docs/build/
23
23
 
24
+ # Generated by the dependency-audit, release, and linkcheck workflows
25
+ # (and by running any of them locally)
26
+ requirements-audit.txt
27
+ .smoke-venv/
28
+ .linkcheck/
29
+
24
30
  # Tests
25
31
  .pytest_cache/
26
32
  .ruff_cache/
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: easy-eo
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: A lightweight Earth Observation utilities library for chainable raster operations
5
5
  Project-URL: Homepage, https://github.com/tommy-burns/easy-eo
6
6
  Project-URL: Repository, https://github.com/tommy-burns/easy-eo
@@ -40,6 +40,7 @@ Classifier: Programming Language :: Python :: 3.12
40
40
  Classifier: Programming Language :: Python :: 3.13
41
41
  Classifier: Programming Language :: Python :: 3.14
42
42
  Classifier: Topic :: Scientific/Engineering :: GIS
43
+ Classifier: Typing :: Typed
43
44
  Requires-Python: >=3.10
44
45
  Requires-Dist: geopandas<2,>=1.1
45
46
  Requires-Dist: matplotlib>=3.8
@@ -65,13 +66,40 @@ Description-Content-Type: text/markdown
65
66
  <img src="https://raw.githubusercontent.com/Tommy-Burns/easy-eo/main/.github/assets/eeo_logo.png" alt="Easy-EO logo" width="200">
66
67
  </p>
67
68
 
68
- [![CI](https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml/badge.svg)](https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml)
69
- [![codecov](https://codecov.io/gh/Tommy-Burns/easy-eo/branch/main/graph/badge.svg)](https://codecov.io/gh/Tommy-Burns/easy-eo)
70
- [![PyPI](https://img.shields.io/pypi/v/easy-eo.svg)](https://pypi.org/project/easy-eo/)
71
- [![conda-forge](https://img.shields.io/conda/vn/conda-forge/easy-eo.svg)](https://anaconda.org/conda-forge/easy-eo)
72
- [![Python versions](https://img.shields.io/pypi/pyversions/easy-eo.svg)](https://pypi.org/project/easy-eo/)
73
- [![Documentation Status](https://readthedocs.org/projects/easy-eo/badge/?version=latest)](https://easy-eo.readthedocs.io/en/latest/?badge=latest)
74
- [![License: MIT](https://img.shields.io/github/license/Tommy-Burns/easy-eo)](https://github.com/Tommy-Burns/easy-eo/blob/main/LICENSE)
69
+ | | |
70
+ | :-- | :-- |
71
+ | **Install** | [![PyPI][pypi-badge]][pypi] [![conda-forge][conda-badge]][conda] [![Python versions][pyversions-badge]][pypi] [![Platforms][platforms-badge]][ci] |
72
+ | **Build & quality** | [![CI][ci-badge]][ci] [![Latest deps][latest-deps-badge]][latest-deps] [![Coverage][codecov-badge]][codecov] [![Ruff][ruff-badge]][ruff] [![Checked with mypy][mypy-badge]][mypy] |
73
+ | **Security** | [![CodeQL][codeql-badge]][codeql] [![OpenSSF Scorecard][scorecard-badge]][scorecard] |
74
+ | **Project** | [![Documentation][docs-badge]][docs] [![License: MIT][license-badge]][license] [![DOI][doi-badge]][doi] |
75
+
76
+ [pypi]: https://pypi.org/project/easy-eo/
77
+ [pypi-badge]: https://img.shields.io/pypi/v/easy-eo.svg
78
+ [conda]: https://anaconda.org/conda-forge/easy-eo
79
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/easy-eo.svg
80
+ [pyversions-badge]: https://img.shields.io/pypi/pyversions/easy-eo.svg
81
+ [platforms-badge]: https://img.shields.io/badge/platform-linux%20%7C%20macOS%20%7C%20windows-lightgrey.svg
82
+ [ci]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml
83
+ [ci-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml/badge.svg
84
+ [latest-deps]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/latest-deps.yml
85
+ [latest-deps-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/latest-deps.yml/badge.svg
86
+ [codecov]: https://codecov.io/gh/Tommy-Burns/easy-eo
87
+ [codecov-badge]: https://codecov.io/gh/Tommy-Burns/easy-eo/branch/main/graph/badge.svg
88
+ [ruff]: https://github.com/astral-sh/ruff
89
+ [ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
90
+ [mypy]: https://mypy-lang.org/
91
+ [mypy-badge]: https://img.shields.io/badge/mypy-checked-2a6db2.svg
92
+ [codeql]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/codeql.yml
93
+ [codeql-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/codeql.yml/badge.svg
94
+ [scorecard]: https://scorecard.dev/viewer/?uri=github.com/Tommy-Burns/easy-eo
95
+ [scorecard-badge]: https://api.scorecard.dev/projects/github.com/Tommy-Burns/easy-eo/badge
96
+ [docs]: https://easy-eo.readthedocs.io/en/latest/?badge=latest
97
+ [docs-badge]: https://readthedocs.org/projects/easy-eo/badge/?version=latest
98
+ [license]: https://github.com/Tommy-Burns/easy-eo/blob/main/LICENSE
99
+ [license-badge]: https://img.shields.io/github/license/Tommy-Burns/easy-eo
100
+ [doi]: https://doi.org/10.5281/zenodo.21967655
101
+ [doi-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.21967655.svg
102
+
75
103
 
76
104
  Easy-EO is a lightweight, extensible Python library for raster-based Earth
77
105
  Observation (EO) analysis: chainable raster processing, band algebra, spectral indices,
@@ -4,13 +4,40 @@
4
4
  <img src="https://raw.githubusercontent.com/Tommy-Burns/easy-eo/main/.github/assets/eeo_logo.png" alt="Easy-EO logo" width="200">
5
5
  </p>
6
6
 
7
- [![CI](https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml/badge.svg)](https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml)
8
- [![codecov](https://codecov.io/gh/Tommy-Burns/easy-eo/branch/main/graph/badge.svg)](https://codecov.io/gh/Tommy-Burns/easy-eo)
9
- [![PyPI](https://img.shields.io/pypi/v/easy-eo.svg)](https://pypi.org/project/easy-eo/)
10
- [![conda-forge](https://img.shields.io/conda/vn/conda-forge/easy-eo.svg)](https://anaconda.org/conda-forge/easy-eo)
11
- [![Python versions](https://img.shields.io/pypi/pyversions/easy-eo.svg)](https://pypi.org/project/easy-eo/)
12
- [![Documentation Status](https://readthedocs.org/projects/easy-eo/badge/?version=latest)](https://easy-eo.readthedocs.io/en/latest/?badge=latest)
13
- [![License: MIT](https://img.shields.io/github/license/Tommy-Burns/easy-eo)](https://github.com/Tommy-Burns/easy-eo/blob/main/LICENSE)
7
+ | | |
8
+ | :-- | :-- |
9
+ | **Install** | [![PyPI][pypi-badge]][pypi] [![conda-forge][conda-badge]][conda] [![Python versions][pyversions-badge]][pypi] [![Platforms][platforms-badge]][ci] |
10
+ | **Build & quality** | [![CI][ci-badge]][ci] [![Latest deps][latest-deps-badge]][latest-deps] [![Coverage][codecov-badge]][codecov] [![Ruff][ruff-badge]][ruff] [![Checked with mypy][mypy-badge]][mypy] |
11
+ | **Security** | [![CodeQL][codeql-badge]][codeql] [![OpenSSF Scorecard][scorecard-badge]][scorecard] |
12
+ | **Project** | [![Documentation][docs-badge]][docs] [![License: MIT][license-badge]][license] [![DOI][doi-badge]][doi] |
13
+
14
+ [pypi]: https://pypi.org/project/easy-eo/
15
+ [pypi-badge]: https://img.shields.io/pypi/v/easy-eo.svg
16
+ [conda]: https://anaconda.org/conda-forge/easy-eo
17
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/easy-eo.svg
18
+ [pyversions-badge]: https://img.shields.io/pypi/pyversions/easy-eo.svg
19
+ [platforms-badge]: https://img.shields.io/badge/platform-linux%20%7C%20macOS%20%7C%20windows-lightgrey.svg
20
+ [ci]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml
21
+ [ci-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/ci.yml/badge.svg
22
+ [latest-deps]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/latest-deps.yml
23
+ [latest-deps-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/latest-deps.yml/badge.svg
24
+ [codecov]: https://codecov.io/gh/Tommy-Burns/easy-eo
25
+ [codecov-badge]: https://codecov.io/gh/Tommy-Burns/easy-eo/branch/main/graph/badge.svg
26
+ [ruff]: https://github.com/astral-sh/ruff
27
+ [ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
28
+ [mypy]: https://mypy-lang.org/
29
+ [mypy-badge]: https://img.shields.io/badge/mypy-checked-2a6db2.svg
30
+ [codeql]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/codeql.yml
31
+ [codeql-badge]: https://github.com/Tommy-Burns/easy-eo/actions/workflows/codeql.yml/badge.svg
32
+ [scorecard]: https://scorecard.dev/viewer/?uri=github.com/Tommy-Burns/easy-eo
33
+ [scorecard-badge]: https://api.scorecard.dev/projects/github.com/Tommy-Burns/easy-eo/badge
34
+ [docs]: https://easy-eo.readthedocs.io/en/latest/?badge=latest
35
+ [docs-badge]: https://readthedocs.org/projects/easy-eo/badge/?version=latest
36
+ [license]: https://github.com/Tommy-Burns/easy-eo/blob/main/LICENSE
37
+ [license-badge]: https://img.shields.io/github/license/Tommy-Burns/easy-eo
38
+ [doi]: https://doi.org/10.5281/zenodo.21967655
39
+ [doi-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.21967655.svg
40
+
14
41
 
15
42
  Easy-EO is a lightweight, extensible Python library for raster-based Earth
16
43
  Observation (EO) analysis: chainable raster processing, band algebra, spectral indices,
@@ -18,7 +18,7 @@ from .core import (
18
18
  load_raster,
19
19
  )
20
20
  from .core.adapters import *
21
- from .io import from_xarray, stac_search
21
+ from .io import from_xarray, load_landsat, load_sentinel2, stac_search
22
22
  from .ops import *
23
23
  from .preprocessing import *
24
24
  from .viz import *
@@ -28,6 +28,8 @@ __all__ = [
28
28
  "load_raster",
29
29
  "load_array",
30
30
  "stac_search",
31
+ "load_landsat",
32
+ "load_sentinel2",
31
33
  "from_xarray",
32
34
  "show_versions",
33
35
  "EEOError",
@@ -38,4 +40,4 @@ __all__ = [
38
40
  "MissingDependencyError",
39
41
  ]
40
42
 
41
- __version__ = "0.3.0"
43
+ __version__ = "0.4.0"
@@ -227,6 +227,7 @@ class EEORasterDataset:
227
227
  colorbar_label: str | None = ...,
228
228
  title: str | None = ...,
229
229
  save_path: StrPath | None = ...,
230
+ dpi: int = ...,
230
231
  **imshow_kwargs,
231
232
  ) -> None: ...
232
233
  def plot_composite(
@@ -239,6 +240,7 @@ class EEORasterDataset:
239
240
  pmax: float = ...,
240
241
  title: str | None = ...,
241
242
  save_path: StrPath | None = ...,
243
+ dpi: int = ...,
242
244
  ) -> None: ...
243
245
  def plot_histogram(
244
246
  self,
@@ -251,6 +253,7 @@ class EEORasterDataset:
251
253
  log: bool = ...,
252
254
  title: str | None = ...,
253
255
  save_path: StrPath | None = ...,
256
+ dpi: int = ...,
254
257
  **hist_kwargs,
255
258
  ) -> None: ...
256
259
  def plot_raster(
@@ -268,6 +271,7 @@ class EEORasterDataset:
268
271
  colorbar_label: str | None = ...,
269
272
  title: str | None = ...,
270
273
  save_path: StrPath | None = ...,
274
+ dpi: int = ...,
271
275
  **show_kwargs,
272
276
  ) -> None: ...
273
277
  def plot_raster_with_histogram(
@@ -283,6 +287,7 @@ class EEORasterDataset:
283
287
  colorbar: bool = ...,
284
288
  colorbar_label: str | None = ...,
285
289
  save_path: StrPath | None = ...,
290
+ dpi: int = ...,
286
291
  title: str | None = ...,
287
292
  ) -> None: ...
288
293
  def power(self, exponent: int | float) -> EEORasterDataset: ...
@@ -77,9 +77,8 @@ class SampleFile:
77
77
  #: The curated samples, keyed by the attribute name they are exposed under on
78
78
  #: :class:`eeo.datasets.SampleDataset`. Band files use the library's colour band
79
79
  #: names. This is the single source of truth for both the download machinery and
80
- #: the namespace attributes. Per-band Cloud-Optimized GeoTIFFs are intentionally
81
- #: absent: only the stacked COG has a checksum pinned today, and fabricating one
82
- #: would defeat the download verification.
80
+ #: the namespace attributes. Every raster published on the release has both a
81
+ #: plain and a Cloud-Optimized variant here, the latter suffixed ``_cog``.
83
82
  SAMPLE_FILES: dict[str, SampleFile] = {
84
83
  "sentinel2_stacked": SampleFile(
85
84
  Asset(
@@ -111,6 +110,16 @@ SAMPLE_FILES: dict[str, SampleFile] = {
111
110
  "Sentinel-2 L2A band B02 (blue), 1024x1024 @ 10 m, EPSG:32633.",
112
111
  _S2_ATTRIBUTION,
113
112
  ),
113
+ "sentinel2_blue_cog": SampleFile(
114
+ Asset(
115
+ "B02_COG.tif",
116
+ "555f6fb67522148c05d7bb9a4f49d157cde2d9da00d1304ed953bfd383c9ead1",
117
+ 2293197,
118
+ ),
119
+ "raster",
120
+ "Cloud-Optimized GeoTIFF variant of the blue band (B02).",
121
+ _S2_ATTRIBUTION,
122
+ ),
114
123
  "sentinel2_green": SampleFile(
115
124
  Asset(
116
125
  "B03.tif",
@@ -121,6 +130,16 @@ SAMPLE_FILES: dict[str, SampleFile] = {
121
130
  "Sentinel-2 L2A band B03 (green), 1024x1024 @ 10 m, EPSG:32633.",
122
131
  _S2_ATTRIBUTION,
123
132
  ),
133
+ "sentinel2_green_cog": SampleFile(
134
+ Asset(
135
+ "B03_COG.tif",
136
+ "0f0e6cd16141725fe4dfd749a911f3846429b0cd7c222d543d90848ac1f95833",
137
+ 2404804,
138
+ ),
139
+ "raster",
140
+ "Cloud-Optimized GeoTIFF variant of the green band (B03).",
141
+ _S2_ATTRIBUTION,
142
+ ),
124
143
  "sentinel2_red": SampleFile(
125
144
  Asset(
126
145
  "B04.tif",
@@ -131,6 +150,16 @@ SAMPLE_FILES: dict[str, SampleFile] = {
131
150
  "Sentinel-2 L2A band B04 (red), 1024x1024 @ 10 m, EPSG:32633.",
132
151
  _S2_ATTRIBUTION,
133
152
  ),
153
+ "sentinel2_red_cog": SampleFile(
154
+ Asset(
155
+ "B04_COG.tif",
156
+ "5781624003c04ae978196df98dd54e742fe38d1bd5b56237ffc4162209eafc28",
157
+ 2436025,
158
+ ),
159
+ "raster",
160
+ "Cloud-Optimized GeoTIFF variant of the red band (B04).",
161
+ _S2_ATTRIBUTION,
162
+ ),
134
163
  "sentinel2_nir": SampleFile(
135
164
  Asset(
136
165
  "B08.tif",
@@ -141,6 +170,16 @@ SAMPLE_FILES: dict[str, SampleFile] = {
141
170
  "Sentinel-2 L2A band B08 (nir), 1024x1024 @ 10 m, EPSG:32633.",
142
171
  _S2_ATTRIBUTION,
143
172
  ),
173
+ "sentinel2_nir_cog": SampleFile(
174
+ Asset(
175
+ "B08_COG.tif",
176
+ "1488f68cad9f37a90ffef9eb62716e2cab77bd7c22954a08e2f2a5d06ce4014d",
177
+ 2504710,
178
+ ),
179
+ "raster",
180
+ "Cloud-Optimized GeoTIFF variant of the nir band (B08).",
181
+ _S2_ATTRIBUTION,
182
+ ),
144
183
  "copernicus_dem": SampleFile(
145
184
  Asset(
146
185
  "DEM.tif",
@@ -144,6 +144,8 @@ class SampleDataset:
144
144
  Cloud-Optimized GeoTIFF variant of ``sentinel2_stacked``.
145
145
  sentinel2_blue, sentinel2_green, sentinel2_red, sentinel2_nir : SamplePath
146
146
  The four Sentinel-2 bands as separate single-band GeoTIFFs.
147
+ sentinel2_blue_cog, sentinel2_green_cog, sentinel2_red_cog, sentinel2_nir_cog : SamplePath
148
+ Cloud-Optimized GeoTIFF variants of the four single-band files.
147
149
  copernicus_dem : SamplePath
148
150
  Copernicus GLO-30 DEM warped onto the Sentinel-2 grid (float32 metres).
149
151
  copernicus_dem_cog : SamplePath
@@ -156,9 +158,13 @@ class SampleDataset:
156
158
  sentinel2_stacked: SamplePath
157
159
  sentinel2_cog_stacked: SamplePath
158
160
  sentinel2_blue: SamplePath
161
+ sentinel2_blue_cog: SamplePath
159
162
  sentinel2_green: SamplePath
163
+ sentinel2_green_cog: SamplePath
160
164
  sentinel2_red: SamplePath
165
+ sentinel2_red_cog: SamplePath
161
166
  sentinel2_nir: SamplePath
167
+ sentinel2_nir_cog: SamplePath
162
168
  copernicus_dem: SamplePath
163
169
  copernicus_dem_cog: SamplePath
164
170
  boundary: SamplePath
@@ -1,15 +1,19 @@
1
1
  """Data access and exchange beyond the local filesystem.
2
2
 
3
- Holds STAC catalog access (:mod:`eeo.io.stac`, the ``stac`` extra) and xarray
4
- interop (:mod:`eeo.io.xarray`, the ``xarray`` extra). Importing this package
3
+ Holds STAC catalog access (:mod:`eeo.io.stac`, the ``stac`` extra), loaders for
4
+ products downloaded to disk (:mod:`eeo.io.products`), and xarray interop
5
+ (:mod:`eeo.io.xarray`, the ``xarray`` extra). Importing this package
5
6
  pulls in no optional dependency; an extra is only required when one of its
6
7
  features actually runs.
7
8
  """
8
9
 
10
+ from .products import load_landsat, load_sentinel2
9
11
  from .stac import PLANETARY_COMPUTER_STAC_URL, STACItem, STACSearchResult, stac_search
10
12
  from .xarray import from_xarray
11
13
 
12
14
  __all__ = [
15
+ "load_landsat",
16
+ "load_sentinel2",
13
17
  "stac_search",
14
18
  "STACItem",
15
19
  "STACSearchResult",