Exemple #1
0
def make_elev_ang(testnum, NN, raster, angle, uca=None, testdir='testtiff'):
    # Convert masked array to filled array
    raster = raster.filled()
    angle = angle.filled()
    filename = make_file_names(testnum, NN, testdir)
    try:
        if not os.path.exists(testdir):
            os.makedirs(testdir)
        if not os.path.exists(filename['elev']):
            elev, driver = mk_geotiff_obj(raster, filename['elev'])
            del driver
            del elev
            print "Created", filename['elev']
            ang, driver = mk_geotiff_obj(angle, filename['ang'])
            del ang
            del driver
            print "Created", filename['ang']
        if not os.path.exists(filename['uca']) and uca is not None:
            ucaf, driver = mk_geotiff_obj(uca, filename['uca'])
            del ucaf
            del driver
            print "Created", filename['uca']
        else:
            print "Already exists or None", filename['uca']
    finally:
        ucaf = None
        elev = None
        ang = None
        driver = None
Exemple #2
0
def make_elev_ang(testnum, NN, raster, angle, uca=None, testdir='testtiff'):
    # Convert masked array to filled array
    raster = raster.filled()
    angle = angle.filled()
    filename = make_file_names(testnum, NN, testdir)
    try:
        if not os.path.exists(testdir):
            os.makedirs(testdir)
        if not os.path.exists(filename['elev']):
            elev, driver = mk_geotiff_obj(raster, filename['elev'])
            del driver
            del elev
            print "Created", filename['elev']
            ang, driver = mk_geotiff_obj(angle, filename['ang'])
            del ang
            del driver
            print "Created", filename['ang']
        if not os.path.exists(filename['uca']) and uca is not None:
            ucaf, driver = mk_geotiff_obj(uca, filename['uca'])
            del ucaf
            del driver
            print "Created", filename['uca']
        else:
            print "Already exists or None", filename['uca']
    finally:
        ucaf = None
        elev = None
        ang = None
        driver = None
