我们从Python开源项目中,提取了以下2个代码示例,用于说明如何使用osgeo.gdal.TermProgress()。
def dump_raster(self, filename, driver='GTiff', attr=None, pixel_size=1., remove=True): """ Output layer to GDAL Rasterfile Parameters ---------- filename : string path to shape-filename driver : string GDAL Raster Driver attr : string attribute to burn into raster pixel_size : float pixel Size in source units remove : bool if True removes existing output file """ layer = self.ds.GetLayer() layer.ResetReading() x_min, x_max, y_min, y_max = layer.GetExtent() cols = int((x_max - x_min) / pixel_size) rows = int((y_max - y_min) / pixel_size) # Todo: at the moment, always writing floats ds_out = io.gdal_create_dataset('MEM', '', cols, rows, 1, gdal_type=gdal.GDT_Float32) ds_out.SetGeoTransform((x_min, pixel_size, 0, y_max, 0, -pixel_size)) proj = layer.GetSpatialRef() if proj is None: proj = self._srs ds_out.SetProjection(proj.ExportToWkt()) band = ds_out.GetRasterBand(1) band.FlushCache() print("Rasterize layers") if attr is not None: gdal.RasterizeLayer(ds_out, [1], layer, burn_values=[0], options=["ATTRIBUTE={0}".format(attr), "ALL_TOUCHED=TRUE"], callback=gdal.TermProgress) else: gdal.RasterizeLayer(ds_out, [1], layer, burn_values=[1], options=["ALL_TOUCHED=TRUE"], callback=gdal.TermProgress) io.write_raster_dataset(filename, ds_out, driver, remove=remove) del ds_out
def _create_dst_datasource(self, **kwargs): """ Create destination target gdal.Dataset Creates one layer for each target polygon, consisting of the needed source data attributed with index and weights fields Returns ------- ds_mem : gdal.Dataset object """ # TODO: kwargs necessary? # create intermediate mem dataset ds_mem = io.gdal_create_dataset('Memory', 'dst', gdal_type=gdal.OF_VECTOR) # get src geometry layer src_lyr = self.src.ds.GetLayerByName('src') src_lyr.ResetReading() src_lyr.SetSpatialFilter(None) geom_type = src_lyr.GetGeomType() # create temp Buffer layer (time consuming) ds_tmp = io.gdal_create_dataset('Memory', 'tmp', gdal_type=gdal.OF_VECTOR) georef.ogr_copy_layer(self.trg.ds, 0, ds_tmp) tmp_trg_lyr = ds_tmp.GetLayer() for i in range(tmp_trg_lyr.GetFeatureCount()): feat = tmp_trg_lyr.GetFeature(i) feat.SetGeometryDirectly(feat.GetGeometryRef(). Buffer(self._buffer)) tmp_trg_lyr.SetFeature(feat) # get target layer, iterate over polygons and calculate intersections tmp_trg_lyr.ResetReading() self.tmp_lyr = georef.ogr_create_layer(ds_mem, 'dst', srs=self._srs, geom_type=geom_type) print("Calculate Intersection source/target-layers") try: tmp_trg_lyr.Intersection(src_lyr, self.tmp_lyr, options=['SKIP_FAILURES=YES', 'INPUT_PREFIX=trg_', 'METHOD_PREFIX=src_', 'PROMOTE_TO_MULTI=YES', 'PRETEST_CONTAINMENT=YES'], callback=gdal.TermProgress) except RuntimeError: # Catch RuntimeError that was reported on gdal 1.11.1 # on Windows systems tmp_trg_lyr.Intersection(src_lyr, self.tmp_lyr, options=['SKIP_FAILURES=YES', 'INPUT_PREFIX=trg_', 'METHOD_PREFIX=src_', 'PROMOTE_TO_MULTI=YES', 'PRETEST_CONTAINMENT=YES']) return ds_mem