Skip to content

Commit 5b2216d

Browse files
authored
Merge branch 'main' into feature/classification-extension
2 parents 4eb17e4 + e196e50 commit 5b2216d

File tree

43 files changed

+208
-67
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+208
-67
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
- Make `Link.to_dict()` only contain strings ([#1114](https://github.com/stac-utils/pystac/pull/1114))
2727
- Updated raster extension to work with the item_assets extension's AssetDefinition objects ([#1110](https://github.com/stac-utils/pystac/pull/1110))
2828
- Return all validation errors from validation methods of `JsonSchemaSTACValidator` ([#1120](https://github.com/stac-utils/pystac/pull/1120))
29+
- EO extension updated to v1.1.0 ([#1131](https://github.com/stac-utils/pystac/pull/1131))
2930

3031
### Deprecated
3132

docs/concepts.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ extended.
570570
# Add the Electro-Optical extension
571571
EOExtension.add_to(item)
572572
print(item.stac_extensions)
573-
# ['https://stac-extensions.github.io/eo/v1.0.0/schema.json']
573+
# ['https://stac-extensions.github.io/eo/v1.1.0/schema.json']
574574
575575
Extended Summaries
576576
------------------

docs/example-catalog/landsat-8-l1/2018-05/LC80150322018141LGN00.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"id": "LC80150322018141LGN00",
44
"stac_version" : "1.0.0",
55
"stac_extensions" : [
6-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
6+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
77
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
88
"https://stac-extensions.github.io/projection/v1.1.0/schema.json"
99
],

docs/example-catalog/landsat-8-l1/2018-06/LC80140332018166LGN00.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"id": "LC80140332018166LGN00",
44
"stac_version" : "1.0.0",
55
"stac_extensions" : [
6-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
6+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
77
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
88
"https://stac-extensions.github.io/projection/v1.1.0/schema.json"
99
],

docs/example-catalog/landsat-8-l1/2018-06/LC80300332018166LGN00.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"type": "Feature",
33
"stac_version" : "1.0.0",
44
"stac_extensions" : [
5-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
5+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
66
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
77
"https://stac-extensions.github.io/projection/v1.1.0/schema.json"
88
],

docs/example-catalog/landsat-8-l1/2018-07/LC80150332018189LGN00.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"id": "LC80150332018189LGN00",
44
"stac_version" : "1.0.0",
55
"stac_extensions" : [
6-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
6+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
77
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
88
"https://stac-extensions.github.io/projection/v1.1.0/schema.json"
99
],

docs/quickstart.ipynb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@
470470
" </summary>\n",
471471
" <table style=\"width: 100%; text-align: left;\">\n",
472472
" \n",
473-
" <tr><td style=\"text-align: left;\"><a href=\"https://stac-extensions.github.io/eo/v1.0.0/schema.json\">https://stac-extensions.github.io/eo/v1.0.0/schema.json</a></td></tr>\n",
473+
" <tr><td style=\"text-align: left;\"><a href=\"https://stac-extensions.github.io/eo/v1.1.0/schema.json\">https://stac-extensions.github.io/eo/v1.1.0/schema.json</a></td></tr>\n",
474474
" \n",
475475
" <tr><td style=\"text-align: left;\"><a href=\"https://stac-extensions.github.io/view/v1.0.0/schema.json\">https://stac-extensions.github.io/view/v1.0.0/schema.json</a></td></tr>\n",
476476
" \n",
@@ -1524,7 +1524,7 @@
15241524
{
15251525
"data": {
15261526
"text/plain": [
1527-
"['https://stac-extensions.github.io/eo/v1.0.0/schema.json',\n",
1527+
"['https://stac-extensions.github.io/eo/v1.1.0/schema.json',\n",
15281528
" 'https://stac-extensions.github.io/view/v1.0.0/schema.json',\n",
15291529
" 'https://stac-extensions.github.io/projection/v1.1.0/schema.json']"
15301530
]
@@ -1796,9 +1796,7 @@
17961796
"metadata": {},
17971797
"outputs": [],
17981798
"source": [
1799-
"item_to_update = next(\n",
1800-
" root_catalog.get_items(\"LC80140332018166LGN00\", recursive=True)\n",
1801-
")\n",
1799+
"item_to_update = next(root_catalog.get_items(\"LC80140332018166LGN00\", recursive=True))\n",
18021800
"item_to_update_eo_ext = EOExtension.ext(item_to_update)\n",
18031801
"\n",
18041802
"# Update the cloud cover\n",

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ test = [
6161
"pytest-mock~=3.10",
6262
"pytest-vcr~=1.0",
6363
"pytest~=7.3",
64-
"ruff==0.0.269",
64+
"ruff==0.0.270",
6565
"types-html5lib~=1.1",
6666
"types-orjson~=3.6",
6767
"types-python-dateutil~=2.8",

pystac/extensions/eo.py

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,25 @@
2929

3030
T = TypeVar("T", pystac.Item, pystac.Asset)
3131

32-
SCHEMA_URI: str = "https://stac-extensions.github.io/eo/v1.0.0/schema.json"
32+
SCHEMA_URI: str = "https://stac-extensions.github.io/eo/v1.1.0/schema.json"
33+
SCHEMA_URIS: List[str] = [
34+
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
35+
SCHEMA_URI,
36+
]
3337
PREFIX: str = "eo:"
3438

3539
# Field names
3640
BANDS_PROP: str = PREFIX + "bands"
3741
CLOUD_COVER_PROP: str = PREFIX + "cloud_cover"
42+
SNOW_COVER_PROP: str = PREFIX + "snow_cover"
43+
44+
45+
def validated_percentage(v: Optional[float]) -> Optional[float]:
46+
if v is not None and not isinstance(v, (float, int)) or isinstance(v, bool):
47+
raise ValueError(f"Invalid percentage: {v} must be number")
48+
if v is not None and not 0 <= v <= 100:
49+
raise ValueError(f"Invalid percentage: {v} must be between 0 and 100")
50+
return v
3851

3952

4053
class Band:
@@ -296,7 +309,10 @@ class EOExtension(
296309
"""
297310

298311
def apply(
299-
self, bands: Optional[List[Band]] = None, cloud_cover: Optional[float] = None
312+
self,
313+
bands: Optional[List[Band]] = None,
314+
cloud_cover: Optional[float] = None,
315+
snow_cover: Optional[float] = None,
300316
) -> None:
301317
"""Applies Electro-Optical Extension properties to the extended
302318
:class:`~pystac.Item` or :class:`~pystac.Asset`.
@@ -307,9 +323,13 @@ def apply(
307323
cloud_cover : The estimate of cloud cover as a percentage
308324
(0-100) of the entire scene. If not available the field should not
309325
be provided.
326+
snow_cover : The estimate of snow cover as a percentage
327+
(0-100) of the entire scene. If not available the field should not
328+
be provided.
310329
"""
311330
self.bands = bands
312-
self.cloud_cover = cloud_cover
331+
self.cloud_cover = validated_percentage(cloud_cover)
332+
self.snow_cover = validated_percentage(snow_cover)
313333

314334
@property
315335
def bands(self) -> Optional[List[Band]]:
@@ -343,12 +363,30 @@ def cloud_cover(self) -> Optional[float]:
343363

344364
@cloud_cover.setter
345365
def cloud_cover(self, v: Optional[float]) -> None:
346-
self._set_property(CLOUD_COVER_PROP, v)
366+
self._set_property(CLOUD_COVER_PROP, validated_percentage(v), pop_if_none=True)
367+
368+
@property
369+
def snow_cover(self) -> Optional[float]:
370+
"""Get or sets the estimate of snow cover as a percentage
371+
(0-100) of the entire scene. If not available the field should not be provided.
372+
373+
Returns:
374+
float or None
375+
"""
376+
return self._get_property(SNOW_COVER_PROP, float)
377+
378+
@snow_cover.setter
379+
def snow_cover(self, v: Optional[float]) -> None:
380+
self._set_property(SNOW_COVER_PROP, validated_percentage(v), pop_if_none=True)
347381

348382
@classmethod
349383
def get_schema_uri(cls) -> str:
350384
return SCHEMA_URI
351385

386+
@classmethod
387+
def get_schema_uris(cls) -> List[str]:
388+
return SCHEMA_URIS
389+
352390
@classmethod
353391
def ext(cls, obj: T, add_if_missing: bool = False) -> EOExtension[T]:
354392
"""Extends the given STAC Object with properties from the
@@ -496,10 +534,24 @@ def cloud_cover(self) -> Optional[RangeSummary[float]]:
496534
def cloud_cover(self, v: Optional[RangeSummary[float]]) -> None:
497535
self._set_summary(CLOUD_COVER_PROP, v)
498536

537+
@property
538+
def snow_cover(self) -> Optional[RangeSummary[float]]:
539+
"""Get or sets the summary of :attr:`EOExtension.snow_cover` values
540+
for this Collection.
541+
"""
542+
return self.summaries.get_range(SNOW_COVER_PROP)
543+
544+
@snow_cover.setter
545+
def snow_cover(self, v: Optional[RangeSummary[float]]) -> None:
546+
self._set_summary(SNOW_COVER_PROP, v)
547+
499548

500549
class EOExtensionHooks(ExtensionHooks):
501550
schema_uri: str = SCHEMA_URI
502-
prev_extension_ids = {"eo"}
551+
prev_extension_ids = {
552+
"eo",
553+
*[uri for uri in SCHEMA_URIS if uri != SCHEMA_URI],
554+
}
503555
stac_object_types = {pystac.STACObjectType.ITEM}
504556

505557
def migrate(

tests/data-files/catalogs/cbers-partial/CBERS4AWFI/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
}
1717
],
1818
"stac_extensions": [
19-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
19+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
2020
"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/item-assets/json-schema/schema.json"
2121
],
2222
"providers": [

tests/data-files/catalogs/cbers-partial/CBERS4MUX/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
}
1717
],
1818
"stac_extensions": [
19-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
19+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
2020
"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json"
2121
],
2222
"providers": [

tests/data-files/catalogs/cbers-partial/CBERS4PAN10M/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
}
1717
],
1818
"stac_extensions": [
19-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
19+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
2020
"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json"
2121
],
2222
"providers": [

tests/data-files/catalogs/cbers-partial/CBERS4PAN5M/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
}
1717
],
1818
"stac_extensions": [
19-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
19+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
2020
"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json"
2121
],
2222
"providers": [

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"id": "planet-disaster-data",
33
"stac_version": "1.0.0-beta.2",
44
"stac_extensions": [
5-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
5+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
66
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
77
],
88
"description": "[Planet Disaster Data](https://www.planet.com/disasterdata/) makes imagery available directly to the public, volunteers, humanitarian organizations, and other coordinating bodies in support of the International Charter for Space and Major Disasters. Data is released for individual disaster events, providing a 30 day window pre- and post-disaster. Imagery is provided under Creative Commons licenses, free of charge, with either CC-BY-SA or CC-BY-NC.",

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/hurricane-harvey/hurricane-harvey-0831/20170831_162740_ssc1d1/20170831_162740_ssc1d1.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@
156156
29.064872627755797
157157
],
158158
"stac_extensions": [
159-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
159+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
160160
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
161161
],
162162
"collection": "planet-disaster-data"

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/hurricane-harvey/hurricane-harvey-0831/20170831_172754_101c/20170831_172754_101c.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
29.62330817060518
142142
],
143143
"stac_extensions": [
144-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
144+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
145145
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
146146
"https://stac-extensions.github.io/projection/v1.0.0/schema.json"
147147
],

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/hurricane-harvey/hurricane-harvey-0831/20170831_195425_SS02/20170831_195425_SS02.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
30.052156732418428
122122
],
123123
"stac_extensions": [
124-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
124+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
125125
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
126126
],
127127
"collection": "planet-disaster-data"

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/hurricane-harvey/hurricane-harvey-0831/2017831_195552_SS02/2017831_195552_SS02.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
29.834836581964858
141141
],
142142
"stac_extensions": [
143-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
143+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
144144
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
145145
],
146146
"collection": "planet-disaster-data"

tests/data-files/catalogs/planet-example-v1.0.0-beta.2/hurricane-harvey/hurricane-harvey-0831/Houston-East-20170831-103f-100d-0f4f-RGB/Houston-East-20170831-103f-100d-0f4f-RGB.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
30.157560439570304
8585
],
8686
"stac_extensions": [
87-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
87+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
8888
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
8989
"https://stac-extensions.github.io/projection/v1.0.0/schema.json"
9090
],

tests/data-files/catalogs/test-case-5/CBERS4/CBERS4MUX/CBERS4-MUX-027/CBERS4-MUX-027/069/CBERS_4_MUX_20190510_027_069_L2/CBERS_4_MUX_20190510_027_069_L2.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
28.3637
139139
],
140140
"stac_extensions": [
141-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
141+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
142142
"https://stac-extensions.github.io/projection/v1.0.0/schema.json",
143143
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
144144
],

tests/data-files/catalogs/test-case-5/CBERS4/CBERS4MUX/CBERS4-MUX-027/CBERS4-MUX-027/collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
}
1919
],
2020
"stac_extensions": [
21-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json"
21+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json"
2222
],
2323
"providers": [
2424
{

tests/data-files/eo/eo-collection.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
}
2020
],
2121
"stac_extensions": [
22-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json"
22+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json"
2323
],
2424
"title": "Landsat 8 L1",
2525
"keywords": [
@@ -128,6 +128,10 @@
128128
"eo:cloud_cover": {
129129
"minimum": 0.0,
130130
"maximum": 80.0
131+
},
132+
"eo:snow_cover": {
133+
"minimum": 0.0,
134+
"maximum": 80.0
131135
}
132136
},
133137
"extent": {

tests/data-files/eo/eo-landsat-example.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"view:off_nadir": 0,
1616
"landsat:path": 107,
1717
"landsat:row": 18,
18-
"eo:cloud_cover": 78
18+
"eo:cloud_cover": 78,
19+
"eo:snow_cover": 44.5
1920
},
2021
"geometry": {
2122
"type": "Polygon",
@@ -229,7 +230,7 @@
229230
60.63437
230231
],
231232
"stac_extensions": [
232-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
233+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
233234
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
234235
],
235236
"collection": "landsat-8-l1"

tests/data-files/eo/eo-sentinel2-item.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"stac_version": "1.0.0",
33
"stac_extensions": [
4-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
4+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
55
"https://stac-extensions.github.io/processing/v1.0.0/schema.json",
66
"https://stac-extensions.github.io/raster/v1.0.0/schema.json",
77
"https://stac-extensions.github.io/sat/v1.0.0/schema.json",

tests/data-files/eo/sample-bands-in-item-properties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
37.613537207
141141
],
142142
"stac_extensions": [
143-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
143+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
144144
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
145145
],
146146
"collection": "CS3"

tests/data-files/examples/1.0.0-RC2/extended-item.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"stac_version": "1.0.0-rc.2",
33
"stac_extensions": [
4-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
4+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
55
"https://stac-extensions.github.io/projection/v1.0.0/schema.json",
66
"https://stac-extensions.github.io/scientific/v1.0.0/schema.json",
77
"https://stac-extensions.github.io/view/v1.0.0/schema.json",
@@ -189,4 +189,3 @@
189189
}
190190
}
191191
}
192-

tests/data-files/examples/1.0.0/collection-only/collection-with-schemas.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"stac_version": "1.0.0",
33
"stac_extensions": [
4-
"https://stac-extensions.github.io/eo/v1.0.0/schema.json",
4+
"https://stac-extensions.github.io/eo/v1.1.0/schema.json",
55
"https://stac-extensions.github.io/sat/v1.0.0/schema.json",
66
"https://stac-extensions.github.io/view/v1.0.0/schema.json"
77
],

0 commit comments

Comments
 (0)