def test_gen_test_image_xy(): gbox = GeoBox(3, 7, Affine.translation(10, 1000), epsg3857) xy, denorm = gen_test_image_xy(gbox, 'float64') assert xy.dtype == 'float64' assert xy.shape == (2, ) + gbox.shape x, y = denorm(xy) x_, y_ = xy_from_gbox(gbox) np.testing.assert_almost_equal(x, x_) np.testing.assert_almost_equal(y, y_) xy, denorm = gen_test_image_xy(gbox, 'uint16') assert xy.dtype == 'uint16' assert xy.shape == (2, ) + gbox.shape x, y = denorm(xy[0], xy[1]) assert x.shape == xy.shape[1:] assert y.shape == xy.shape[1:] assert x.dtype == 'float64' x_, y_ = xy_from_gbox(gbox) np.testing.assert_almost_equal(x, x_, 4) np.testing.assert_almost_equal(y, y_, 4) for dt in ('int8', np.int16, np.dtype(np.uint64)): xy, _ = gen_test_image_xy(gbox, dt) assert xy.dtype == dt # check no-data xy, denorm = gen_test_image_xy(gbox, 'float32') assert xy.dtype == 'float32' assert xy.shape == (2, ) + gbox.shape xy[0, 0, :] = np.nan xy[1, 1, :] = np.nan xy_ = denorm(xy, nodata=np.nan) assert np.isnan(xy_[:, :2]).all() np.testing.assert_almost_equal(xy_[0][2:], x_[2:], 6) np.testing.assert_almost_equal(xy_[1][2:], y_[2:], 6) xy, denorm = gen_test_image_xy(gbox, 'int16') assert xy.dtype == 'int16' assert xy.shape == (2, ) + gbox.shape xy[0, 0, :] = -999 xy[1, 1, :] = -999 xy_ = denorm(xy, nodata=-999) assert np.isnan(xy_[:, :2]).all() np.testing.assert_almost_equal(xy_[0][2:], x_[2:], 4) np.testing.assert_almost_equal(xy_[1][2:], y_[2:], 4) # call without arguments should return linear mapping A = denorm() assert isinstance(A, Affine)
def test_xy_from_geobox(): gbox = GeoBox(3, 7, Affine.translation(10, 1000), epsg3857) xx, yy = xy_from_gbox(gbox) assert xx.shape == gbox.shape assert yy.shape == gbox.shape assert (xx[:, 0] == 10.5).all() assert (xx[:, 1] == 11.5).all() assert (yy[0, :] == 1000.5).all() assert (yy[6, :] == 1006.5).all() xx_, yy_, A = xy_norm(xx, yy) assert xx_.shape == xx.shape assert yy_.shape == yy.shape np.testing.assert_almost_equal((xx_.min(), xx_.max()), (0, 1)) np.testing.assert_almost_equal((yy_.min(), yy_.max()), (0, 1)) assert (xx_[0] - xx_[1]).sum() != 0 assert (xx_[:, 0] - xx_[:, 1]).sum() != 0 XX, YY = apply_affine(A, xx_, yy_) np.testing.assert_array_almost_equal(xx, XX) np.testing.assert_array_almost_equal(yy, YY)