def Calc(calc, outfile, NoDataValue=None, type=None, format=None, creation_options=None, allBands='', overwrite=False, debug=False, quiet=False, **input_files): """ Perform raster calculations with numpy syntax. Use any basic arithmetic supported by numpy arrays such as +-*\ along with logical operators such as >. Note that all files must have the same dimensions, but no projection checking is performed. Keyword arguments: [A-Z]: input files [A_band - Z_band]: band to use for respective input file Examples: add two files together: Calc("A+B", A="input1.tif", B="input2.tif", outfile="result.tif") average of two layers: Calc(calc="(A+B)/2", A="input1.tif", B="input2.tif", outfile="result.tif") set values of zero and below to null: Calc(calc="A*(A>0)", A="input.tif", A_band=2, outfile="result.tif", NoDataValue=0) """ opts = Values() opts.input_files = input_files opts.calc = calc opts.outF = outfile opts.NoDataValue = NoDataValue opts.type = type opts.format = format opts.creation_options = [] if creation_options is None else creation_options opts.allBands = allBands opts.overwrite = overwrite opts.debug = debug opts.quiet = quiet doit(opts, None)
def Calc(calc: Union[str, Sequence[str]], outfile: Optional[PathLike] = None, NoDataValue: Optional[Number] = None, type: Optional[Union[GDALDataType, str]] = None, format: Optional[str] = None, creation_options: Optional[Sequence[str]] = None, allBands: str = '', overwrite: bool = False, hideNoData: bool = False, projectionCheck: bool = False, color_table: Optional[Union[PathLike, gdal.ColorTable]] = None, extent: Optional[Extent] = None, projwin: Optional[Union[Tuple, GeoRectangle]] = None, user_namespace=None, debug: bool=False, quiet: bool = False, **input_files): """ Perform raster calculations with numpy syntax. Use any basic arithmetic supported by numpy arrays such as +-* along with logical operators such as >. Note that all files must have the same dimensions, but no projection checking is performed. Keyword arguments: [A-Z]: input files [A_band - Z_band]: band to use for respective input file Examples: add two files together: Calc("A+B", A="input1.tif", B="input2.tif", outfile="result.tif") average of two layers: Calc(calc="(A+B)/2", A="input1.tif", B="input2.tif", outfile="result.tif") set values of zero and below to null: Calc(calc="A*(A>0)", A="input.tif", A_band=2, outfile="result.tif", NoDataValue=0) work with two bands: Calc(["(A+B)/2", "A*(A>0)"], A="input.tif", A_band=1, B="input.tif", B_band=2, outfile="result.tif", NoDataValue=0) sum all files with hidden noDataValue Calc(calc="sum(a,axis=0)", a=['0.tif','1.tif','2.tif'], outfile="sum.tif", hideNoData=True) """ opts = Values() opts.input_files = input_files # Single calc value compatibility # (type is overridden in the parameter list) if isinstance(calc, (list, tuple)): opts.calc = calc else: opts.calc = [calc] opts.outF = outfile opts.NoDataValue = NoDataValue opts.type = type opts.format = format opts.creation_options = [] if creation_options is None else creation_options opts.allBands = allBands opts.overwrite = overwrite opts.hideNoData = hideNoData opts.projectionCheck = projectionCheck opts.color_table = color_table opts.extent = extent opts.projwin = projwin opts.user_namespace = user_namespace opts.debug = debug opts.quiet = quiet return doit(opts, None)