Python gdal.GetDriverByName() Examples
The following are 30
code examples of gdal.GetDriverByName().
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: LSDMap_VectorTools.py From LSDMappingTools with MIT License | 9 votes |
def writeFile(filename,geotransform,geoprojection,data): (x,y) = data.shape format = "GTiff" noDataValue = -9999 driver = gdal.GetDriverByName(format) # you can change the dataformat but be sure to be able to store negative values including -9999 dst_datatype = gdal.GDT_Float32 #print(data) dst_ds = driver.Create(filename,y,x,1,dst_datatype) dst_ds.GetRasterBand(1).WriteArray(data) dst_ds.GetRasterBand(1).SetNoDataValue( noDataValue ) dst_ds.SetGeoTransform(geotransform) dst_ds.SetProjection(geoprojection) return 1
Example #2
Source File: postprocess_utils.py From coded with MIT License | 8 votes |
def save_raster_simple(array, path, dst_filename): """ Save an array base on an existing raster """ example = gdal.Open(path) x_pixels = array.shape[1] # number of pixels in x y_pixels = array.shape[0] # number of pixels in y bands = 1 driver = gdal.GetDriverByName('GTiff') dataset = driver.Create(dst_filename,x_pixels, y_pixels, bands, gdal.GDT_Int32) geotrans=example.GetGeoTransform() #get GeoTranform from existed 'data0' proj=example.GetProjection() #you can get from a exsited tif or import dataset.SetGeoTransform(geotrans) dataset.SetProjection(proj) dataset.GetRasterBand(1).WriteArray(array[:,:]) dataset.FlushCache()
Example #3
Source File: function_dataraster.py From dzetsaka with GNU General Public License v3.0 | 8 votes |
def rasterize(data, vectorSrc, field, outFile): dataSrc = gdal.Open(data) import ogr shp = ogr.Open(vectorSrc) lyr = shp.GetLayer() driver = gdal.GetDriverByName('GTiff') dst_ds = driver.Create( outFile, dataSrc.RasterXSize, dataSrc.RasterYSize, 1, gdal.GDT_UInt16) dst_ds.SetGeoTransform(dataSrc.GetGeoTransform()) dst_ds.SetProjection(dataSrc.GetProjection()) if field is None: gdal.RasterizeLayer(dst_ds, [1], lyr, None) else: OPTIONS = ['ATTRIBUTE=' + field] gdal.RasterizeLayer(dst_ds, [1], lyr, None, options=OPTIONS) data, dst_ds, shp, lyr = None, None, None, None return outFile
Example #4
Source File: LSD_GeologyTools.py From LSDMappingTools with MIT License | 7 votes |
def writeFile(filename,geotransform,geoprojection,data): (x,y) = data.shape format = "GTiff" noDataValue = -9999 driver = gdal.GetDriverByName(format) # you can change the dataformat but be sure to be able to store negative values including -9999 dst_datatype = gdal.GDT_Float32 #print(data) dst_ds = driver.Create(filename,y,x,1,dst_datatype) dst_ds.GetRasterBand(1).WriteArray(data) dst_ds.GetRasterBand(1).SetNoDataValue( noDataValue ) dst_ds.SetGeoTransform(geotransform) dst_ds.SetProjection(geoprojection) return 1
Example #5
Source File: LithoCHILD_to_Raster.py From LSDMappingTools with MIT License | 7 votes |
def array2raster(newRasterfn,rasterOrigin,pixelWidth,pixelHeight,array, nodata, EPSG): """This function take a regular array to create a raster with it""" print("I am dealing with nodata values") array[np.isnan(array)] = nodata # Dealing with Nodata values print("I am writing the raster") cols = array.shape[1] rows = array.shape[0] originX = rasterOrigin[0] originY = rasterOrigin[1] driver = gdal.GetDriverByName('ENVI') outRaster = driver.Create(newRasterfn, cols, rows, 1, gdal.GDT_Float64) outRaster.SetGeoTransform((originX, pixelWidth, 0, originY, 0, pixelHeight)) outband = outRaster.GetRasterBand(1) #outband.SetNoDataValue(nodata) outband.WriteArray(array) #outband.SetNoDataValue(nodata) outRasterSRS = osr.SpatialReference() outRasterSRS.ImportFromEPSG(EPSG) outRaster.SetProjection(outRasterSRS.ExportToWkt()) outband.FlushCache()
Example #6
Source File: postprocess_utils.py From coded with MIT License | 7 votes |
def save_raster(array, path, dst_filename): """ Save the final multiband array based on an existing raster """ example = gdal.Open(path) x_pixels = array.shape[2] # number of pixels in x y_pixels = array.shape[1] # number of pixels in y bands = array.shape[0] driver = gdal.GetDriverByName('GTiff') dataset = driver.Create(dst_filename,x_pixels, y_pixels, bands ,gdal.GDT_Int32) geotrans=example.GetGeoTransform() #get GeoTranform from existed 'data0' proj=example.GetProjection() #you can get from a exsited tif or import dataset.SetGeoTransform(geotrans) dataset.SetProjection(proj) for b in range(bands): dataset.GetRasterBand(b+1).WriteArray(array[b,:,:]) dataset.FlushCache()
Example #7
Source File: postprocess_utils.py From coded with MIT License | 7 votes |
def save_raster_memory(array, path): """ Save a raster into memory """ example = gdal.Open(path) x_pixels = array.shape[1] # number of pixels in x y_pixels = array.shape[0] # number of pixels in y driver = gdal.GetDriverByName('MEM') dataset = driver.Create('',x_pixels, y_pixels, 1,gdal.GDT_Int32) dataset.GetRasterBand(1).WriteArray(array[:,:]) # follow code is adding GeoTranform and Projection geotrans=example.GetGeoTransform() #get GeoTranform from existed 'data0' proj=example.GetProjection() #you can get from a exsited tif or import dataset.SetGeoTransform(geotrans) dataset.SetProjection(proj) return dataset
Example #8
Source File: dis_TSEB.py From pyTSEB with GNU General Public License v3.0 | 6 votes |
def save_img(data, geotransform, proj, outPath, noDataValue=np.nan, fieldNames=[]): # Start the gdal driver for GeoTIFF if outPath == "MEM": driver = gdal.GetDriverByName("MEM") driverOpt = [] shape = data.shape if len(shape) > 2: ds = driver.Create(outPath, shape[1], shape[0], shape[2], gdal.GDT_Float32, driverOpt) ds.SetProjection(proj) ds.SetGeoTransform(geotransform) for i in range(shape[2]): ds.GetRasterBand(i+1).WriteArray(data[:, :, i]) ds.GetRasterBand(i+1).SetNoDataValue(noDataValue) else: ds = driver.Create(outPath, shape[1], shape[0], 1, gdal.GDT_Float32, driverOpt) ds.SetProjection(proj) ds.SetGeoTransform(geotransform) ds.GetRasterBand(1).WriteArray(data) ds.GetRasterBand(1).SetNoDataValue(noDataValue) return ds
Example #9
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 #10
Source File: _conftest.py From pyeo with GNU General Public License v3.0 | 6 votes |
def geotiff_dir(): """ Returns ------- A pointer to a temporary folder that contains a 3-band geotiff of 3x3, with all values being 1. """ tempDir = tempfile.TemporaryDirectory() fileformat = "GTiff" driver = gdal.GetDriverByName(fileformat) metadata = driver.GetMetadata() tempPath = os.path.join(tempDir.name) testDataset = driver.Create(os.path.join(tempDir.name, "tempTiff.tif"), xsize=3, ysize=3, bands=3, eType=gdal.GDT_CFloat32) for i in range(3): testDataset.GetRasterBand(i+1).WriteArray(np.ones([3, 3])) testDataset = None yield tempPath tempDir.cleanup()
Example #11
Source File: _conftest.py From pyeo with GNU General Public License v3.0 | 6 votes |
def create_temp_shape(self, name, point_list): vector_file = os.path.join(self.temp_dir.name, name) shape_driver = ogr.GetDriverByName("ESRI Shapefile") # Depreciated; replace at some point vector_data_source = shape_driver.CreateDataSource(vector_file) vector_layer = vector_data_source.CreateLayer("geometry", self.srs, geom_type=ogr.wkbPolygon) ring = ogr.Geometry(ogr.wkbLinearRing) for point in point_list: ring.AddPoint(point[0], point[1]) poly = ogr.Geometry(ogr.wkbPolygon) poly.AddGeometry(ring) vector_feature_definition = vector_layer.GetLayerDefn() vector_feature = ogr.Feature(vector_feature_definition) vector_feature.SetGeometry(poly) vector_layer.CreateFeature(vector_feature) vector_layer.CreateField(ogr.FieldDefn("class", ogr.OFTInteger)) feature = ogr.Feature(vector_layer.GetLayerDefn()) feature.SetField("class", 3) vector_data_source.FlushCache() self.vectors.append(vector_data_source) # Check this is the right thing to be saving here self.vector_paths.append(vector_file)
Example #12
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 #13
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 #14
Source File: data_conversions.py From wa with Apache License 2.0 | 6 votes |
def Save_as_MEM(data='', geo='', projection=''): """ This function save the array as a memory file Keyword arguments: data -- [array], dataset of the geotiff geo -- [minimum lon, pixelsize, rotation, maximum lat, rotation, pixelsize], (geospatial dataset) projection -- interger, the EPSG code """ # save as a geotiff driver = gdal.GetDriverByName("MEM") dst_ds = driver.Create('', int(data.shape[1]), int(data.shape[0]), 1, gdal.GDT_Float32, ['COMPRESS=LZW']) srse = osr.SpatialReference() if projection == '': srse.SetWellKnownGeogCS("WGS84") else: srse.SetWellKnownGeogCS(projection) dst_ds.SetProjection(srse.ExportToWkt()) dst_ds.GetRasterBand(1).SetNoDataValue(-9999) dst_ds.SetGeoTransform(geo) dst_ds.GetRasterBand(1).WriteArray(data) return(dst_ds)
Example #15
Source File: terrain_helper.py From CityEnergyAnalyst with MIT License | 6 votes |
def calc_raster_terrain_fixed_elevation(crs, elevation, grid_size, raster_path, locator, x_max, x_min, y_max, y_min): # local variables: temp_shapefile = locator.get_temporary_file("terrain.shp") cols = int((x_max - x_min) / grid_size) rows = int((y_max - y_min) / grid_size) shapes = Polygon([[x_min, y_min], [x_max, y_min], [x_max, y_max], [x_min, y_max], [x_min, y_min]]) geodataframe = Gdf(index=[0], crs=crs, geometry=[shapes]) geodataframe.to_file(temp_shapefile) # 1) opening the shapefile source_ds = ogr.Open(temp_shapefile) source_layer = source_ds.GetLayer() target_ds = gdal.GetDriverByName('GTiff').Create(raster_path, cols, rows, 1, gdal.GDT_Float32) ##COMMENT 2 target_ds.SetGeoTransform((x_min, grid_size, 0, y_max, 0, -grid_size)) ##COMMENT 3 # 5) Adding a spatial reference ##COMMENT 4 target_dsSRS = osr.SpatialReference() target_dsSRS.ImportFromProj4(crs) target_ds.SetProjection(target_dsSRS.ExportToWkt()) band = target_ds.GetRasterBand(1) band.SetNoDataValue(-9999) ##COMMENT 5 gdal.RasterizeLayer(target_ds, [1], source_layer, burn_values=[elevation]) ##COMMENT 6 target_ds = None # closing the file
Example #16
Source File: functions.py From hants with Apache License 2.0 | 6 votes |
def Get_Extent(input_lyr): """ Obtain the input layer extent (xmin, ymin, xmax, ymax) """ # Input filename, ext = os.path.splitext(input_lyr) if ext.lower() == '.shp': inp_driver = ogr.GetDriverByName('ESRI Shapefile') inp_source = inp_driver.Open(input_lyr) inp_lyr = inp_source.GetLayer() x_min, x_max, y_min, y_max = inp_lyr.GetExtent() inp_lyr = None inp_source = None elif ext.lower() == '.tif': inp_lyr = gdal.Open(input_lyr) inp_transform = inp_lyr.GetGeoTransform() x_min = inp_transform[0] x_max = x_min + inp_transform[1] * inp_lyr.RasterXSize y_max = inp_transform[3] y_min = y_max + inp_transform[5] * inp_lyr.RasterYSize inp_lyr = None else: raise Exception('The input data type is not recognized') return (x_min, y_min, x_max, y_max)
Example #17
Source File: functions.py From wa with Apache License 2.0 | 5 votes |
def Array_to_Raster(input_array, output_tiff, ll_corner, cellsize, srs_wkt): """ Saves an array into a raster file """ # Output out_driver = gdal.GetDriverByName('GTiff') if os.path.exists(output_tiff): out_driver.Delete(output_tiff) y_ncells, x_ncells = input_array.shape gdal_datatype = gdaltype_from_dtype(input_array.dtype) out_source = out_driver.Create(output_tiff, x_ncells, y_ncells, 1, gdal_datatype) out_band = out_source.GetRasterBand(1) out_band.SetNoDataValue(-9999) out_top_left_x = ll_corner[0] out_top_left_y = ll_corner[1] + cellsize*y_ncells out_source.SetGeoTransform((out_top_left_x, cellsize, 0, out_top_left_y, 0, -cellsize)) out_source.SetProjection(str(srs_wkt)) out_band.WriteArray(input_array) # Save and/or close the data sources out_source = None # Return return output_tiff
Example #18
Source File: Exploratory Spatial Data Analysis in PySAL.py From python-urbanPlanning with MIT License | 5 votes |
def Feature_to_Raster(input_shp, output_tiff, cellsize, field_name=False, NoData_value=-9999): """ Converts a shapefile into a raster """ # Input inp_driver = ogr.GetDriverByName('ESRI Shapefile') inp_source = inp_driver.Open(input_shp, 0) inp_lyr = inp_source.GetLayer() inp_srs = inp_lyr.GetSpatialRef() # Extent x_min, x_max, y_min, y_max = inp_lyr.GetExtent() x_ncells = int((x_max - x_min) / cellsize) y_ncells = int((y_max - y_min) / cellsize) # Output out_driver = gdal.GetDriverByName('GTiff') if os.path.exists(output_tiff): out_driver.Delete(output_tiff) out_source = out_driver.Create(output_tiff, x_ncells, y_ncells,1, gdal.GDT_Int16) print("+"*50) print(x_ncells, y_ncells,1, gdal.GDT_Int16) out_source.SetGeoTransform((x_min, cellsize, 0, y_max, 0, -cellsize)) out_source.SetProjection(inp_srs.ExportToWkt()) out_lyr = out_source.GetRasterBand(1) out_lyr.SetNoDataValue(NoData_value) # Rasterize # print(inp_lyr) if field_name: gdal.RasterizeLayer(out_source, [1], inp_lyr,options=["ATTRIBUTE={0}".format(field_name)]) else: gdal.RasterizeLayer(out_source, [1], inp_lyr, burn_values=[1]) # Save and/or close the data sources inp_source = None out_source = None # Return return output_tiff #geo_silhouettes
Example #19
Source File: LST.py From python-urbanPlanning with MIT License | 5 votes |
def rasterRW(self, LSTValue,resultsPath,LSTSavingFn,para): gdal.UseExceptions() # '''打开栅格数据''' # try: # src_ds=gdal.Open(os.path.join(resultsPath,LSTSavingFn)) # except RuntimeError as e: # print( 'Unable to open %s'% os.path.join(resultsPath,LSTSavingFn)) # print(e) # sys.exit(1) # print("metadata:",src_ds.GetMetadata()) '''初始化输出栅格''' driver=gdal.GetDriverByName('GTiff') print(para['RasterXSize'],para['RasterYSize']) out_raster=driver.Create(os.path.join(resultsPath,LSTSavingFn),para['RasterXSize'],para['RasterYSize'],1,gdal.GDT_Float64) out_raster.SetProjection(para['RasterProjection']) #设置投影与参考栅格同 out_raster.SetGeoTransform(para['GeoTransform']) #配置地理转换与参考栅格同 '''将数组传给栅格波段,为栅格值''' out_band=out_raster.GetRasterBand(1) out_band.WriteArray(LSTValue) # '''设置overview''' # overviews = pb.compute_overview_levels(out_raster.GetRasterBand(1)) # out_raster.BuildOverviews('average', overviews) '''清理缓存与移除数据源''' out_band.FlushCache() out_band.ComputeStatistics(False) # del src_ds,out_raster,out_band del out_raster,out_band ##解译精度评价。采样的数据是使用GIS平台人工判断提取,样例文件在Github中获取。
Example #20
Source File: shared.py From PyRate with Apache License 2.0 | 5 votes |
def write_output_geotiff(md, gt, wkt, data, dest, nodata): # pylint: disable=too-many-arguments """ Writes PyRate output data to a GeoTIFF file. :param dict md: Dictionary containing PyRate metadata :param list gt: GDAL geotransform for the data :param list wkt: GDAL projection information for the data :param ndarray data: Output data array to save :param str dest: Destination file name :param float nodata: No data value of data :return None, file saved to disk """ driver = gdal.GetDriverByName("GTiff") nrows, ncols = data.shape ds = driver.Create(dest, ncols, nrows, 1, gdal.GDT_Float32, options=['compress=packbits']) # set spatial reference for geotiff ds.SetGeoTransform(gt) ds.SetProjection(wkt) ds.SetMetadataItem(ifc.EPOCH_DATE, str(md[ifc.EPOCH_DATE])) # set other metadata ds.SetMetadataItem('DATA_TYPE', str(md['DATA_TYPE'])) # sequence position for time series products for k in [ifc.SEQUENCE_POSITION, ifc.PYRATE_REFPIX_X, ifc.PYRATE_REFPIX_Y, ifc.PYRATE_REFPIX_LAT, ifc.PYRATE_REFPIX_LON, ifc.PYRATE_MEAN_REF_AREA, ifc.PYRATE_STDDEV_REF_AREA]: if k in md: ds.SetMetadataItem(k, str(md[k])) # write data to geotiff band = ds.GetRasterBand(1) band.SetNoDataValue(nodata) band.WriteArray(data, 0, 0)
Example #21
Source File: functions.py From wa with Apache License 2.0 | 5 votes |
def Extract_Band(input_tiff, output_tiff, band_number=1): """ Extract and save a raster band into a new raster """ # Input inp_lyr = gdal.Open(input_tiff) inp_srs = inp_lyr.GetProjection() inp_transform = inp_lyr.GetGeoTransform() inp_band = inp_lyr.GetRasterBand(band_number) inp_array = inp_band.ReadAsArray() inp_data_type = inp_band.DataType NoData_value = inp_band.GetNoDataValue() x_ncells = inp_lyr.RasterXSize y_ncells = inp_lyr.RasterYSize # Output out_driver = gdal.GetDriverByName('GTiff') if os.path.exists(output_tiff): out_driver.Delete(output_tiff) out_source = out_driver.Create(output_tiff, x_ncells, y_ncells, 1, inp_data_type) out_band = out_source.GetRasterBand(1) out_band.SetNoDataValue(NoData_value) out_source.SetGeoTransform(inp_transform) out_source.SetProjection(inp_srs) out_band.WriteArray(inp_array) # Save and/or close the data sources inp_lyr = None out_source = None # Return return output_tiff
Example #22
Source File: pycrown.py From pycrown with GNU General Public License v3.0 | 5 votes |
def export_raster(self, raster, fname, title, res=None): """ Write array to raster file with gdal Parameters ---------- raster : ndarray raster to be exported fname : str file name title : str gdal title of the file res : int/float, optional resolution of the raster in m, if not provided the same as the input CHM """ res = res if res else self.resolution fname.parent.mkdir(parents=True, exist_ok=True) driver = gdal.GetDriverByName('GTIFF') y_pixels, x_pixels = raster.shape gdal_file = driver.Create( f'{fname}', x_pixels, y_pixels, 1, gdal.GDT_Float32 ) gdal_file.SetGeoTransform( (self.ul_lon, res, 0., self.ul_lat, 0., -res) ) dataset_srs = gdal.osr.SpatialReference() dataset_srs.ImportFromEPSG(self.epsg) gdal_file.SetProjection(dataset_srs.ExportToWkt()) band = gdal_file.GetRasterBand(1) band.SetDescription(title) band.SetNoDataValue(0.) band.WriteArray(raster) gdal_file.FlushCache() gdal_file = None
Example #23
Source File: OrganicEvolution_VegetationSystem.py From python-urbanPlanning with MIT License | 5 votes |
def array2raster(newRasterfn,rasterRef,rasterArray): try: source_ds=gdal.Open(rasterRef) except RuntimeError: print("Unable to open %s" % rasterRef,) print("..............................") print(rasterArray.shape) gt=source_ds.GetGeoTransform() #获取栅格的地理空间变换数据 print(gt) cols=rasterArray.shape[1] #获取列数量 rows=rasterArray.shape[0] #获取行数量 originX=gt[0] #获取起始点X值 originY=gt[3] #获取起始点Y值 pixelWidth=gt[1] #单元(cell)栅格宽 pixelHeight=gt[5] #单元(cell)栅格高 '''A:建立栅格''' driver=gdal.GetDriverByName('GTiff') #用于栅格输出的驱动实例化 outRaster=driver.Create(newRasterfn, cols, rows, 1, gdal.GDT_Float64) #建立输出栅格.Create(Driver self, char const * utf8_path, int xsize, int ysize, int bands=1, GDALDataType eType, char ** options=None) -> Dataset '''B:设置空间变换''' outRaster.SetGeoTransform((originX, pixelWidth, 0, originY, 0, pixelHeight)) #设置输出栅格的空间变换参数,或者直接使用gt,保持与参考栅格相同设置 '''C:给栅格波段赋值''' outband=outRaster.GetRasterBand(1) #获取输出栅格的一个输出波段 outband.WriteArray(rasterArray) #将数组写入该波段 '''D:设置栅格坐标系(投影)''' outRasterSRS=osr.SpatialReference() #空间参考实例化 outRasterSRS.ImportFromWkt(source_ds.GetProjectionRef()) #设置空间参考为参考栅格的投影值 outRaster.SetProjection(outRasterSRS.ExportToWkt()) #设置输出栅格的投影 '''E:清空缓存与关闭栅格''' outband.FlushCache() #清空缓存 source_ds=None #关闭栅格
Example #24
Source File: connectivity.py From python-urbanPlanning with MIT License | 5 votes |
def rasterRW(self, rasterArray,resultsPath,resultsFn,para): gdal.UseExceptions() # '''打开栅格数据''' # try: # src_ds=gdal.Open(os.path.join(resultsPath,resultsFn)) # except RuntimeError as e: # print( 'Unable to open %s'% os.path.join(resultsPath,resultsFn)) # print(e) # sys.exit(1) # print("metadata:",src_ds.GetMetadata()) '''初始化输出栅格''' driver=gdal.GetDriverByName('GTiff') print(para['RasterXSize'],para['RasterYSize']) out_raster=driver.Create(os.path.join(resultsPath,resultsFn),para['RasterXSize'],para['RasterYSize'],1,gdal.GDT_Float64) out_raster.SetProjection(para['RasterProjection']) #设置投影与参考栅格同 out_raster.SetGeoTransform(para['GeoTransform']) #配置地理转换与参考栅格同 '''将数组传给栅格波段,为栅格值''' out_band=out_raster.GetRasterBand(1) out_band.WriteArray(rasterArray) # '''设置overview''' # overviews = pb.compute_overview_levels(out_raster.GetRasterBand(1)) # out_raster.BuildOverviews('average', overviews) '''清理缓存与移除数据源''' out_band.FlushCache() out_band.ComputeStatistics(False) # del src_ds,out_raster,out_band print("raster saved successfully!") del out_raster,out_band
Example #25
Source File: prism.py From ArcPy with GNU General Public License v2.0 | 5 votes |
def __init__(self, bil_file, mask=None): self.bil_file = bil_file self.hdr_file = bil_file[:-3]+'hdr' gdal.GetDriverByName('EHdr').Register() self.get_array(mask=mask) self.originX = self.geotransform[0] self.originY = self.geotransform[3] self.pixelWidth = self.geotransform[1] self.pixelHeight = self.geotransform[5]
Example #26
Source File: QgsFmvPlayer.py From QGISFMV with GNU General Public License v3.0 | 5 votes |
def SaveGeoCapture(self, task, image, output, p, geotransform): ''' Save Current GeoReferenced Frame ''' ext = ".tiff" t = "out_" + p + ext name = "g_" + p src_file = os.path.join(output, t) image.save(src_file) # Opens source dataset src_ds = gdal.OpenEx(src_file, gdal.OF_RASTER | gdal.OF_READONLY, open_options=['NUM_THREADS=ALL_CPUS']) # Open destination dataset dst_filename = os.path.join(output, name + ext) dst_ds = gdal.GetDriverByName("GTiff").CreateCopy(dst_filename, src_ds, 0, options=['TILED=NO', 'BIGTIFF=NO', 'COMPRESS_OVERVIEW=DEFLATE', 'COMPRESS=LZW', 'NUM_THREADS=ALL_CPUS', 'predictor=2']) src_ds = None # Get raster projection srs = osr.SpatialReference() srs.ImportFromEPSG(4326) # Set projection dst_ds.SetProjection(srs.ExportToWkt()) # Set location dst_ds.SetGeoTransform(geotransform) dst_ds.GetRasterBand(1).SetNoDataValue(0) dst_ds.FlushCache() # Close files dst_ds = None os.remove(src_file) if task.isCanceled(): return None return {'task': task.description(), 'file': dst_filename}
Example #27
Source File: shared.py From PyRate with Apache License 2.0 | 5 votes |
def gdal_dataset(out_fname, columns, rows, driver="GTiff", bands=1, dtype='float32', metadata=None, crs=None, geotransform=None, creation_opts=None): """ Initialises a py-GDAL dataset object for writing image data. """ if dtype == 'float32': gdal_dtype = gdal.GDT_Float32 elif dtype == 'int16': gdal_dtype = gdal.GDT_Int16 else: # assume gdal.GDT val is passed to function gdal_dtype = dtype # create output dataset driver = gdal.GetDriverByName(driver) outds = driver.Create(out_fname, columns, rows, bands, gdal_dtype, options=creation_opts) # geospatial info outds.SetGeoTransform(geotransform) outds.SetProjection(crs) # add metadata if metadata is not None: for k, v in metadata.items(): outds.SetMetadataItem(k, str(v)) return outds
Example #28
Source File: functions.py From hants with Apache License 2.0 | 5 votes |
def Extract_Band(input_tiff, output_tiff, band_number=1): """ Extract and save a raster band into a new raster """ # Input inp_lyr = gdal.Open(input_tiff) inp_srs = inp_lyr.GetProjection() inp_transform = inp_lyr.GetGeoTransform() inp_band = inp_lyr.GetRasterBand(band_number) inp_array = inp_band.ReadAsArray() inp_data_type = inp_band.DataType NoData_value = inp_band.GetNoDataValue() x_ncells = inp_lyr.RasterXSize y_ncells = inp_lyr.RasterYSize # Output out_driver = gdal.GetDriverByName('GTiff') if os.path.exists(output_tiff): out_driver.Delete(output_tiff) out_source = out_driver.Create(output_tiff, x_ncells, y_ncells, 1, inp_data_type) out_band = out_source.GetRasterBand(1) out_band.SetNoDataValue(NoData_value) out_source.SetGeoTransform(inp_transform) out_source.SetProjection(inp_srs) out_band.WriteArray(inp_array) # Save and/or close the data sources inp_lyr = None out_source = None # Return return output_tiff
Example #29
Source File: functions.py From hants with Apache License 2.0 | 5 votes |
def Array_to_Raster(input_array, output_tiff, ll_corner, cellsize, srs_wkt): """ Saves an array into a raster file """ # Output out_driver = gdal.GetDriverByName('GTiff') if os.path.exists(output_tiff): out_driver.Delete(output_tiff) y_ncells, x_ncells = input_array.shape gdal_datatype = gdaltype_from_dtype(input_array.dtype) out_source = out_driver.Create(output_tiff, x_ncells, y_ncells, 1, gdal_datatype) out_band = out_source.GetRasterBand(1) out_band.SetNoDataValue(-9999) out_top_left_x = ll_corner[0] out_top_left_y = ll_corner[1] + cellsize*y_ncells out_source.SetGeoTransform((out_top_left_x, cellsize, 0, out_top_left_y, 0, -cellsize)) out_source.SetProjection(str(srs_wkt)) out_band.WriteArray(input_array) # Save and/or close the data sources out_source = None # Return return output_tiff
Example #30
Source File: data_conversions.py From wa with Apache License 2.0 | 5 votes |
def Save_as_tiff(name='', data='', geo='', projection=''): """ This function save the array as a geotiff Keyword arguments: name -- string, directory name data -- [array], dataset of the geotiff geo -- [minimum lon, pixelsize, rotation, maximum lat, rotation, pixelsize], (geospatial dataset) projection -- integer, the EPSG code """ # save as a geotiff driver = gdal.GetDriverByName("GTiff") dst_ds = driver.Create(name, int(data.shape[1]), int(data.shape[0]), 1, gdal.GDT_Float32, ['COMPRESS=LZW']) srse = osr.SpatialReference() if projection == '': srse.SetWellKnownGeogCS("WGS84") else: try: if not srse.SetWellKnownGeogCS(projection) == 6: srse.SetWellKnownGeogCS(projection) else: try: srse.ImportFromEPSG(int(projection)) except: srse.ImportFromWkt(projection) except: try: srse.ImportFromEPSG(int(projection)) except: srse.ImportFromWkt(projection) dst_ds.SetProjection(srse.ExportToWkt()) dst_ds.GetRasterBand(1).SetNoDataValue(-9999) dst_ds.SetGeoTransform(geo) dst_ds.GetRasterBand(1).WriteArray(data) dst_ds = None return()