本文整理汇总了Python中gdal.GDT_Byte方法的典型用法代码示例。如果您正苦于以下问题:Python gdal.GDT_Byte方法的具体用法?Python gdal.GDT_Byte怎么用?Python gdal.GDT_Byte使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdal
的用法示例。
在下文中一共展示了gdal.GDT_Byte方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_mask_from_model
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例2: create_mask_from_class_map
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例3: create_mask_from_fmask
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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)
示例4: create_temp_tiff
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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)
示例5: driver_create
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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)
示例6: make_geotiff
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例7: getDTfromGDAL
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例8: getGDALGDT
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例9: create_uniquevalue_tiff
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例10: combine_masks
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例11: open_data
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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
示例12: export_geomap2geotiff
# 需要导入模块: import gdal [as 别名]
# 或者: from gdal import GDT_Byte [as 别名]
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)