Exemple #3
0
def mk_test_multifile(testnum, NN, testdir, nx_grid=3, ny_grid=4, nx_overlap=16,
                      ny_overlap=32, lat=[46, 45], lon=[-73, -72]):
    """
    Written to make test case for multi-file edge resolution.
    """
    path = os.path.split(make_file_names(testnum, NN, os.path.join(
                                               testdir, 'chunks'))['elev'])[0]
    try:
        os.makedirs(path)
    except:
        pass

    def _get_chunk_edges(NN, chunk_size, chunk_overlap):
        left_edge = np.arange(0, NN - chunk_overlap, chunk_size)
        left_edge[1:] -= chunk_overlap
        right_edge = np.arange(0, NN - chunk_overlap, chunk_size)
        right_edge[:-1] = right_edge[1:] + chunk_overlap
        right_edge[-1] = NN
        right_edge = np.minimum(right_edge, NN)
        return left_edge, right_edge

    elev_data, ang_data, fel_data = get_test_data(testnum, NN)
    try:
        raster = fel_data.raster_data
    except:
        raster = elev_data.raster_data

    ni, nj = raster.shape

    top_edge, bottom_edge = _get_chunk_edges(ni, ni // ny_grid, ny_overlap)
    left_edge, right_edge = _get_chunk_edges(nj, nj // nx_grid, nx_overlap)

#    gc = elev_data.grid_coordinates
#    lat = gc.y_axis
#    lon = gc.x_axis
    lat = np.linspace(lat[0], lat[1], ni)
    lon = np.linspace(lon[0], lon[1], nj)
    count = 0
    for te, be in zip(top_edge, bottom_edge):
        for le, re in zip(left_edge, right_edge):
            count += 1
            fn = os.path.join(path,
                              get_fn_from_coords((lat[be-1], lon[le], lat[te],
                                                  lon[re-1]), 'elev'))
            print count, ": [%d:%d, %d:%d]" % (te, be, le, re), \
                '(lat, lon) = (%g to %g, %g to %g)' % (lat[te], lat[be-1],
                                                       lon[le], lon[re-1]), \
                'min,max = (%g to %g, %g to %g)' % (lat.min(), lat.max(),
                                                    lon.min(), lon.max())
            mk_geotiff_obj(raster[te:be, le:re], fn,
                           bands=1, gdal_data_type=gdal.GDT_Float32,
                           lat=[lat[te], lat[be-1]], lon=[lon[le], lon[re-1]])
Exemple #4
0
def mk_test_multifile(testnum, NN, testdir, nx_grid=3, ny_grid=4, nx_overlap=16,
                      ny_overlap=32, lat=[46, 45], lon=[-73, -72]):
    """
    Written to make test case for multi-file edge resolution.
    """
    path = os.path.split(make_file_names(testnum, NN, os.path.join(
                                               testdir, 'chunks'))['elev'])[0]
    try:
        os.makedirs(path)
    except:
        pass

    def _get_chunk_edges(NN, chunk_size, chunk_overlap):
        left_edge = np.arange(0, NN - chunk_overlap, chunk_size)
        left_edge[1:] -= chunk_overlap
        right_edge = np.arange(0, NN - chunk_overlap, chunk_size)
        right_edge[:-1] = right_edge[1:] + chunk_overlap
        right_edge[-1] = NN
        right_edge = np.minimum(right_edge, NN)
        return left_edge, right_edge

    elev_data, ang_data, fel_data = get_test_data(testnum, NN)
    try:
        raster = fel_data.raster_data
    except:
        raster = elev_data.raster_data

    ni, nj = raster.shape

    top_edge, bottom_edge = _get_chunk_edges(ni, ni // ny_grid, ny_overlap)
    left_edge, right_edge = _get_chunk_edges(nj, nj // nx_grid, nx_overlap)

#    gc = elev_data.grid_coordinates
#    lat = gc.y_axis
#    lon = gc.x_axis
    lat = np.linspace(lat[0], lat[1], ni)
    lon = np.linspace(lon[0], lon[1], nj)
    count = 0
    for te, be in zip(top_edge, bottom_edge):
        for le, re in zip(left_edge, right_edge):
            count += 1
            fn = os.path.join(path,
                              get_fn_from_coords((lat[be-1], lon[le], lat[te],
                                                  lon[re-1]), 'elev'))
            print count, ": [%d:%d, %d:%d]" % (te, be, le, re), \
                '(lat, lon) = (%g to %g, %g to %g)' % (lat[te], lat[be-1],
                                                       lon[le], lon[re-1]), \
                'min,max = (%g to %g, %g to %g)' % (lat.min(), lat.max(),
                                                    lon.min(), lon.max())
            mk_geotiff_obj(raster[te:be, le:re], fn,
                           bands=1, gdal_data_type=gdal.GDT_Float32,
                           lat=[lat[te], lat[be-1]], lon=[lon[le], lon[re-1]])
Exemple #5
0
def mk_xy_latlon(N):
    raster = np.zeros((N, N))
    if os.path.exists('temp.tif'):
        os.remove('temp.tif')
    obj, driver = mk_geotiff_obj(raster, 'temp.tif')
    del obj
    del driver
    obj = GdalReader(file_name='temp.tif').raster_layers[0]
    dx, dy = mk_dx_dy_from_geotif_layer(obj)
    del obj
    os.remove('temp.tif')
    y = np.concatenate([[0], np.cumsum(dx)])
    x = np.concatenate([[0], np.cumsum(dy)])
    # Center it on zero
    x = x - (x.max() - x.min()) / 2.0
    y = y - (y.max() - y.min()) / 2.0
    scale = np.sqrt(x**2 + y**2).max()
    x = x / scale
    y = y / scale
    Y, X = np.meshgrid(y, x)

    return X, Y
Exemple #6
0
def mk_xy_latlon(N):
    raster = np.zeros((N, N))
    if os.path.exists('temp.tif'):
        os.remove('temp.tif')
    obj, driver = mk_geotiff_obj(raster, 'temp.tif')
    del obj
    del driver
    obj = GdalReader(file_name='temp.tif').raster_layers[0]
    dx, dy = mk_dx_dy_from_geotif_layer(obj)
    del obj
    os.remove('temp.tif')
    y = np.concatenate([[0], np.cumsum(dx)])
    x = np.concatenate([[0], np.cumsum(dy)])
    # Center it on zero
    x = x - (x.max() - x.min()) / 2.0
    y = y - (y.max() - y.min()) / 2.0
    scale = np.sqrt(x**2 + y**2).max()
    x = x / scale
    y = y / scale
    Y, X = np.meshgrid(y, x)

    return X, Y