def rename_files(files, name=None): """ Given a list of file paths for elevation files, this function will rename those files to the format required by the pyDEM package. This assumes a .tif extension. Parameters ----------- files : list A list of strings of the paths to the elevation files that will be renamed name : str (optional) Default = None. A suffix to the filename. For example <filename>_suffix.tif Notes ------ The files are renamed in the same directory as the original file locations """ for fil in files: elev_file = GdalReader(file_name=fil) elev, = elev_file.raster_layers fn = get_fn(elev, name) del elev_file del elev fn = os.path.join(os.path.split(fil)[0], fn) os.rename(fil, fn) print "Renamed", fil, "to", fn
def get_test_data(test_num, NN, testdir='testtiff'): filenames = make_file_names(test_num, NN, testdir) if not os.path.exists(filenames['elev']): make_test_files(NN, testdir=testdir, testnum=test_num) elev_file = GdalReader(file_name=filenames['elev']) elev_data, = elev_file.raster_layers ang_file = GdalReader(file_name=filenames['ang']) ang_data, = ang_file.raster_layers if not os.path.exists(filenames['fel']): cmd = ('pitremove -z "%s" -fel "%s" ' % (filenames['elev'], filenames['fel'])) taudem._run(cmd) fel_file = GdalReader(file_name=filenames['fel']) fel_data, = fel_file.raster_layers del elev_file del ang_file return elev_data, ang_data, fel_data
def fill_max_elevations(self): max_elev = {} for fn in self.edges.keys(): elev_file = GdalReader(file_name=fn) elev, = elev_file.raster_layers max_elev[fn] = np.nanmax(elev.raster_data) del elev_file # close file del elev self.max_elev = max_elev
def case_real_data(x, y, filename='N43W-72_N44W-71_elev.tif', NN=None): # def case_real_data(x, y, filename='N72W-112N73W-111_elev.tif', NN=None): if NN is None: NX, NY = x.shape NX0, NY0 = [0, 0] elif type(NN) == list: NX0, NX, NY0, NY = NN else: NX0, NX, NY0, NY = [0, NN, 0, NN] elev_file = GdalReader(file_name=filename) test_data, = elev_file.raster_layers raster = test_data.raster_data[NX0:NX, NY0:NY] del elev_file del test_data angle = -1 + 0 * raster return raster, angle
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
def __init__(self, fn, slice_, save_path, overwrite=False): self.fn = fn self.coords = parse_fn(fn) self.slice = slice_ self.save_path = save_path self.post_fn = '_' + str(slice_).replace(' ', '').replace(',', '-') # When initialized we also have to create and initialize the files # that go with this edge self.fn_coords = self.get_fn('coords') self.fn_data = self.get_fn('data') self.fn_done = self.get_fn('done') self.fn_todo = self.get_fn('todo') # Open the elevation file and strip out the coordinates, then save init # data elev_file = GdalReader(file_name=fn) elev, = elev_file.raster_layers gc = elev.grid_coordinates del elev_file # close file del elev # make sure it's closed points = np.meshgrid(gc.x_axis, gc.y_axis) coordinates = np.column_stack([pts[slice_].ravel() for pts in points]) # flip xy coordinates for regular grid interpolator coordinates = coordinates[:, ::-1] init_data = np.zeros(coordinates.shape[0], float) init_bool = np.zeros(coordinates.shape[0], bool) if not os.path.exists(self.fn_coords) and not overwrite: self.save_data(coordinates, 'coords') if not os.path.exists(self.fn_data) and not overwrite: self.save_data(init_data, 'data') if not os.path.exists(self.fn_done) and not overwrite: self.save_data(init_bool, 'done') if not os.path.exists(self.fn_todo) and not overwrite: self.save_data(~init_bool, 'todo') self.update_metrics()