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)
Exemple #2
0
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}'
    }
Exemple #3
0
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)