Пример #1
0
def test_numpy_equals_dask():
    attrs = {'res': (10.0, 10.0)}

    small_numpy_based_data_array = xr.DataArray(elevation, attrs=attrs)
    dask_data = da.from_array(elevation, chunks=(3, 3))
    small_das_based_data_array = xr.DataArray(dask_data, attrs=attrs)

    numpy_result = hillshade(small_numpy_based_data_array, name='numpy')
    dask_result = hillshade(small_das_based_data_array, name='dask')
    dask_result.data = dask_result.data.compute()

    assert np.isclose(numpy_result, dask_result, equal_nan=True).all()
Пример #2
0
def test_hillshade_gpu_equals_cpu():

    import cupy

    small_da = xr.DataArray(elevation, attrs={'res': (10.0, 10.0)})
    cpu = hillshade(small_da, name='numpy_result')

    small_da_cupy = xr.DataArray(cupy.asarray(elevation),
                                 attrs={'res': (10.0, 10.0)})
    gpu = hillshade(small_da_cupy, name='cupy_result')

    general_output_checks(small_da_cupy, gpu)
    assert np.isclose(cpu.data, gpu.data.get(), equal_nan=True).all()
Пример #3
0
def test_hillshade_gpu_equals_cpu():

    import cupy

    small_da = xr.DataArray(elevation, attrs={'res': (10.0, 10.0)})
    cpu = hillshade(small_da, name='numpy_result')

    small_da_cupy = xr.DataArray(cupy.asarray(elevation), attrs={'res': (10.0, 10.0)})
    gpu = hillshade(small_da_cupy, name='cupy_result')

    assert isinstance(gpu.data, cupy.ndarray)

    assert np.isclose(cpu, gpu, equal_nan=True).all()
Пример #4
0
def test_hillshade_cpu():
    attrs = {'res': (10.0, 10.0)}

    small_numpy_based_data_array = xr.DataArray(elevation, attrs=attrs)
    numpy_result = hillshade(small_numpy_based_data_array, name='numpy')

    dask_data = da.from_array(elevation, chunks=(3, 3))
    small_das_based_data_array = xr.DataArray(dask_data, attrs=attrs)
    dask_result = hillshade(small_das_based_data_array, name='dask')

    general_output_checks(small_das_based_data_array, dask_result)
    np.testing.assert_allclose(numpy_result.data,
                               dask_result.data.compute(),
                               equal_nan=True)
Пример #5
0
def create_map2():

    global cvs
    global terrain
    global water
    global trees

    img = stack(shade(terrain, cmap=['black', 'white'], how='linear'))

    yield img.to_pil()

    img = stack(shade(terrain, cmap=Elevation, how='linear'))

    yield img.to_pil()

    img = stack(
        shade(terrain, cmap=Elevation, how='linear'),
        shade(hillshade(terrain, azimuth=210),
              cmap=['black', 'white'],
              how='linear',
              alpha=128),
    )

    yield img.to_pil()

    img = stack(
        shade(terrain, cmap=Elevation, how='linear'),
        shade(water, cmap=['aqua', 'white']),
        shade(hillshade(terrain, azimuth=210),
              cmap=['black', 'white'],
              how='linear',
              alpha=128),
    )

    yield img.to_pil()

    img = stack(
        shade(terrain, cmap=Elevation, how='linear'),
        shade(water, cmap=['aqua', 'white']),
        shade(hillshade(terrain + trees, azimuth=210),
              cmap=['black', 'white'],
              how='linear',
              alpha=128), shade(tree_colorize, cmap='limegreen', how='linear'))

    yield img.to_pil()
    yield img.to_pil()
    yield img.to_pil()
    yield img.to_pil()
Пример #6
0
def test_hillshade():
    """
    Assert Simple Hillshade transfer function
    """
    da_gaussian = xr.DataArray(data_gaussian)
    da_gaussian_shade = hillshade(da_gaussian, name='hillshade_agg')
    general_output_checks(da_gaussian, da_gaussian_shade)
    assert da_gaussian_shade.name == 'hillshade_agg'
    assert da_gaussian_shade.mean() > 0
    assert da_gaussian_shade[60, 60] > 0
Пример #7
0
def test_hillshade():
    """
    Assert Simple Hillshade transfer function
    """
    da_gaussian = xr.DataArray(data_gaussian)
    da_gaussian_shade = hillshade(da_gaussian)
    assert da_gaussian_shade.dims == da_gaussian.dims
    assert da_gaussian_shade.coords == da_gaussian.coords
    assert da_gaussian_shade.attrs == da_gaussian.attrs
    assert da_gaussian_shade.mean() > 0
    assert da_gaussian_shade[60, 60] > 0
