Python osgeo.gdal.Dataset() Examples
The following are 30
code examples of osgeo.gdal.Dataset().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
osgeo.gdal
, or try the search function
.
Example #1
Source File: utils.py From unmixing with MIT License | 6 votes |
def spectra_at_xy(rast, xy, gt=None, wkt=None, dd=False): ''' Returns the spectral profile of the pixels indicated by the longitude- latitude pairs provided. Arguments: rast A gdal.Dataset or NumPy array xy An array of X-Y (e.g., longitude-latitude) pairs gt A GDAL GeoTransform tuple; ignored for gdal.Dataset wkt Well-Known Text projection information; ignored for gdal.Dataset dd Interpret the longitude-latitude pairs as decimal degrees Returns a (q x p) array of q endmembers with p bands. ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): gt = rast.GetGeoTransform() wkt = rast.GetProjection() rast = rast.ReadAsArray() # You would think that transposing the matrix can't be as fast as # transposing the coordinate pairs, however, it is. return spectra_at_idx(rast.transpose(), xy_to_pixel(xy, gt=gt, wkt=wkt, dd=dd))
Example #2
Source File: vector.py From wradlib with MIT License | 6 votes |
def ogr_copy_layer(src_ds, index, dst_ds, reset=True): """ Copy OGR.Layer object. Copy OGR.Layer object from src_ds gdal.Dataset to dst_ds gdal.Dataset Parameters ---------- src_ds : gdal.Dataset object index : int layer index dst_ds : gdal.Dataset object reset : bool if True resets src_layer """ # get and copy src geometry layer src_lyr = src_ds.GetLayerByIndex(index) if reset: src_lyr.ResetReading() src_lyr.SetSpatialFilter(None) src_lyr.SetAttributeFilter(None) dst_ds.CopyLayer(src_lyr, src_lyr.GetName())
Example #3
Source File: raster.py From wradlib with MIT License | 6 votes |
def raster_to_polyvert(dataset): """Get raster polygonal vertices from gdal dataset. Parameters ---------- dataset : gdal.Dataset raster image with georeferencing (GeoTransform at least) Returns ------- polyvert : :class:`numpy:numpy.ndarray` A N-d array of polygon vertices with shape (..., 5, 2). """ rastercoords = read_gdal_coordinates(dataset, mode="edge") polyvert = georef.grid_to_polyvert(rastercoords) return polyvert
Example #4
Source File: gdal.py From wradlib with MIT License | 6 votes |
def open_raster(filename, driver=None): """Open raster file, return gdal.Dataset Parameters ---------- filename : string raster file name driver : string gdal driver string Returns ------- dataset : gdal.Dataset dataset """ dataset = gdal.OpenEx(filename) if driver: gdal.GetDriverByName(driver) return dataset
Example #5
Source File: image.py From solaris with Apache License 2.0 | 6 votes |
def get_geo_transform(raster_src): """Get the geotransform for a raster image source. Arguments --------- raster_src : str, :class:`rasterio.DatasetReader`, or `osgeo.gdal.Dataset` Path to a raster image with georeferencing data to apply to `geom`. Alternatively, an opened :class:`rasterio.Band` object or :class:`osgeo.gdal.Dataset` object can be provided. Required if not using `affine_obj`. Returns ------- transform : :class:`affine.Affine` An affine transformation object to the image's location in its CRS. """ if isinstance(raster_src, str): affine_obj = rasterio.open(raster_src).transform elif isinstance(raster_src, rasterio.DatasetReader): affine_obj = raster_src.transform elif isinstance(raster_src, gdal.Dataset): affine_obj = Affine.from_gdal(*raster_src.GetGeoTransform()) return affine_obj
Example #6
Source File: shared.py From PyRate with Apache License 2.0 | 5 votes |
def __init__(self, path: Union[gdal.Dataset, str]): if isinstance(path, gdal.Dataset): self.dataset = path # path will be Dataset in this case self.data_path = self.dataset # data_path dummy self.add_geographic_data() else: self.data_path = path self.dataset = None # for GDAL dataset obj self._readonly = not os.access(path, os.R_OK | os.W_OK) if self._readonly is None: raise NotImplementedError # os.access() has failed?
Example #7
Source File: gdal_python.py From PyRate with Apache License 2.0 | 5 votes |
def gdal_average(dst_ds, src_ds, src_ds_mem, thresh): """ Perform subsampling of an image by averaging values :param gdal.Dataset dst_ds: Destination gdal dataset object :param str input_tif: Input geotif :param float thresh: NaN fraction threshold :return resampled_average: resampled image data :rtype: ndarray :return src_ds_mem: Modified in memory src_ds with nan_fraction in Band2. The nan_fraction is computed efficiently here in gdal in the same step as the that of the resampled average (band 1). This results is huge memory and computational efficiency :rtype: gdal.Dataset """ src_gt = src_ds.GetGeoTransform() src_ds_mem.SetGeoTransform(src_gt) data = src_ds_mem.GetRasterBand(1).ReadAsArray() # update nan_matrix # if data==nan, then 1, else 0 nan_matrix = np.isnan(data) # all nans due to phase data + coh masking if used src_ds_mem.GetRasterBand(2).WriteArray(nan_matrix) gdal.ReprojectImage(src_ds_mem, dst_ds, '', '', gdal.GRA_Average) # dst_ds band2 average is our nan_fraction matrix nan_frac = dst_ds.GetRasterBand(2).ReadAsArray() resampled_average = dst_ds.GetRasterBand(1).ReadAsArray() resampled_average[nan_frac >= thresh] = np.nan return resampled_average, src_ds_mem
Example #8
Source File: gdal_python.py From PyRate with Apache License 2.0 | 5 votes |
def coherence_masking(input_gdal_dataset: Dataset, coherence_file_path: str, coherence_thresh: float) -> None: """Perform coherence masking on raster in-place. Based on gdal_calc formula provided by Nahidul: gdal_calc.py -A 20151127-20151209_VV_8rlks_flat_eqa.cc.tif -B 20151127-20151209_VV_8rlks_eqa.unw.tif --outfile=test_v1.tif --calc="B*(A>=0.8)-999*(A<0.8)" --NoDataValue=-999 """ coherence_ds = gdal.Open(coherence_file_path, gdalconst.GA_ReadOnly) coherence_band = coherence_ds.GetRasterBand(1) src_band = input_gdal_dataset.GetRasterBand(1) ndv = np.nan coherence = coherence_band.ReadAsArray() src = src_band.ReadAsArray() var = {"coh": coherence, "src": src, "t": coherence_thresh, "ndv": ndv} formula = "where(coh>=t, src, ndv)" res = ne.evaluate(formula, local_dict=var) src_band.WriteArray(res) # update metadata input_gdal_dataset.GetRasterBand(1).SetNoDataValue(ndv) input_gdal_dataset.FlushCache() # write on the disc log.info(f"Applied coherence masking using coh file {coherence_file_path}")
Example #9
Source File: shared.py From PyRate with Apache License 2.0 | 5 votes |
def num_cells(self): """ Total number of pixels in raster dataset """ if self.is_open: return self.dataset.RasterXSize * self.dataset.RasterYSize else: raise RasterException('Dataset not open')
Example #10
Source File: vector.py From wradlib with MIT License | 5 votes |
def ogr_add_feature(ds, src, name=None): """ Creates OGR.Feature objects in OGR.Layer object. OGR.Features are built from numpy src points or polygons. OGR.Features 'FID' and 'index' corresponds to source data element Parameters ---------- ds : gdal.Dataset object src : :func:`numpy:numpy.array` source data name : string name of wanted Layer """ if name is not None: lyr = ds.GetLayerByName(name) else: lyr = ds.GetLayer() defn = lyr.GetLayerDefn() geom_name = ogr.GeometryTypeToName(lyr.GetGeomType()) fields = [defn.GetFieldDefn(i).GetName() for i in range(defn.GetFieldCount())] feat = ogr.Feature(defn) for index, src_item in enumerate(src): geom = numpy_to_ogr(src_item, geom_name) if "index" in fields: feat.SetField("index", index) feat.SetGeometry(geom) lyr.CreateFeature(feat)
Example #11
Source File: test_shared.py From PyRate with Apache License 2.0 | 5 votes |
def test_open(self): self.assertTrue(self.ifg.dataset is None) self.assertTrue(self.ifg.is_open is False) self.ifg.open(readonly=True) self.assertTrue(self.ifg.dataset is not None) self.assertTrue(self.ifg.is_open is True) self.assertTrue(isinstance(self.ifg.dataset, Dataset)) # ensure open cannot be called twice self.assertRaises(RasterException, self.ifg.open, True)
Example #12
Source File: gdal.py From wradlib with MIT License | 5 votes |
def open_vector(filename, driver=None, layer=0): """Open vector file, return gdal.Dataset and OGR.Layer .. warning:: dataset and layer have to live in the same context, if dataset is deleted all layer references will get lost Parameters ---------- filename : string vector file name driver : string gdal driver string layer : int or string Returns ------- dataset : gdal.Dataset dataset layer : ogr.Layer layer """ dataset = gdal.OpenEx(filename) if driver: gdal.GetDriverByName(driver) layer = dataset.GetLayer(layer) return dataset, layer
Example #13
Source File: test_shared.py From PyRate with Apache License 2.0 | 5 votes |
def test_open_ifg_from_dataset(self): """ Test showing open() can not be used for Ifg created with gdal.Dataset object as Dataset has already been read in """ paths = [self.ifg.data_path] headers = [self.header] mlooked_phase_data = prepifg_helper.prepare_ifgs(paths, crop_opt=prepifg_helper.ALREADY_SAME_SIZE, xlooks=2, ylooks=2, write_to_disc=False, headers=headers) mlooked = [Ifg(m[1]) for m in mlooked_phase_data] self.assertRaises(RasterException, mlooked[0].open)
Example #14
Source File: raster.py From wradlib with MIT License | 5 votes |
def get_raster_extent(dataset, geo=False, window=True): """Get the coordinates of the 4 corners of the raster dataset Parameters ---------- dataset : gdal.Dataset raster image with georeferencing (GeoTransform at least) geo : bool True to get geographical coordinates window : bool True to get the window containing the corners Returns ------- extent : :class:`numpy:numpy.ndarray` corner coordinates [ul,ll,lr,ur] or window extent [xmin, xmax, ymin, ymax] """ x_size = dataset.RasterXSize y_size = dataset.RasterYSize geotrans = dataset.GetGeoTransform() xmin = geotrans[0] ymax = geotrans[3] xmax = geotrans[0] + geotrans[1] * x_size ymin = geotrans[3] + geotrans[5] * y_size extent = np.array([[xmin, ymax], [xmin, ymin], [xmax, ymin], [xmax, ymax]]) if geo: projection = read_gdal_projection(dataset) extent = georef.reproject(extent, projection_source=projection) if window: x = extent[:, 0] y = extent[:, 1] extent = np.array([x.min(), x.max(), y.min(), y.max()]) return extent
Example #15
Source File: raster.py From wradlib with MIT License | 5 votes |
def extract_raster_dataset(dataset, mode="center", nodata=None): """ Extract data, coordinates and projection information Parameters ---------- dataset : gdal.Dataset raster dataset mode : string either 'center' or 'edge' nodata : float replace nodata values Returns ------- values : :class:`numpy:numpy.ndarray` Array of shape (nrows, ncols) or (nbands, nrows, ncols) containing the data values. coords : :class:`numpy:numpy.ndarray` Array of shape (nrows,ncols,2) containing xy coordinates. The array indexing follows image convention with origin at the upper left pixel (northup). The shape is (nrows+1,ncols+1,2) if mode == edge. projection : osr object Spatial reference system of the used coordinates. """ values = read_gdal_values(dataset, nodata=nodata) coords = read_gdal_coordinates(dataset, mode=mode) projection = read_gdal_projection(dataset) return values, coords, projection
Example #16
Source File: raster.py From wradlib with MIT License | 5 votes |
def read_gdal_values(dataset=None, nodata=None): """Read values from a gdal object. Parameters ---------- dataset : gdal.Dataset raster image with georeferencing nodata : float replace nodata values Returns ------- values : :class:`numpy:numpy.ndarray` Array of shape (nrows, ncols) or (nbands, nrows, ncols) containing the data values. Examples -------- See :ref:`/notebooks/classify/wradlib_clutter_cloud_example.ipynb`. """ nbands = dataset.RasterCount # data values bands = [] for i in range(nbands): band = dataset.GetRasterBand(i + 1) nd = band.GetNoDataValue() data = band.ReadAsArray() if nodata is not None: data[data == nd] = nodata bands.append(data) return np.squeeze(np.array(bands))
Example #17
Source File: raster.py From wradlib with MIT License | 5 votes |
def read_gdal_coordinates(dataset, mode="center"): """Get the projected coordinates from a GDAL dataset. Parameters ---------- dataset : gdal.Dataset raster image with georeferencing mode : string either 'center' or 'edge' Returns ------- coordinates : :class:`numpy:numpy.ndarray` Array of shape (nrows,ncols,2) containing xy coordinates. The array indexing follows image convention with origin at upper left pixel. The shape is (nrows+1,ncols+1,2) if mode == edge. Examples -------- See :ref:`/notebooks/classify/wradlib_clutter_cloud_example.ipynb`. """ coordinates_pixel = _pixel_coordinates( dataset.RasterXSize, dataset.RasterYSize, mode ) geotransform = dataset.GetGeoTransform() coordinates = _pixel_to_map(coordinates_pixel, geotransform) return coordinates
Example #18
Source File: utils.py From unmixing with MIT License | 5 votes |
def as_raster(path): ''' A convenience function for opening a raster and accessing its spatial information; takes a single string argument. Arguments: path The path of the raster file to open as a gdal.Dataset ''' ds = gdal.Open(path) gt = ds.GetGeoTransform() wkt = ds.GetProjection() return (ds, gt, wkt)
Example #19
Source File: test_shared.py From PyRate with Apache License 2.0 | 5 votes |
def test_open(self): self.assertTrue(self.ras.dataset is None) self.ras.open() self.assertTrue(self.ras.dataset is not None) self.assertTrue(isinstance(self.ras.dataset, Dataset)) # ensure open cannot be called twice self.assertRaises(RasterException, self.ras.open)
Example #20
Source File: tests.py From unmixing with MIT License | 5 votes |
def test_file_raster_and_array_access(self): ''' Tests that essential file reading and raster/array conversion utilities are working properly. ''' from_as_array = as_array(os.path.join(self.test_dir, 'multi3_raster.tiff')) from_as_raster = as_raster(os.path.join(self.test_dir, 'multi3_raster.tiff')) self.assertTrue(len(from_as_array) == len(from_as_raster) == 3) self.assertTrue(isinstance(from_as_array[0], np.ndarray)) self.assertTrue(isinstance(from_as_raster[0], gdal.Dataset))
Example #21
Source File: utils.py From unmixing with MIT License | 5 votes |
def dump_raster(rast, rast_path, driver='GTiff', gdt=None, nodata=None): ''' Creates a raster file from a given gdal.Dataset instance. Arguments: rast A gdal.Dataset; does NOT accept NumPy array rast_path The path of the output raster file driver The name of the GDAL driver to use (determines file type) gdt The GDAL data type to use, e.g., see gdal.GDT_Float32 nodata The NoData value; defaults to -9999. ''' if gdt is None: gdt = rast.GetRasterBand(1).DataType driver = gdal.GetDriverByName(driver) sink = driver.Create( rast_path, rast.RasterXSize, rast.RasterYSize, rast.RasterCount, int(gdt)) assert sink is not None, 'Cannot create dataset; there may be a problem with the output path you specified' sink.SetGeoTransform(rast.GetGeoTransform()) sink.SetProjection(rast.GetProjection()) for b in range(1, rast.RasterCount + 1): dat = rast.GetRasterBand(b).ReadAsArray() sink.GetRasterBand(b).WriteArray(dat) sink.GetRasterBand(b).SetStatistics(*map(np.float64, [dat.min(), dat.max(), dat.mean(), dat.std()])) if nodata is None: nodata = rast.GetRasterBand(b).GetNoDataValue() if nodata is None: nodata = -9999 sink.GetRasterBand(b).SetNoDataValue(np.float64(nodata)) sink.FlushCache()
Example #22
Source File: utils.py From unmixing with MIT License | 5 votes |
def mask_by_query(rast, query, invert=False, nodata=-9999): ''' Mask pixels (across bands) that match a query in any one band or all bands. For example: `query = rast[1,...] < -25` queries those pixels with a value less than -25 in band 2; these pixels would be masked (if `invert=False`). By default, the pixels that are queried are masked, but if `invert=True`, the query serves to select pixels NOT to be masked (`np.invert()` can also be called on the query before calling this function to achieve the same effect). Arguments: rast A gdal.Dataset or numpy.array instance query A NumPy boolean array representing the result of a query invert True to invert the query nodata The NoData value to apply in the masking ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): rastr = rast.ReadAsArray() else: rastr = rast.copy() shp = rastr.shape if query.shape != rastr.shape: assert len(query.shape) == 2 or len(query.shape) == len(shp), 'Query must either be 2-dimensional (single-band) or have a dimensionality equal to the raster array' assert shp[-2] == query.shape[-2] and shp[-1] == query.shape[-1], 'Raster and query must be conformable arrays in two dimensions (must have the same extent)' # Transform query into a 1-band array and then into a multi-band array query = query.reshape((1, shp[-2], shp[-1])).repeat(shp[0], axis=0) # Mask out areas that match the query if invert: rastr[np.invert(query)] = nodata else: rastr[query] = nodata return rastr
Example #23
Source File: utils.py From unmixing with MIT License | 5 votes |
def copy_nodata(source, target, nodata=-9999): ''' Copies the NoData values from a source raster or raster array into a target raster or raster array. That is, source's NoData values are embedded in target. This is useful, for instance, when you want to mask out dropped scanlines in a Landsat 7 image; these areas are NoData in the EOS HDF but they are not included in the QA mask. Arguments: source A gdal.Dataset or a NumPy array target A gdal.Dataset or a NumPy array nodata The NoData value to look for (and embed) ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(source, np.ndarray): source = source.ReadAsArray() if not isinstance(target, np.ndarray): target = target.ReadAsArray() else: target = target.copy() assert source.ndim == target.ndim, "Source and target rasters must have the same number of axes" if source.ndim == 3: assert source.shape[1:] == target.shape[1:], "Source and target rasters must have the same shape (not including band axis)" return np.where(source[0,...] == nodata, nodata, target) else: assert source.shape == target.shape, "Source and target rasters must have the same shape" return np.where(source == nodata, nodata, target)
Example #24
Source File: utils.py From unmixing with MIT License | 5 votes |
def saturation_mask(rast, saturation_value=10000, nodata=-9999): ''' Returns a binary mask that has True for saturated values (e.g., surface reflectance values greater than 16,000, however, SR values are only considered valid on the range [0, 10,000]) and False everywhere else. Arguments: rast A gdal.Dataset or NumPy array saturation_value The value beyond which pixels are considered saturated nodata The NoData value; defaults to -9999. ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): rastr = rast.ReadAsArray() else: rastr = rast.copy() # Create a baseline "nothing is saturated in any band" raster mask = np.empty((1, rastr.shape[1], rastr.shape[2])) mask.fill(False) # Update the mask for saturation in any band for i in range(rastr.shape[0]): np.logical_or(mask, rastr[i,...] > saturation_value, out=mask) return mask
Example #25
Source File: utils.py From unmixing with MIT License | 5 votes |
def clean_mask(rast): ''' Clips the values in a mask to the interval [0, 1]; values larger than 1 become 1 and values smaller than 0 become 0. Arguments: rast An input gdal.Dataset or numpy.array instance ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): rastr = rast.ReadAsArray() else: rastr = rast.copy() return np.clip(rastr, a_min=0, a_max=1)
Example #26
Source File: utils.py From unmixing with MIT License | 5 votes |
def subarray(rast, filtered_value=-9999, indices=False): ''' Given a (p x m x n) raster (or array), returns a (p x z) subarray where z is the number of cases (pixels) that do not contain the filtered value (in any band, in the case of a multi-band image). Arguments: rast The input gdal.Dataset or a NumPy array filtered_value The value to remove from the raster array indices If True, return a tuple: (indices, subarray) ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): rastr = rast.ReadAsArray() else: rastr = rast.copy() shp = rastr.shape if len(shp) == 1: # If already raveled return rastr[rastr != filtered_value] if len(shp) == 2 or shp[0] == 1: # If a "single-band" image arr = rastr.reshape(1, shp[-2]*shp[-1]) return arr[arr != filtered_value] # For multi-band images arr = rastr.reshape(shp[0], shp[1]*shp[2]) idx = (arr != filtered_value).any(axis=0) if indices: # Return the indices as well rast_shp = (shp[-2], shp[-1]) return (np.indices(rast_shp)[:,idx.reshape(rast_shp)], arr[:,idx]) return arr[:,idx]
Example #27
Source File: lsma.py From unmixing with MIT License | 5 votes |
def normalize_reflectance_within_image( rast, band_range=(0, 5), nodata=-9999, scale=100): ''' Following Wu (2004, Remote Sensing of Environment), normalizes the reflectances in each pixel by the average reflectance *across bands.* This is an attempt to mitigate within-endmember variability. Arguments: rast A gdal.Dataset or numpy.array instance nodata The NoData value to use (and value to ignore) scale (Optional) Wu's definition scales the normalized reflectance by 100 for some reason; another reasonable value would be 10,000 (approximating scale of Landsat reflectance units); set to None for no scaling. ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(rast, np.ndarray): rastr = rast.ReadAsArray() else: rastr = rast.copy() shp = rastr.shape b0, b1 = band_range # Get the beginning, end of band range b1 += 1 # Ranges in Python are not inclusive, so add 1 rastr_normalized = np.divide( rastr.reshape((shp[0], shp[1]*shp[2])), rastr[b0:b1,...].mean(axis=0).reshape((1, shp[1]*shp[2])).repeat(shp[0], axis=0)) # Recover original shape; scale if necessary rastr_normalized = rastr_normalized.reshape(shp) if scale is not None: rastr_normalized = np.multiply(rastr_normalized, scale) # Fill in the NoData areas from the original raster np.place(rastr_normalized, rastr == nodata, nodata) return rastr_normalized
Example #28
Source File: utils.py From unmixing with MIT License | 5 votes |
def cfmask(mask, mask_values=(1,2,3,4,255), nodata=-9999): ''' Returns a binary mask according to the CFMask algorithm results for the image; mask has True for water, cloud, shadow, and snow (if any) and False everywhere else. More information can be found: https://landsat.usgs.gov/landsat-surface-reflectance-quality-assessment Landsat 4-7 Pre-Collection pixel_qa values to be masked: mask_values = (1, 2, 3, 4) Landsat 4-7 Collection 1 pixel_qa values to be masked (for "Medium" confidence): mask_values = (1, 68, 72, 80, 112, 132, 136, 144, 160, 176, 224) Landsat 8 Collection 1 pixel_qa values to be masked (for "Medium" confidence): mask_values = (1, 324, 328, 386, 388, 392, 400, 416, 432, 480, 832, 836, 840, 848, 864, 880, 900, 904, 912, 928, 944, 992, 1024) Arguments: mask A gdal.Dataset or a NumPy array mask_path The path to an EOS HDF4 CFMask raster mask_values The values in the mask that correspond to NoData pixels nodata The NoData value; defaults to -9999. ''' if not isinstance(mask, np.ndarray): maskr = mask.ReadAsArray() else: maskr = mask.copy() # Mask according to bit-packing described here: # https://landsat.usgs.gov/landsat-surface-reflectance-quality-assessment maskr = np.in1d(maskr.reshape((maskr.shape[0] * maskr.shape[1])), mask_values)\ .reshape((1, maskr.shape[0], maskr.shape[1])).astype(np.int0) return maskr
Example #29
Source File: vector.py From wradlib with MIT License | 5 votes |
def ogr_copy_layer_by_name(src_ds, name, dst_ds, reset=True): """ Copy OGR.Layer object. Copy OGR.Layer object from src_ds gdal.Dataset to dst_ds gdal.Dataset Parameters ---------- src_ds : gdal.Dataset object name : string layer name dst_ds : gdal.Dataset object reset : bool if True resets src_layer """ # get and copy src geometry layer src_lyr = src_ds.GetLayerByName(name) if src_lyr is None: raise ValueError("OGR layer 'name' not found in dataset") if reset: src_lyr.ResetReading() src_lyr.SetSpatialFilter(None) src_lyr.SetAttributeFilter(None) dst_ds.CopyLayer(src_lyr, src_lyr.GetName())
Example #30
Source File: visualize.py From unmixing with MIT License | 5 votes |
def histogram(arr, valid_range=(0, 1), bins=10, normed=False, cumulative=False, file_path='hist.png', title=None): ''' Plots a histogram for an input array over a specified range. ''' # Can accept either a gdal.Dataset or numpy.array instance if not isinstance(arr, np.ndarray): arr = arr.ReadAsArray() plt.hist(arr.ravel(), range=valid_range, bins=bins, normed=normed, cumulative=cumulative) if title is not None: plt.title(title) plt.savefig(file_path)