Python gdal.GDT_Byte() Examples
The following are 12
code examples of gdal.GDT_Byte().
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
gdal
, or try the search function
.
Example #1
Source File: raster_manipulation.py From pyeo with GNU General Public License v3.0 | 6 votes |
def create_mask_from_model(image_path, model_path, model_clear=0, num_chunks=10, buffer_size=0): """Returns a multiplicative mask (0 for cloud, shadow or haze, 1 for clear) built from the model at model_path.""" from pyeo.classification import classify_image # Deferred import to deal with circular reference with TemporaryDirectory() as td: log = logging.getLogger(__name__) log.info("Building cloud mask for {} with model {}".format(image_path, model_path)) temp_mask_path = os.path.join(td, "cat_mask.tif") classify_image(image_path, model_path, temp_mask_path, num_chunks=num_chunks) temp_mask = gdal.Open(temp_mask_path, gdal.GA_Update) temp_mask_array = temp_mask.GetVirtualMemArray() mask_path = get_mask_path(image_path) mask = create_matching_dataset(temp_mask, mask_path, datatype=gdal.GDT_Byte) mask_array = mask.GetVirtualMemArray(eAccess=gdal.GF_Write) mask_array[:, :] = np.where(temp_mask_array != model_clear, 0, 1) temp_mask_array = None mask_array = None temp_mask = None mask = None if buffer_size: buffer_mask_in_place(mask_path, buffer_size) log.info("Cloud mask for {} saved in {}".format(image_path, mask_path)) return mask_path
Example #2
Source File: raster_manipulation.py From pyeo with GNU General Public License v3.0 | 6 votes |
def create_mask_from_class_map(class_map_path, out_path, classes_of_interest, buffer_size=0, out_resolution=None): """Creates a mask from a classification mask: 1 for each pixel containing one of classes_of_interest, otherwise 0""" # TODO: pull this out of the above function class_image = gdal.Open(class_map_path) class_array = class_image.GetVirtualMemArray() mask_array = np.isin(class_array, classes_of_interest) out_mask = create_matching_dataset(class_image, out_path, datatype=gdal.GDT_Byte) out_array = out_mask.GetVirtualMemArray(eAccess=gdal.GA_Update) np.copyto(out_array, mask_array) class_array = None class_image = None out_array = None out_mask = None if out_resolution: resample_image_in_place(out_path, out_resolution) if buffer_size: buffer_mask_in_place(out_path, buffer_size) return out_path
Example #3
Source File: raster_manipulation.py From pyeo with GNU General Public License v3.0 | 6 votes |
def create_mask_from_fmask(in_l1_dir, out_path): log = logging.getLogger(__name__) log.info("Creating fmask for {}".format(in_l1_dir)) with TemporaryDirectory() as td: temp_fmask_path = os.path.join(td, "fmask.tif") apply_fmask(in_l1_dir, temp_fmask_path) fmask_image = gdal.Open(temp_fmask_path) fmask_array = fmask_image.GetVirtualMemArray() out_image = create_matching_dataset(fmask_image, out_path, datatype=gdal.GDT_Byte) out_array = out_image.GetVirtualMemArray(eAccess=gdal.GA_Update) log.info("fmask created, converting to binary cloud/shadow mask") out_array[:,:] = np.isin(fmask_array, (2, 3, 4), invert=True) out_array = None out_image = None fmask_array = None fmask_image = None resample_image_in_place(out_path, 10)
Example #4
Source File: _conftest.py From pyeo with GNU General Public License v3.0 | 6 votes |
def create_temp_tiff(self, name, content=np.ones([3, 3, 3]), geotransform=(10, 10, 0, 10, 0, -10)): """Creates a temporary geotiff in self.path """ if len(content.shape) != 3: raise IndexError path = os.path.join(self.path, name) driver = gdal.GetDriverByName('GTiff') new_image = driver.Create( path, xsize=content.shape[1], ysize=content.shape[2], bands=content.shape[0], eType=gdal.GDT_Byte ) new_image.SetGeoTransform(geotransform) for band in range(content.shape[0]): raster_band = new_image.GetRasterBand(band+1) raster_band.WriteArray(content[band, ...].T) new_image.SetProjection(self.srs.ExportToWkt()) new_image.FlushCache() self.images.append(new_image) self.image_paths.append(path)
Example #5
Source File: run_gdal.py From recipy with Apache License 2.0 | 6 votes |
def driver_create(self): """ Use gdal.Driver.Create to create out_image.tiff. """ file_name = os.path.join(self.data_dir, "out_image.tiff") image_format = "GTiff" driver = gdal.GetDriverByName(str(image_format)) data_source = driver.Create(file_name, 50, 50, 1, gdal.GDT_Byte) raster = np.ones((50, 50), dtype=np.uint8) raster[10:40, 10:40] = 0 raster = raster * 255 data_source.GetRasterBand(1).WriteArray(raster) # Avoid PermissionError on Windows when trying to delete # file_name. From: # http://stackoverflow.com/questions/22068148/extremely-frustrating-behavior-with-windowserror-error-32-to-remove-temporary data_source.FlushCache() driver = None data_source = None os.remove(file_name)
Example #6
Source File: LiCSBAS_decomposeLOS.py From LiCSBAS with GNU General Public License v3.0 | 6 votes |
def make_geotiff(data, length, width, latn_p, lonw_p, dlat, dlon, outfile, compress_option): if data.dtype == np.float32: dtype = gdal.GDT_Float32 nodata = np.nan ## or 0? elif data.dtype == np.uint8: dtype = gdal.GDT_Byte nodata = None driver = gdal.GetDriverByName('GTiff') outRaster = driver.Create(outfile, width, length, 1, dtype, options=compress_option) outRaster.SetGeoTransform((lonw_p, dlon, 0, latn_p, 0, dlat)) outband = outRaster.GetRasterBand(1) outband.WriteArray(data) if nodata is not None: outband.SetNoDataValue(nodata) outRaster.SetMetadataItem('AREA_OR_POINT', 'Point') outRasterSRS = osr.SpatialReference() outRasterSRS.ImportFromEPSG(4326) outRaster.SetProjection(outRasterSRS.ExportToWkt()) outband.FlushCache() return #%% Main
Example #7
Source File: function_dataraster.py From dzetsaka with GNU General Public License v3.0 | 5 votes |
def getDTfromGDAL(gdal_dt): """ Returns datatype (numpy/scipy) from gdal_dt. Parameters ---------- gdal_dt : datatype data.GetRasterBand(1).DataType Return ---------- dt : datatype """ if gdal_dt == gdal.GDT_Byte: dt = 'uint8' elif gdal_dt == gdal.GDT_Int16: dt = 'int16' elif gdal_dt == gdal.GDT_UInt16: dt = 'uint16' elif gdal_dt == gdal.GDT_Int32: dt = 'int32' elif gdal_dt == gdal.GDT_UInt32: dt = 'uint32' elif gdal_dt == gdal.GDT_Float32: dt = 'float32' elif gdal_dt == gdal.GDT_Float64: dt = 'float64' elif gdal_dt == gdal.GDT_CInt16 or gdal_dt == gdal.GDT_CInt32 or gdal_dt == gdal.GDT_CFloat32 or gdal_dt == gdal.GDT_CFloat64: dt = 'complex64' else: print('Data type unkown') # exit() return dt
Example #8
Source File: function_dataraster.py From dzetsaka with GNU General Public License v3.0 | 5 votes |
def getGDALGDT(dt): """ Need arr.dtype.name in entry. Returns gdal_dt from dt (numpy/scipy). Parameters ---------- dt : datatype Return ---------- gdal_dt : gdal datatype """ if dt == 'bool' or dt == 'uint8': gdal_dt = gdal.GDT_Byte elif dt == 'int8' or dt == 'int16': gdal_dt = gdal.GDT_Int16 elif dt == 'uint16': gdal_dt = gdal.GDT_UInt16 elif dt == 'int32': gdal_dt = gdal.GDT_Int32 elif dt == 'uint32': gdal_dt = gdal.GDT_UInt32 elif dt == 'int64' or dt == 'uint64' or dt == 'float16' or dt == 'float32': gdal_dt = gdal.GDT_Float32 elif dt == 'float64': gdal_dt = gdal.GDT_Float64 elif dt == 'complex64': gdal_dt = gdal.GDT_CFloat64 else: print('Data type non-suported') # exit() return gdal_dt
Example #9
Source File: function_dataraster.py From dzetsaka with GNU General Public License v3.0 | 5 votes |
def create_uniquevalue_tiff( outname, im, d, GeoTransform, Projection, wholeValue=1, gdal_dt=False): '''!@brief Write an empty image on the hard drive. Input: outname: the name of the file to be written im: the image cube GeoTransform: the geotransform information Projection: the projection information Output: Nothing -- ''' nl = im.shape[0] nc = im.shape[1] driver = gdal.GetDriverByName('GTiff') # Get the data type if not gdal_dt: gdal_dt = gdal.GDT_Byte dst_ds = driver.Create(outname, nc, nl, d, gdal_dt) dst_ds.SetGeoTransform(GeoTransform) dst_ds.SetProjection(Projection) if d == 1: im[:] = wholeValue out = dst_ds.GetRasterBand(1) out.WriteArray(im) out.FlushCache() else: for i in range(d): im[:, :, i] = wholeValue out = dst_ds.GetRasterBand(i + 1) out.WriteArray(im[:, :, i]) out.FlushCache() dst_ds = None return outname
Example #10
Source File: raster_manipulation.py From pyeo with GNU General Public License v3.0 | 4 votes |
def combine_masks(mask_paths, out_path, combination_func = 'and', geometry_func ="intersect"): """ORs or ANDs several masks. Gets metadata from top mask. Assumes that masks are a Python true or false. Also assumes that all masks are the same projection for now.""" log = logging.getLogger(__name__) log.info("Combining masks {}:\n combination function: '{}'\n geometry function:'{}'".format( mask_paths, combination_func, geometry_func)) masks = [gdal.Open(mask_path) for mask_path in mask_paths] combined_polygon = align_bounds_to_whole_number(get_combined_polygon(masks, geometry_func)) gt = masks[0].GetGeoTransform() x_res = gt[1] y_res = gt[5]*-1 # Y res is -ve in geotransform bands = 1 projection = masks[0].GetProjection() out_mask = create_new_image_from_polygon(combined_polygon, out_path, x_res, y_res, bands, projection, datatype=gdal.GDT_Byte, nodata=0) # This bit here is similar to stack_raster, but different enough to not be worth spinning into a combination_func # I might reconsider this later, but I think it'll overcomplicate things. out_mask_array = out_mask.GetVirtualMemArray(eAccess=gdal.GF_Write) out_mask_array = out_mask_array.squeeze() # This here to account for unaccountable extra dimension Windows patch adds out_mask_array[:, :] = 1 for mask_index, in_mask in enumerate(masks): in_mask_array = in_mask.GetVirtualMemArray() in_mask_array = in_mask_array.squeeze() # See previous comment if geometry_func == "intersect": out_x_min, out_x_max, out_y_min, out_y_max = pixel_bounds_from_polygon(out_mask, combined_polygon) in_x_min, in_x_max, in_y_min, in_y_max = pixel_bounds_from_polygon(in_mask, combined_polygon) elif geometry_func == "union": out_x_min, out_x_max, out_y_min, out_y_max = pixel_bounds_from_polygon(out_mask, get_raster_bounds(in_mask)) in_x_min, in_x_max, in_y_min, in_y_max = pixel_bounds_from_polygon(in_mask, get_raster_bounds(in_mask)) else: raise Exception("Invalid geometry_func; can be 'intersect' or 'union'") out_mask_view = out_mask_array[out_y_min: out_y_max, out_x_min: out_x_max] in_mask_view = in_mask_array[in_y_min: in_y_max, in_x_min: in_x_max] if mask_index is 0: out_mask_view[:,:] = in_mask_view else: if combination_func is 'or': out_mask_view[:, :] = np.bitwise_or(out_mask_view, in_mask_view, dtype=np.uint8) elif combination_func is 'and': out_mask_view[:, :] = np.bitwise_and(out_mask_view, in_mask_view, dtype=np.uint8) elif combination_func is 'nor': out_mask_view[:, :] = np.bitwise_not(np.bitwise_or(out_mask_view, in_mask_view, dtype=np.uint8), dtype=np.uint8) else: raise Exception("Invalid combination_func; valid values are 'or', 'and', and 'nor'") in_mask_view = None out_mask_view = None in_mask_array = None in_mask = None out_mask_array = None out_mask = None return out_path
Example #11
Source File: function_dataraster.py From dzetsaka with GNU General Public License v3.0 | 4 votes |
def open_data(filename): ''' The function open and load the image given its name. The type of the data is checked from the file and the scipy array is initialized accordingly. Input: filename: the name of the file Output: im: the data cube GeoTransform: the geotransform information Projection: the projection information ''' data = gdal.Open(filename, gdal.GA_ReadOnly) if data is None: print('Impossible to open ' + filename) # exit() nc = data.RasterXSize nl = data.RasterYSize d = data.RasterCount # Get the type of the data gdal_dt = data.GetRasterBand(1).DataType if gdal_dt == gdal.GDT_Byte: dt = 'uint8' elif gdal_dt == gdal.GDT_Int16: dt = 'int16' elif gdal_dt == gdal.GDT_UInt16: dt = 'uint16' elif gdal_dt == gdal.GDT_Int32: dt = 'int32' elif gdal_dt == gdal.GDT_UInt32: dt = 'uint32' elif gdal_dt == gdal.GDT_Float32: dt = 'float32' elif gdal_dt == gdal.GDT_Float64: dt = 'float64' elif gdal_dt == gdal.GDT_CInt16 or gdal_dt == gdal.GDT_CInt32 or gdal_dt == gdal.GDT_CFloat32 or gdal_dt == gdal.GDT_CFloat64: dt = 'complex64' else: print('Data type unkown') # exit() # Initialize the array if d == 1: im = np.empty((nl, nc), dtype=dt) else: im = np.empty((nl, nc, d), dtype=dt) if d == 1: im[:, :] = data.GetRasterBand(1).ReadAsArray() else: for i in range(d): im[:, :, i] = data.GetRasterBand(i + 1).ReadAsArray() GeoTransform = data.GetGeoTransform() Projection = data.GetProjection() data = None return im, GeoTransform, Projection
Example #12
Source File: export.py From gempy with GNU Lesser General Public License v3.0 | 4 votes |
def export_geomap2geotiff(path, geo_model, geo_map=None, geotiff_filepath=None): """ Args: path (str): Filepath for the exported geotiff, must end in .tif geo_map (np.ndarray): 2-D array containing the geological map cmap (matplotlib colormap): The colormap to be used for the export geotiff_filepath (str): Filepath of the template geotiff Returns: Saves the geological map as a geotiff to the given path. """ import gdal plot = PlotData2D(geo_model) cmap = plot._cmap norm = plot._norm if geo_map is None: geo_map = geo_model.solutions.geological_map[0].reshape(geo_model._grid.topography.resolution) if geotiff_filepath is None: # call the other function print('stupid') # ********************************************************************** geo_map_rgb = SM(norm=norm, cmap=cmap).to_rgba(geo_map.T) # r,g,b,alpha # ********************************************************************** # gdal.UseExceptions() ds = gdal.Open(geotiff_filepath) band = ds.GetRasterBand(1) arr = band.ReadAsArray() [cols, rows] = arr.shape outFileName = path driver = gdal.GetDriverByName("GTiff") options = ['PROFILE=GeoTiff', 'PHOTOMETRIC=RGB', 'COMPRESS=JPEG'] outdata = driver.Create(outFileName, rows, cols, 3, gdal.GDT_Byte, options=options) outdata.SetGeoTransform(ds.GetGeoTransform()) # sets same geotransform as input outdata.SetProjection(ds.GetProjection()) # sets same projection as input outdata.GetRasterBand(1).WriteArray(geo_map_rgb[:, ::-1, 0].T * 256) outdata.GetRasterBand(2).WriteArray(geo_map_rgb[:, ::-1, 1].T * 256) outdata.GetRasterBand(3).WriteArray(geo_map_rgb[:, ::-1, 2].T * 256) outdata.GetRasterBand(1).SetColorInterpretation(gdal.GCI_RedBand) outdata.GetRasterBand(2).SetColorInterpretation(gdal.GCI_GreenBand) outdata.GetRasterBand(3).SetColorInterpretation(gdal.GCI_BlueBand) # outdata.GetRasterBand(4).SetColorInterpretation(gdal.GCI_AlphaBand) # alpha band # outdata.GetRasterBand(1).SetNoDataValue(999)##if you want these values transparent outdata.FlushCache() # saves to disk outdata = None # closes file (important) band = None ds = None print("Successfully exported geological map to " +path)