示例#1
0
         xlim=box[0::2], ylim=box[1::2]).Z)
 orthoZ = np.dstack(bands).astype(float)
 if not color:
     orthoZ = np.atleast_3d(glimpse.helpers.rgb_to_gray(orthoZ))
 orthoZ[orthoZ == 0] = np.nan
 # HACK: Clip dem and ortho to same size relative to x, y min
 ij = np.minimum(dem.shape, orthoZ.shape[0:2])
 dem = dem[(dem.shape[0] - ij[0]):, :ij[1]]
 orthoZ = orthoZ[(orthoZ.shape[0] - ij[0]):, :ij[1], :]
 # Compute mask
 if viewshed_scale != 1:
     smdem = dem.copy()
     smdem.resize(viewshed_scale)
 else:
     smdem = dem
 mask = glimpse.Raster(Z=smdem.viewshed(img.cam.xyz), x=dem.xlim, y=dem.ylim)
 if viewshed_scale != 1:
     mask.resample(dem)
 mask.Z = mask.Z.astype(bool)
 mask.Z &= ~np.isnan(orthoZ[:, :, 0])
 # Copy to shared memory
 if parallel:
     dem.Z = sharedmem.copy(dem.Z)
     orthoZ = sharedmem.copy(orthoZ)
     mask.Z = sharedmem.copy(mask.Z)
 # Project onto image
 aggregate = glimpse.helpers.merge_dicts(
     {i: np.mean for i in range(orthoZ.shape[2])},
     {orthoZ.shape[2]: [np.mean, np.std]})
 I = img.cam.project_dem(
     dem=dem, values=orthoZ, mask=mask.Z,
示例#2
0
json = glimpse.helpers.read_json('observers.json',
    object_pairs_hook=collections.OrderedDict)
stations = set([station for x in json for station in x])
station_xy = np.vstack([f['geometry']['coordinates'][:, 0:2]
    for station, f in cg.Stations().items()
    if station in stations])
box = glimpse.helpers.bounding_box(cg.Glacier())
XY = glimpse.helpers.box_to_grid(box, step=(grid_size, grid_size),
    snap=(0, 0), mode='grid')
xy = glimpse.helpers.grid_to_points(XY)
distances = glimpse.helpers.pairwise_distance(xy, station_xy, metric='euclidean')
selected = distances.min(axis=1) < max_distance
box = glimpse.helpers.bounding_box(xy[selected]) + 0.5 * np.array([-1, -1, 1, 1]) * grid_size
shape = np.diff([box[1::2], box[0::2]], axis=1) / grid_size
dem_template = glimpse.Raster(np.ones(shape.astype(int).ravel(), dtype=bool),
    x=box[0::2], y=box[1::2][::-1])
dem_points = glimpse.helpers.grid_to_points((dem_template.X, dem_template.Y))

# ---- Select DEMs ----

dem_sigmas = {
    'aerometric': 1.5,
    'ifsar': 1.5 + 0.5, # additional time uncertainty
    'arcticdem': 3,
    'tandem': 3 # after bulk corrections
}
dem_keys = [
    ('20040618', 'aerometric'),
    ('20040707', 'aerometric'),
    ('20050811', 'aerometric'),
    ('20050827', 'aerometric'),
示例#3
0
names = 'vr', 'vr_stderr', 'theta', 'theta_stderr'
vr, vr_sigma, theta, theta_sigma = [glimpse.Raster.read(
    os.path.join('velocity', name + '.tif'))
    for name in names]

# ---- Load canonical bed ----
# bed

bed = glimpse.Raster.read('bed.tif')

# ---- Build track template ----

grid = glimpse.helpers.box_to_grid(dem_interpolant.means[0].box2d,
    step=grid_step, snap=(0, 0))
track_template = glimpse.Raster(np.ones(grid[0].shape, dtype=bool),
    x=grid[0], y=grid[1][::-1])
xy = glimpse.helpers.grid_to_points((track_template.X, track_template.Y))
selected = glimpse.helpers.points_in_polygon(xy, cg.Glacier())
# Filter by velocity availability
# NOTE: Use nearest to avoid NaN propagation (and on same grid anyway)
selected &= ~np.isnan(vx.sample(xy, order=0))
mask = selected.reshape(track_template.shape)
track_points = xy[mask.ravel()]
track_ids = np.ravel_multi_index(np.nonzero(mask), track_template.shape)

# Write to file
track_template.Z &= mask
track_template.Z = track_template.Z.astype(np.uint8)
track_template.write(os.path.join(cartesian_path, 'template.tif'), crs=32606)
track_template.write(os.path.join(cylindrical_path, 'template.tif'), crs=32606)
示例#4
0
from cg import glimpse
from glimpse.imports import (datetime, np, os, shapely, re, matplotlib, scipy)
import glob
root = '/volumes/science/data/columbia'

grid_step = (100, 100)  # m

# ---- Build template ----

box = glimpse.helpers.bounding_box(cg.Glacier())
x, y = glimpse.helpers.box_to_grid(box,
                                   step=grid_step,
                                   snap=(0, 0),
                                   mode='vectors')
template = glimpse.Raster(np.ones((len(y), len(x)), dtype=float),
                          x=x,
                          y=y[::-1])
points = glimpse.helpers.grid_to_points((template.X, template.Y))

# ---- Select velocity grids ----

velocity_keys = [
    ('20040618_20040707', 'aerometric'),
    ('20050811_20050827', 'aerometric'),
    ('20060712_20060727', 'aerometric'),
    ('20090803_20090827', 'aerometric'),
    ('20100525_20100602', 'aerometric'),
    ('20110211_20110222', 'terrasar'),
    ('20110222_20110305', 'terrasar'),
    ('20110305_20110316', 'terrasar'),
    ('20110316_20110327', 'terrasar'),