为什么 gdal.translate 不接受第三个参数?

Why does gdal.translate not accept a third argument?

根据文档,gdal.Translate 应该接受三个参数。下面的代码片段直接从定义文件中复制gdal.py

 def Translate(destName, srcDS, **kwargs):

我的函数调用如下所示:

 gdal.Translate(tileName, rasterfile, options)

我的 IDE ( VScode) 立即注意到有些地方不对劲,并告诉我给出的论点太多了。 运行 该代码导致以下错误消息:

Traceback (most recent call last): File "c:/Users/parejo/Desktop/tile_gen.py", line 24, in gdal.Translate(tileName, rasterfile, options) TypeError: Translate() takes 2 positional arguments but 3 were given

我在这里错过了什么?

代码本身没问题,如果我删除 options 参数,一切运行顺利,但由于我缺少我的选项,我没有得到我想要的结果。

尝试用这个调用(没有测试代码)

gdal.Translate(tileName, rasterfile, *options)
def Translate(destName, srcDS, **kwargs):

表示函数接受可变数量的 keyword arguments,它可以随意解释。

如果你有一个字典,例如

options = {"something": true}

或更动态生成的东西,并且您希望将其传入,您可以在调用函数时使用相同的 ** 语法将其解压缩到关键字参数中:

gdal.Translate(tileName, rasterfile, **options)

当你不需要动态调整关键字参数时,直接传入它们更符合 Pythonic:

gdal.Translate(tileName, rasterfile, something=True)

像这样的东西应该可以工作:

options = {
    'destName': tileName,
    'srcDS': rasterfile,
    # kwargs options
}
gdal.Translate(**options)