def test_label_classes_summary(self) -> None: label_classes = [ LabelClasses({ "name": "road_type", "classes": ["1", "2", "3", "4", "5", "6"] }), LabelClasses({ "name": "lane_number", "classes": ["1", "2", "3", "4", "5"] }), LabelClasses({ "name": "paved", "classes": ["0", "1"] }), ] collection = Collection.from_file(self.EXAMPLE_COLLECTION) label_ext_summaries = LabelExtension.summaries(collection, True) label_ext_summaries.label_classes = label_classes summaries = collection.summaries assert summaries is not None label_classes_summary = summaries.get_list("label:classes") assert label_classes_summary is not None self.assertListEqual([lc.to_dict() for lc in label_classes], label_classes_summary) label_classes_summary_ext = label_ext_summaries.label_classes assert label_classes_summary_ext is not None self.assertListEqual(label_classes, label_classes_summary_ext)
def test_multiple_extents(self): cat1 = TestCases.test_case_1() col1 = cat1.get_child('country-1').get_child('area-1-1') col1.validate() self.assertIsInstance(col1, Collection) validate_dict(col1.to_dict(), STACObjectType.COLLECTION) multi_ext_uri = TestCases.get_path( 'data-files/collections/multi-extent.json') with open(multi_ext_uri) as f: multi_ext_dict = json.load(f) validate_dict(multi_ext_dict, STACObjectType.COLLECTION) self.assertIsInstance(Collection.from_dict(multi_ext_dict), Collection) multi_ext_col = Collection.from_file(multi_ext_uri) multi_ext_col.validate() ext = multi_ext_col.extent extent_dict = multi_ext_dict['extent'] self.assertIsInstance(ext, Extent) self.assertIsInstance(ext.spatial.bboxes[0], list) self.assertEqual(len(ext.spatial.bboxes), 2) self.assertDictEqual(ext.to_dict(), extent_dict) cloned_ext = ext.clone() self.assertDictEqual(cloned_ext.to_dict(), multi_ext_dict['extent'])
def test_eo_items_are_heritable(self): item1 = Item(id='test-item-1', geometry=RANDOM_GEOM, bbox=RANDOM_BBOX, datetime=datetime.utcnow(), properties={'key': 'one'}, stac_extensions=['eo', 'commons']) item2 = Item(id='test-item-2', geometry=RANDOM_GEOM, bbox=RANDOM_BBOX, datetime=datetime.utcnow(), properties={'key': 'two'}, stac_extensions=['eo', 'commons']) wv3_bands = [ Band.create(name='Coastal', description='Coastal: 400 - 450 nm', common_name='coastal'), Band.create(name='Blue', description='Blue: 450 - 510 nm', common_name='blue'), Band.create(name='Green', description='Green: 510 - 580 nm', common_name='green'), Band.create(name='Yellow', description='Yellow: 585 - 625 nm', common_name='yellow'), Band.create(name='Red', description='Red: 630 - 690 nm', common_name='red'), Band.create(name='Red Edge', description='Red Edge: 705 - 745 nm', common_name='rededge'), Band.create(name='Near-IR1', description='Near-IR1: 770 - 895 nm', common_name='nir08'), Band.create(name='Near-IR2', description='Near-IR2: 860 - 1040 nm', common_name='nir09') ] spatial_extent = SpatialExtent(bboxes=[RANDOM_BBOX]) temporal_extent = TemporalExtent(intervals=[[item1.datetime, None]]) collection_extent = Extent(spatial=spatial_extent, temporal=temporal_extent) common_properties = { 'eo:bands': [b.to_dict() for b in wv3_bands], 'gsd': 0.3, 'eo:platform': 'Maxar', 'eo:instrument': 'WorldView3' } collection = Collection(id='test', description='test', extent=collection_extent, properties=common_properties, stac_extensions=['commons'], license='CC-BY-SA-4.0') collection.add_items([item1, item2]) with TemporaryDirectory() as tmp_dir: collection.normalize_hrefs(tmp_dir) collection.save(catalog_type=CatalogType.SELF_CONTAINED) read_col = Collection.from_file('{}/collection.json'.format(tmp_dir)) items = list(read_col.get_all_items()) self.assertEqual(len(items), 2) self.assertTrue(items[0].ext.implements('eo')) self.assertTrue(items[1].ext.implements('eo'))
def test_label_methods_summary(self) -> None: label_methods: List[Union[LabelMethod, str]] = [LabelMethod.AUTOMATED] collection = Collection.from_file(self.EXAMPLE_COLLECTION) label_ext_summaries = LabelExtension.summaries(collection, True) label_ext_summaries.label_methods = label_methods summaries = collection.summaries assert summaries is not None label_methods_summary = summaries.get_list("label:methods") assert label_methods_summary is not None self.assertListEqual(label_methods, label_methods_summary) label_methods_summary_ext = label_ext_summaries.label_methods assert label_methods_summary_ext is not None self.assertListEqual(label_methods, label_methods_summary_ext)
def test_label_task_summary(self) -> None: label_tasks: List[Union[LabelTask, str]] = [LabelTask.REGRESSION] collection = Collection.from_file(self.EXAMPLE_COLLECTION) label_ext_summaries = LabelExtension.summaries(collection, True) label_ext_summaries.label_tasks = label_tasks summaries = collection.summaries assert summaries is not None label_tasks_summary = summaries.get_list("label:tasks") assert label_tasks_summary is not None self.assertListEqual(label_tasks, label_tasks_summary) label_tasks_summary_ext = label_ext_summaries.label_tasks assert label_tasks_summary_ext is not None self.assertListEqual(label_tasks, label_tasks_summary_ext)
def test_label_type_summary(self) -> None: label_types = [LabelType.VECTOR] collection = Collection.from_file(self.EXAMPLE_COLLECTION) label_ext_summaries = LabelExtension.summaries(collection, True) label_ext_summaries.label_type = label_types summaries = collection.summaries assert summaries is not None label_type_summary = summaries.get_list("label:type") assert label_type_summary is not None self.assertListEqual(label_types, label_type_summary) label_type_summary_ext = label_ext_summaries.label_type assert label_type_summary_ext is not None self.assertListEqual(label_types, label_type_summary_ext)
def test_label_properties_summary(self) -> None: label_properties = ["road_type", "lane_number", "paved"] collection = Collection.from_file(self.EXAMPLE_COLLECTION) label_ext_summaries = LabelExtension.summaries(collection, True) label_ext_summaries.label_properties = label_properties summaries = collection.summaries assert summaries is not None label_properties_summary = summaries.get_list("label:properties") assert label_properties_summary is not None self.assertListEqual(label_properties, label_properties_summary) label_properties_summary_ext = label_ext_summaries.label_properties assert label_properties_summary_ext is not None self.assertListEqual(label_properties, label_properties_summary_ext)
def test_clone_preserves_assets(self) -> None: path = TestCases.get_path("data-files/collections/with-assets.json") original_collection = Collection.from_file(path) assert len(original_collection.assets) > 0 assert all( asset.owner is original_collection for asset in original_collection.assets.values() ) cloned_collection = original_collection.clone() for key in original_collection.assets: with self.subTest(f"Preserves {key} asset"): self.assertIn(key, cloned_collection.assets) cloned_asset = cloned_collection.assets.get(key) if cloned_asset is not None: with self.subTest(f"Sets owner for {key}"): self.assertIs(cloned_asset.owner, cloned_collection)
"The bucket that should contain the output of the SentinelHub Batch Ingests", ) return parser if __name__ == "__main__": parser = make_parser() args = parser.parse_args() # Register methods for IO to/from S3 register_s3_io() session = get_sentinel_hub_session(args.oauth_id, args.oauth_secret) # Read STAC from S3 usfimr_collection = Collection.from_file( "s3://usfimr-data/collection.json") usfimr_floods = usfimr_collection.get_items() # Iterate through GLOFIMR flood events flood_with_results = [] for flood in usfimr_floods: # geom bounds flood_bounds = flood.bbox # temporal bounds date_min, date_max = get_flood_temporal_bounds(flood) search_results = search_sentinelhub_s1(date_min, date_max, flood_bounds, session) search_results = search_results.json() result_count = search_results["context"]["returned"]
def test_case_8() -> Collection: """Planet disaster data example catalog, 1.0.0-beta.2""" return Collection.from_file( TestCases.get_path("data-files/catalogs/" "planet-example-v1.0.0-beta.2/collection.json"))
def setUp(self) -> None: self.maxDiff = None self.collection = Collection.from_file( TestCases.get_path("data-files/item-assets/example-landsat8.json"))