Пример #1
0
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
Пример #2
0
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"]])
Пример #3
0
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"])
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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]