def atmos( ctx, atmo, contrast, bias, jobs, out_dtype, src_path, dst_path, creation_options, as_color, ): """Atmospheric correction """ if as_color: click.echo("rio color {} {} {}".format( src_path, dst_path, simple_atmo_opstring(atmo, contrast, bias))) exit(0) with rasterio.open(src_path) as src: opts = src.profile.copy() windows = [(window, ij) for ij, window in src.block_windows()] opts.update(**creation_options) opts["transform"] = guard_transform(opts["transform"]) out_dtype = out_dtype if out_dtype else opts["dtype"] opts["dtype"] = out_dtype args = { "atmo": atmo, "contrast": contrast, "bias": bias, "out_dtype": out_dtype } jobs = check_jobs(jobs) if jobs > 1: with riomucho.RioMucho( [src_path], dst_path, atmos_worker, windows=windows, options=opts, global_args=args, mode="manual_read", ) as mucho: mucho.run(jobs) else: with rasterio.open(dst_path, "w", **opts) as dest: with rasterio.open(src_path) as src: rasters = [src] for window, ij in windows: arr = atmos_worker(rasters, window, ij, args) dest.write(arr, window=window)
def atmos(ctx, atmo, contrast, bias, jobs, out_dtype, src_path, dst_path, creation_options, as_color): """Atmospheric correction """ if as_color: click.echo("rio color {} {} {}".format( src_path, dst_path, simple_atmo_opstring(atmo, contrast, bias))) exit(0) with rasterio.open(src_path) as src: opts = src.profile.copy() windows = [(window, ij) for ij, window in src.block_windows()] opts.update(**creation_options) opts['transform'] = guard_transform(opts['transform']) out_dtype = out_dtype if out_dtype else opts['dtype'] opts['dtype'] = out_dtype args = { 'atmo': atmo, 'contrast': contrast, 'bias': bias, 'out_dtype': out_dtype } jobs = check_jobs(jobs) if jobs > 1: with riomucho.RioMucho( [src_path], dst_path, atmos_worker, windows=windows, options=opts, global_args=args, mode="manual_read" ) as mucho: mucho.run(jobs) else: with rasterio.open(dst_path, 'w', **opts) as dest: with rasterio.open(src_path) as src: rasters = [src] for window, ij in windows: arr = atmos_worker(rasters, window, ij, args) dest.write(arr, window=window)
def test_simple_atmos_opstring(arr): x = simple_atmo(arr, 0.03, 10, 0.15) ops = simple_atmo_opstring(0.03, 10, 0.15) for op in parse_operations(ops): arr = op(arr) assert np.allclose(x, arr)