为何gdal.Translate不接受第三个参数?参数调用报错排查
解决GDAL Translate参数报错的问题
这个问题我之前在项目里也碰到过,核心是没搞清楚GDAL Python API里Translate函数的参数传递规则~
先看你提到的函数定义:def Translate(destName, srcDS, **kwargs):,这里的**kwargs是Python的可变关键字参数语法,意思是除了前两个必填的位置参数destName和srcDS,所有额外的参数都必须以关键字参数的形式传递,不能直接用位置参数的方式传第三个参数。
你之前写的gdal.Translate(tileName, rasterfile, options)是把options作为第三个位置参数传入,这不符合函数的定义规则,所以Python会报错说“只接受2个位置参数,但传了3个”。
正确的写法有两种:
直接把options作为关键字参数传递
只需要给第三个参数加上关键字options=就行,代码如下:gdal.Translate(tileName, rasterfile, options=options)不管你的
options是字符串形式的选项集合,还是gdal.TranslateOptions对象,这样传都会被函数正确识别。拆分选项为独立的关键字参数
如果你的选项不多,也可以直接把每个选项拆成单独的关键字参数传入,比如要设置输出格式和分辨率:gdal.Translate(tileName, rasterfile, format='GTiff', xRes=5, yRes=5, srcWin=[0,0,100,100])这种写法可读性更强,也不容易出错。
只要按照上面的方式传递参数,就能正常使用Translate的各种选项,得到你想要的处理结果啦。
内容的提问来源于stack exchange,提问作者jdoe
相关产品推荐
相关产品推荐

