def test_create_lessBand(landsat_get_mtl, monkeypatch): """Shoult raise an error on wrong band indexes.""" monkeypatch.setattr(l8_full, "LANDSAT_BUCKET", landsat_bucket) landsat_get_mtl.return_value = landsat_meta bands = [5, 4] with pytest.raises(Exception): l8_full.create(landsat_scene_c1, bands=bands)
def full(event, context): """Handle full requests.""" bucket = os.environ["OUTPUT_BUCKET"] scene = event['scene'] bands = event.get('bands') expression = event.get('expression') if bands: bands = bands.split(',') if isinstance(bands, str) else bands mem = l8_full.create(scene, bands=bands, expression=expression) params = { 'ACL': 'public-read', 'Metadata': { 'scene': scene }, 'ContentType': 'image/tiff' } if expression: params['Metadata']['expression'] = expression else: params['Metadata']['bands'] = ''.join(map(str, bands)) str_band = ''.join(map(str, bands)) prefix = 'Exp' if expression else 'RGB' key = f'data/landsat/{scene}_{prefix}{str_band}.tif' client = boto3.client('s3') client.upload_fileobj(mem, bucket, key, ExtraArgs=params) return { 'scene': scene, 'path': f'https://s3-us-west-2.amazonaws.com/{bucket}/{key}' }
def l8_full_handler(event, context): ''' ''' logger.info(event) try: info = event.get('queryStringParameters') scene = info.get('scene') bands = info.get('bands', [4, 3, 2]) bands = eval(bands) if isinstance(bands, str) else bands out = l8_full.create(scene, os.environ.get('OUTPUT_BUCKET'), bands) str_band = ''.join(map(str, bands)) return response( 'OK', 'application/json', json.dumps({ 'path': f'https://s3-us-west-2.amazonaws.com/{os.environ.get("OUTPUT_BUCKET")}/data/landsat/{scene}_B{str_band}.tif' }), True) except: return response('ERROR', 'application/json', json.dumps({'ErrorMessage': 'Error'}), True)
def test_create_noExpreBands(landsat_get_mtl, monkeypatch): """Shoult raise an error on missing expression or band indexes.""" monkeypatch.setattr(l8_full, "LANDSAT_BUCKET", landsat_bucket) landsat_get_mtl.return_value = landsat_meta with pytest.raises(Exception): l8_full.create(landsat_scene_c1)
def test_create_expression(landsat_get_mtl, monkeypatch): """Should work as expected (read data, create NDVI).""" expression = "(b5 - b4) / (b5 + b4)" monkeypatch.setattr(l8_full, "LANDSAT_BUCKET", landsat_bucket) landsat_get_mtl.return_value = landsat_meta assert l8_full.create(landsat_scene_c1, expression=expression)
def test_create_bands(landsat_get_mtl, monkeypatch): """Should work as expected (read data, create RGB).""" monkeypatch.setattr(l8_full, "LANDSAT_BUCKET", landsat_bucket) landsat_get_mtl.return_value = landsat_meta bands = [5, 4, 3] assert l8_full.create(landsat_scene_c1, bands=bands)