import os
import ubelt as ub
from geowatch.demo import sentinel2_demodata
import json
[docs]
def demo():
"""
Returns:
str: path to a demo stac catalog
"""
data = sentinel2_demodata.grab_sentinel2_product(0)
gpath = os.path.join(str(data.path), str(data.images[0]))
dpath = ub.Path.appdir('geowatch/demo/demo_stac').ensuredir()
cat_path = os.path.join(dpath, 'demo_catalog.json')
expected_cat_sha512 = '78e9f307e4e365c826a55f6beaa9d6e3b6b6ba4e3cc7d08'
expected_item1_sha512 = '78224b4b2e56cbc58ca8d76b632b1c2c323eeae653b5323'
expected_item2_sha512 = '348daaffb70c17da43f08f5b1506f929467f6986e7e8170'
catalog = {
"id": "demo catalog",
"stac_version": "1.0.0-beta.2",
"description": "demo catalog",
"links": [
{
"rel": "root",
"href": cat_path,
"type": "application/json"
},
{
"rel": "self",
"href": cat_path,
"type": "application/json"
},
{
"rel": "item",
"href": os.path.join(dpath, "testitem1.json"),
"type": "application/json"
},
{
"rel": "item",
"href": os.path.join(dpath, "testitem2.json"),
"type": "application/json"
}
]
}
if (not os.path.exists(cat_path) or
not ub.hash_file(cat_path).startswith(expected_cat_sha512)):
with open(cat_path, 'w') as f:
json.dump(catalog, f)
path1 = os.path.join(dpath, "testitem1.json")
item1 = {
"type": "Feature",
"stac_version": "1.0.0-beta.2",
"id": "testitem1",
"properties": {
"datetime": "2018-11-06T02:17:10.060000Z",
},
"geometry": {},
"links": [
{
"rel": "root",
"href": cat_path,
"type": "application/json"
},
{
"rel": "parent",
"href": cat_path,
"type": "application/json"
},
{
"rel": "self",
"href": path1,
"type": "application/json"
}
],
"assets": {
"data": {
"href": gpath,
"type": "application/vnd.nitf"
}
},
"bbox": [],
"stac_extensions": []
}
if (not os.path.exists(path1) or
not ub.hash_file(path1).startswith(expected_item1_sha512)):
with open(os.path.join(dpath, "testitem1.json"), 'w') as f:
json.dump(item1, f)
path2 = os.path.join(dpath, "testitem2.json")
item2 = {
"type": "Feature",
"stac_version": "1.0.0-beta.2",
"id": "testitem2",
"properties": {
"datetime": "2018-11-06T02:17:10.060000Z",
},
"geometry": {},
"links": [
{
"rel": "root",
"href": cat_path,
"type": "application/json"
},
{
"rel": "parent",
"href": cat_path,
"type": "application/json"
},
{
"rel": "self",
"href": path2,
"type": "application/json"
}
],
"assets": {
"testimg1": {
"href": gpath,
"type": "application/vnd.nitf",
"roles": ["data"]
},
"testimg2": {
"href": gpath,
"type": "application/vnd.nitf",
"roles": ["data"]
}
},
"bbox": [],
"stac_extensions": []
}
if (not os.path.exists(path2) or
not ub.hash_file(path2).startswith(expected_item2_sha512)):
with open(os.path.join(dpath, "testitem2.json"), 'w') as f:
json.dump(item2, f)
return cat_path
if __name__ == '__main__':
print(demo())