def test_OLI(self): id = "LO81120152015061LGN00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) asset = utils.get_asset(stac_item, band=Eo.BLUE, cloud_platform=GCP) self.assertIsNotNone(asset) asset = utils.get_asset(stac_item, band=Eo.BLUE, cloud_platform=AWS) self.assertIsNotNone(asset) asset = utils.get_asset(stac_item, band=Eo.LWIR_1, cloud_platform=GCP) self.assertIsNone(asset) asset = utils.get_asset(stac_item, band=Eo.LWIR_1, cloud_platform=AWS) self.assertIsNone(asset) asset = utils.get_asset(stac_item, band=Eo.CIRRUS, cloud_platform=GCP) self.assertIsNotNone(asset) asset = utils.get_asset(stac_item, band=Eo.CIRRUS, cloud_platform=AWS) self.assertIsNotNone(asset) aws_count, gcp_count = 0, 0 for key, asset in stac_item.assets.items(): if asset.cloud_platform == AWS: print(asset.object_path) aws_count += 1 else: # print(asset.object_path) gcp_count += 1 self.assertEquals(25, aws_count) self.assertEquals(12, gcp_count)
def test_product_id(self): product_id = "LC08_L1TP_027039_20150226_20170228_01_T1" stac_request = StacRequest(landsat=LandsatRequest( product_id=product_id)) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) self.assertEquals("LC80270392015057LGN01", stac_item.id)
def test_basename(self): asset_name = 'LO81120152015061LGN00_B2.TIF' id = "LO81120152015061LGN00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) asset = utils.get_asset(stac_item, asset_basename=asset_name) self.assertIsNotNone(asset)
def test_wrs_row_path(self): wrs_path = 27 wrs_row = 38 stac_request = StacRequest( landsat=LandsatRequest(wrs_path=wrs_path, wrs_row=wrs_row)) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item)
def test_datetime_GT(self): bdt = datetime(2015, 11, 3, 1, 1, 1, tzinfo=timezone.utc) observed_range = query_pb2.TimestampField(value=utils.timestamp(bdt), rel_type=query_pb2.GT) stac_request = StacRequest(observed=observed_range) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) self.assertLessEqual( utils.timestamp(bdt).seconds, stac_item.datetime.seconds)
def test_date_GT_OR_EQ(self): bd = date(2015, 11, 3) observed_range = query_pb2.TimestampField(value=utils.timestamp(bd), rel_type=query_pb2.GT_OR_EQ) stac_request = StacRequest(observed=observed_range) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) self.assertLessEqual( utils.timestamp(bd).seconds, stac_item.datetime.seconds)
def test_thumbnail(self): id = 'LO81120152015061LGN00' stac_request = StacRequest(id=id) stac_item = search_one(stac_request) asset_type = THUMBNAIL asset = utils.get_asset(stac_item, asset_types=[asset_type], cloud_platform=AWS) self.assertIsNotNone(asset)
def test_aws(self): id = "LC80270392015025LGN00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) count = 0 for key, asset in stac_item.assets.items(): if asset.cloud_platform == AWS: print(asset.object_path) count += 1 self.assertEquals(29, count)
def test_L8_processed_id_2(self): id = "LC81262052018263LGN00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) aws_count, gcp_count = 0, 0 for key, asset in stac_item.assets.items(): if asset.cloud_platform == AWS: aws_count += 1 print(asset.object_path) else: gcp_count += 1 self.assertEquals(42, aws_count) self.assertEquals(14, gcp_count)
def test_L1GT(self): id = "LE70080622016239EDC00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) aws_count, gcp_count = 0, 0 for key, asset in stac_item.assets.items(): if asset.cloud_platform == AWS: aws_count += 1 else: print(asset.object_path) gcp_count += 1 self.assertEquals(0, aws_count) self.assertEquals(22, gcp_count)
def test_L1G(self): id = "LT51560202010035IKR02" stac_request = StacRequest(id=id) stac_item = search_one(stac_request) self.assertIsNotNone(stac_item) aws_count, gcp_count = 0, 0 for key, asset in stac_item.assets.items(): if asset.cloud_platform == AWS: aws_count += 1 else: print(asset.object_path) gcp_count += 1 self.assertEquals(0, aws_count) self.assertEquals(20, gcp_count)
def test_datetime_not_range_desc(self): start = datetime(2013, 4, 1, 12, 45, 59, tzinfo=timezone.utc) end = datetime(2014, 4, 1, 12, 45, 59, tzinfo=timezone.utc) observed_range = query_pb2.TimestampField( start=utils.timestamp(start), stop=utils.timestamp(end), rel_type=query_pb2.NOT_BETWEEN, sort_direction=query_pb2.DESC) stac_request = StacRequest(observed=observed_range, limit=5) for stac_item in search(stac_request): print( datetime.fromtimestamp(stac_item.datetime.seconds, tz=timezone.utc)) self.assertTrue( utils.timestamp(end).seconds < stac_item.datetime.seconds)
def test_datetime_range(self): start = datetime(2013, 4, 1, 12, 45, 59, tzinfo=timezone.utc) end = datetime(2014, 4, 1, 12, 45, 59, tzinfo=timezone.utc) observed_range = query_pb2.TimestampField(start=utils.timestamp(start), stop=utils.timestamp(end), rel_type=query_pb2.BETWEEN) stac_request = StacRequest(observed=observed_range, limit=5) for stac_item in search(stac_request): print( datetime.fromtimestamp(stac_item.datetime.seconds, tz=timezone.utc)) self.assertGreaterEqual( utils.timestamp(end).seconds, stac_item.datetime.seconds) self.assertLessEqual( utils.timestamp(start).seconds, stac_item.datetime.seconds)
def test_has_asset(self): id = "LO81120152015061LGN00" stac_request = StacRequest(id=id) stac_item = search_one(stac_request=stac_request) for key in stac_item.assets: asset = stac_item.assets[key] self.assertTrue(utils.has_asset(stac_item, asset)) garbage = Asset(href="pie") self.assertFalse(utils.has_asset(stac_item, garbage)) garbage.asset_type = asset.asset_type self.assertFalse(utils.has_asset(stac_item, garbage)) garbage.href = asset.href garbage.bucket = asset.bucket garbage.type = asset.type garbage.eo_bands = asset.eo_bands garbage.cloud_platform = asset.cloud_platform garbage.bucket_manager = asset.bucket_manager garbage.bucket_region = asset.bucket_region garbage.object_path = asset.object_path self.assertTrue(utils.has_asset(stac_item, garbage))
def test_count_more(self): start = datetime(2014, 4, 1, 12, 45, 59, tzinfo=timezone.utc) end = datetime(2014, 4, 1, 12, 52, 59, tzinfo=timezone.utc) observed_range = query_pb2.TimestampField(start=utils.timestamp(start), stop=utils.timestamp(end), rel_type=query_pb2.BETWEEN) stac_request = StacRequest(observed=observed_range, limit=40, landsat=LandsatRequest()) for stac_item in search(stac_request): self.assertEquals(Eo.LANDSAT, stac_item.eo.constellation) print( datetime.fromtimestamp(stac_item.datetime.seconds, tz=timezone.utc)) self.assertGreaterEqual( utils.timestamp(end).seconds, stac_item.datetime.seconds) self.assertLessEqual( utils.timestamp(start).seconds, stac_item.datetime.seconds) self.assertEquals(12, count_items(stac_request))
def test_count(self): id = "LC81262052018263LGN00" stac_request = StacRequest(id=id) number = count_items(stac_request) self.assertEquals(1, number)