Beispiel #1
0
def apply_srem(input_raster_file: str, metadata_file: str,
               output_raster_file: str) -> None:
    out_dir = os.path.join(os.path.dirname(output_raster_file))
    os.makedirs(out_dir, exist_ok=True)
    m_parser = MetadataParser(metadata_file)
    band_id = BAND_ID[os.path.splitext(input_raster_file)[0][-3:]].value
    platform = m_parser.get_platform()
    wavelength = WAVELENGTHS[platform][band_id]
    angles = m_parser.get_mean_angles(band_id)

    with rasterio.open(input_raster_file) as src:
        toa_reflectance = src.read(1) / REFLECTANCE_SCALING_FACTOR
        profile = src.profile
        nodata_mask = (toa_reflectance == 0)

    surface_reflectance = srem.srem(toa_reflectance=toa_reflectance,
                                    wavelength=wavelength,
                                    **angles)
    scaled_surface_reflectance = \
        surface_reflectance * REFLECTANCE_SCALING_FACTOR
    # crop values less than 1 for defining 1 as minimum value.
    scaled_surface_reflectance[scaled_surface_reflectance < 1] = 1
    scaled_surface_reflectance[nodata_mask] = 0

    profile.update(driver='GTiff', compress='deflate', nodata=0)
    with rasterio.open(output_raster_file, 'w', **profile) as dst:
        dst.write(scaled_surface_reflectance.astype(profile['dtype']),
                  indexes=1)
Beispiel #2
0
def _test_get_platform(metadata_file, expected_platform):
    m_parser = MetadataParser(metadata_file)
    platform = m_parser.get_platform()
    assert platform == expected_platform