def eocube_input_onescene(tmpdir): dataset = sampledata.get_dataset("lsts") layers_paths = [Path(p) for p in dataset["raster_files"][:4]] layers_df = pd.Series([p.stem for p in layers_paths]).str.split("_", expand=True) \ .rename({0: "sceneid", 1:"band"}, axis=1) layers_df["date"] = pd.to_datetime(layers_df.sceneid.str[9:16], format="%Y%j") layers_df[ "uname"] = layers_df.sceneid.str[:3] + "_" + layers_df.date.dt.strftime( "%Y-%m-%d") + "_" + layers_df.band.str[::] layers_df["path"] = layers_paths layers_df = layers_df.sort_values(["date", "band"]) layers_df = layers_df.reset_index(drop=True) a_tmpdir = tmpdir.mkdir("temp_dst_dir-onescene") # print(a_tmpdir) dst_paths = [ Path(a_tmpdir) / (Path(p).stem + ".vrt") for p in layers_df["path"] ] input_kwargs = { "layers_df": layers_df, "tmpdir": a_tmpdir, "dst_paths": dst_paths } return input_kwargs
def test_dataset_lsts(): ds = get_dataset("lsts") assert isinstance(ds, dict) assert len(ds["raster_files"]) == 420 assert len(ds["raster_bands"]) == 420 assert len(ds["raster_times"]) == 420 assert "b3" in ds["raster_bands"] assert "b4" in ds["raster_bands"] assert "b5" in ds["raster_bands"] assert "fmask" in ds["raster_bands"] assert "2008118" in ds["raster_times"] assert all([os.path.exists(path) for path in ds["raster_files"]])
def test_dataset_s2l1c(): ds = get_dataset("s2l1c") assert isinstance(ds, dict) assert len(ds["raster_files"]) == 13 assert len(ds["raster_bands"]) == 13 assert "B02" in ds["raster_bands"] assert len(ds["raster_times"]) == 13 assert "20170216T102101" in ds["raster_times"] assert isinstance(ds["vector_file"], str) assert isinstance(ds["vector_file_osm"], str) assert all([os.path.exists(path) for path in ds["raster_files"]]) assert os.path.exists(ds["vector_file"]) assert os.path.exists(ds["vector_file_osm"])
def extraction_input_1(tmpdir): s2l1c = get_dataset("s2l1c") src_raster = fnmatch.filter(s2l1c["raster_files"], "*T33UUU_20170216T102101_B11.jp2") src_raster += fnmatch.filter(s2l1c["raster_files"], "*T33UUU_20170216T102101_B12.jp2") input_kwargs = { "s2l1c": s2l1c, "src_vector": s2l1c["vector_file"], "burn_attribute": "pid", "src_raster": src_raster, "dst_names": ["B11", "B12"], "extracted_dir": tmpdir.mkdir("temp_dst_dir-0") } return input_kwargs
def testdata_1(tmpdir): ds = get_dataset('s2l1c') tmp_procdir = tmpdir.mkdir("temp_proc_dir") input_kwargs = { 'src_file': ds['vector_file'], 'template_file_raster': ds['raster_files'][0], 'interim_file_lines': tmp_procdir / "_interim_sample_vector_dataset_lines.shp", 'interim_file_lines_raster': tmp_procdir / "/_interim_sample_vector_dataset_lines_raster.tif", 'dst_file_proximity': tmp_procdir / "distance_to_polygon_border__vector_dataset.tif" } return input_kwargs
def eocube_input_1(tmpdir): year = 2008 dataset = sampledata.get_dataset("lsts") layers_paths = [Path(p) for p in dataset["raster_files"]] layers_df = pd.Series([p.stem for p in layers_paths]).str.split("_", expand=True) \ .rename({0: "sceneid", 1:"band"}, axis=1) layers_df["date"] = pd.to_datetime(layers_df.sceneid.str[9:16], format="%Y%j") layers_df["uname"] = layers_df.sceneid.str[:3] + "_" + layers_df.date.dt.strftime("%Y-%m-%d") + \ "_" + layers_df.band.str[::] layers_df["path"] = layers_paths layers_df = layers_df.sort_values(["date", "band"]) layers_df = layers_df.reset_index(drop=True) layers_df_year = layers_df[(layers_df.date >= str(year)) & (layers_df.date < str(year + 1))] layers_df_year = layers_df_year.reset_index(drop=True) input_kwargs = { "df_layers": layers_df_year, "tmpdir": tmpdir.mkdir("temp_dst_dir-0") } return input_kwargs
import pytest import fnmatch import os from pathlib import Path import numpy as np from eobox.sampledata import get_dataset from eobox.raster import MultiRasterIO dataset = get_dataset("s2l1c") layer_files = fnmatch.filter(dataset["raster_files"], "*B04*") layer_files += fnmatch.filter(dataset["raster_files"], "*B08*") layer_files += fnmatch.filter(dataset["raster_files"], "*B8A*") def process_ndvi(arr, idx_b04, idx_b08, idx_b8a): """A custom function for calculating an NDVI based on the two S2 NIR bands.""" import numpy as np def normalized_difference_index(arr, idx_minuend, idx_subtrahend): di = (arr[:, :, idx_minuend] - arr[:, :, idx_subtrahend]) / ( arr[:, :, idx_minuend] + arr[:, :, idx_subtrahend]) di[di > 1.0] = 1.0001 di[di < -1.0] = -1.0001 di = (di * 10000).astype(np.int16) return di ndvi_b08 = normalized_difference_index(arr, idx_b08, idx_b04) ndvi_b8a = normalized_difference_index(arr, idx_b8a, idx_b04) return [ndvi_b08, ndvi_b8a]