Exemplo n.º 1
0
def fp(size1, scale1, offset1, offset_factor2):
    tl = TIF_FP.tl + [offset1, offset1] * np.asarray(offset_factor2)
    size = [size1, size1]
    rsize = (size / np.asarray(scale1)).astype(int)
    assert (size == rsize * scale1).all()
    fp = Footprint(tl=tl, size=size, rsize=np.abs(rsize))
    return fp
Exemplo n.º 2
0
def rast(ds, driver, band_count, dtype, src_nodata):
    """Fixture for the datasource creation"""
    fp = Footprint(
        tl=(100, 110), size=(10, 10), rsize=(10, 10)
    )
    if driver == 'numpy':
        rast = ds.awrap_numpy_raster(
            fp,
            np.empty(np.r_[fp.shape, band_count], dtype=dtype),
            band_schema=dict(nodata=src_nodata),
            sr=None,
            mode='w',
        )
    elif driver == 'MEM':
        rast = ds.acreate_raster(
            '', fp, dtype, band_count, band_schema=dict(nodata=src_nodata), driver='MEM',
        )
    else:
        path = '{}/{}.tif'.format(tempfile.gettempdir(), uuid.uuid4())
        rast = ds.acreate_raster(
            path, fp, dtype, band_count, band_schema=dict(nodata=src_nodata), driver=driver
        )
    yield rast
    if driver in {'numpy', 'MEM'}:
        rast.close()
    else:
        rast.delete()
Exemplo n.º 3
0
 def _footprint_of_letters(letters):
     tl = tl_of_letter[letters[0]]
     br = br_of_letter[letters[-1]]
     diagvec = br - tl
     fp = Footprint(
         tl=tl, size=np.abs(diagvec), rsize=(diagvec / reso)
     )
     return fp
Exemplo n.º 4
0
    'cv_nearest': 0,
    'cv_cubic': 1, # Massive spikes near borders. Nodata holes near topleft borders.
    'cv_lanczos4': 3, # Nodata holes near topleft borders.
}
INTERPOLATIONS_OUTSIDE_UNCERTAINTY_BORDER = {
    'cv_area': 1,
    'cv_linear': 1,
    'cv_nearest': 2,
    'cv_cubic': 2,
    'cv_lanczos4': 2,
}

# CONSTANTS - TIF GENERATION ******************************************************************** **
TIF_NODATA = 200
TIF_FP = Footprint(
    tl=(100, 110), size=(10, 10), rsize=(10, 10)
)
TIF_VALUES = np.add(*TIF_FP.meshgrid_raster).astype('float32')
TIF_VALUES[:1] = TIF_NODATA
TIF_VALUES[:, :2] = TIF_NODATA

XS, YS = TIF_FP.meshgrid_spatial
TIF_DATAMASK = TIF_VALUES != TIF_NODATA
TIF_DATA_MAXY = YS[TIF_DATAMASK].max()
TIF_DATA_MINY = YS[TIF_DATAMASK].min()
TIF_DATA_MAXX = XS[TIF_DATAMASK].max()
TIF_DATA_MINX = XS[TIF_DATAMASK].min()
TIF_MAXY = YS.max()
TIF_MINY = YS.min()
TIF_MAXX = XS.max()
TIF_MINX = XS.min()
Exemplo n.º 5
0
    'MEM': True,
}

TESTS = [

    dict( # Classic dsm
        subtests=[
            dict(driver='GTiff', ext='.tif', options=[]),
            dict(driver='MEM', options=[]),
            dict(driver='numpy'),
        ],
        dtype='float32',
        band_count=1,
        band_schema= {'nodata': [-32767]},
        sr=SR1['wkt'],
        fp=Footprint(tl=(0, 10), size=(10, 10), rsize=(30, 30)),
    ),

    dict( # Classic rgb
        subtests=[
            dict(driver='GTiff', ext='.tif', options=[]),
            dict(driver='MEM', options=[]),
            dict(driver='numpy'),
        ],
        dtype='uint8',
        band_count=3,
        band_schema= {},
        sr=SR1['wkt'],
        fp=Footprint(tl=(0, 10), size=(10, 10), rsize=(30, 30)),
    ),
def queryfp(tl, size, reso):
    rsize = (size / reso).astype(int)
    assert (size == rsize * reso).all()
    fp = Footprint(tl=tl, size=size, rsize=np.abs(rsize))
    return fp
from buzzard.test import tools

LOGGER = logging.getLogger('buzzard')

# CONSTANTS - TEST ********************************************************** **
READ_TOL = 0.032  # Tolerance in adjacent differences differences
WRITE_TOL = 0.7  # Tolerance in adjacent differences differences
PRECISION = 6

# CONSTANTS - TIF GENERATION ************************************************ **
TIF_NODATA = -99
TIF_SIDE = 10
TIF_NODATA_BORDER_SIZE = (2, 0, 1, 0)

TIF_FP = (Footprint(tl=(100 + 0, 100 + TIF_SIDE),
                    size=(TIF_SIDE, TIF_SIDE),
                    rsize=(TIF_SIDE, TIF_SIDE)))
TIF_DATA_START_LEFT = np.around(
    TIF_FP.lx + TIF_NODATA_BORDER_SIZE[0] * TIF_FP.pxvec[0], PRECISION)
TIF_DATA_LAST_RIGHT = (np.around(
    TIF_FP.rx - (TIF_NODATA_BORDER_SIZE[1] + 1.) * TIF_FP.pxvec[0], PRECISION))
TIF_DATA_START_TOP = (np.around(
    TIF_FP.ty + TIF_NODATA_BORDER_SIZE[2] * TIF_FP.pxvec[1], PRECISION))
TIF_DATA_LAST_BOTTOM = (np.around(
    TIF_FP.by - (TIF_NODATA_BORDER_SIZE[3] + 1.) * TIF_FP.pxvec[1], PRECISION))

# CONSTANTS - CORNERS DEFINITION ******************************************** **
Corner = collections.namedtuple('Corner', ['name', 'x', 'y', 'offset_sign'])
TL_CORNER = Corner('tl', TIF_FP.tlx, TIF_FP.tly, np.array([1., -1.]))
ALL_CORNERS = [
    TL_CORNER,