Пример #8
0
def test_hillshade():
    """
    Assert Simple Hillshade transfer function
    """
    da_gaussian = xr.DataArray(data_gaussian)
    da_gaussian_shade = hillshade(da_gaussian, name='hillshade_agg')
    assert da_gaussian_shade.dims == da_gaussian.dims
    assert da_gaussian_shade.attrs == da_gaussian.attrs
    assert da_gaussian_shade.name == 'hillshade_agg'
    for coord in da_gaussian.coords:
        assert np.all(da_gaussian_shade[coord] == da_gaussian[coord])
    assert da_gaussian_shade.mean() > 0
    assert da_gaussian_shade[60, 60] > 0
Пример #9
0
def test_hillshade_rtx_with_shadows(data_gaussian):
    import cupy

    tall_gaussian = 400 * data_gaussian
    cpu = hillshade(xr.DataArray(tall_gaussian))

    tall_gaussian = cupy.asarray(tall_gaussian)
    rtx = hillshade(xr.DataArray(tall_gaussian))
    rtx.data = cupy.asnumpy(rtx.data)

    assert cpu.shape == rtx.shape
    nhalf = cpu.shape[0] // 2

    # Quadrant nearest sun direction should be almost identical.
    quad_cpu = cpu.data[nhalf::, ::nhalf]
    quad_rtx = cpu.data[nhalf::, ::nhalf]
    assert_allclose(quad_cpu, quad_rtx, atol=0.03)

    # Opposite diagonal should be in shadow.
    diag_cpu = np.diagonal(cpu.data[::-1])[nhalf:]
    diag_rtx = np.diagonal(rtx.data[::-1])[nhalf:]
    assert_array_less(diag_rtx, diag_cpu + 1e-3)
Пример #10
0
def hillshade(ds, groupby=None, elev_var='topography__elevation', **kwargs):
    elev = ds[elev_var]

    if groupby is not None:
        # TODO: use shortcut=True
        # https://github.com/holoviz/datashader/issues/871
        hshade = elev.groupby(groupby).apply(xrspatial.hillshade,
                                             shortcut=False,
                                             **kwargs)
    else:
        hshade = xrspatial.hillshade(elev, **kwargs)

    return hshade
Пример #11
0
def test_numpy_equals_dask():

    # input data
    data = np.asarray(
        [[1432.6542, 1432.4764, 1432.4764, 1432.1207, 1431.9429, np.nan],
         [1432.6542, 1432.6542, 1432.4764, 1432.2986, 1432.1207, np.nan],
         [1432.832, 1432.6542, 1432.4764, 1432.2986, 1432.1207, np.nan],
         [1432.832, 1432.6542, 1432.4764, 1432.4764, 1432.1207, np.nan],
         [1432.832, 1432.6542, 1432.6542, 1432.4764, 1432.2986, np.nan],
         [1432.832, 1432.6542, 1432.6542, 1432.4764, 1432.2986, np.nan],
         [1432.832, 1432.832, 1432.6542, 1432.4764, 1432.4764, np.nan]],
        dtype=np.float32)

    attrs = {'res': (10.0, 10.0)}

    small_numpy_based_data_array = xr.DataArray(data, attrs=attrs)
    dask_data = da.from_array(data, chunks=(3, 3))
    small_das_based_data_array = xr.DataArray(dask_data, attrs=attrs)

    numpy_result = hillshade(small_numpy_based_data_array, name='numpy')
    dask_result = hillshade(small_das_based_data_array, name='dask')
    dask_result.data = dask_result.data.compute()

    assert np.isclose(numpy_result, dask_result, equal_nan=True).all()
Пример #12
0
def create_map(azimuth):

    global cvs
    global terrain
    global water
    global trees

    img = stack(
        shade(terrain, cmap=Elevation, how='linear'),
        shade(water, cmap=['aqua', 'white']),
        shade(hillshade(terrain + trees, azimuth=azimuth),
              cmap=['black', 'white'],
              how='linear',
              alpha=128), shade(tree_colorize, cmap='limegreen', how='linear'))

    print('image created')

    return img.to_pil()
def test_hillshade():
    """
    Assert Simple Hillshade transfer function
    """
    da_gaussian = xr.DataArray(data_gaussian)

    # add crs for tests
    da_gaussian = _add_EPSG4326_crs_to_da(da_gaussian)

    da_gaussian_shade = hillshade(da_gaussian, name='hillshade_agg')

    # test preservation of attrs and coords, including crs
    assert da_gaussian_shade.dims == da_gaussian.dims
    assert da_gaussian_shade.attrs == da_gaussian.attrs
    assert da_gaussian_shade.name == 'hillshade_agg'
    for coord in da_gaussian.coords:
        assert np.all(da_gaussian_shade[coord] == da_gaussian[coord])
    assert da_gaussian_shade.mean() > 0
    assert da_gaussian_shade[60, 60] > 0
Пример #14
0
 def time_hillshade(self, nx, type):
     shadows = (type == "rtxpy")
     hillshade(self.xr, shadows=shadows)