Почему gdal.translate не принимает третий аргумент? - PullRequest
0 голосов
/ 09 июля 2019

Согласно документации, gdal.Translate должен принимать три аргумента.Приведенный ниже фрагмент кода копируется непосредственно из файла определения gdal.py

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

Мой вызов функции выглядит следующим образом:

 gdal.Translate(tileName, rasterfile, options)

Моя IDE (VScode) мгновенно замечает, что что-то отключенои говорит мне, что дано слишком много аргументов.Запуск кода приводит к следующему сообщению об ошибке:

Traceback (последний вызов был последним): файл "c: /Users/parejo/Desktop/tile_gen.py", строка 24, в gdal.Translate(tileName, rasterfile, options) TypeError: Translate () принимает 2 позиционных аргумента, но было дано 3

Что мне здесь не хватает?

Сам код в порядке, если я удаляюoptions аргумент, все идет гладко, но так как мне не хватает моих опций, я не получаю желаемых результатов.

Ответы [ 3 ]

1 голос
/ 09 июля 2019
def Translate(destName, srcDS, **kwargs):

означает, что функция принимает переменное число аргументов ключевого слова , которое она может интерпретировать на досуге.

Если у вас есть дикт, например,

options = {"something": true}

или что-то более динамически генерируемое, и вы хотите передать его, вы можете распаковать его в аргументы ключевого слова с тем же синтаксисом ** при вызове функции:

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

Когда вы этого не сделаетенеобходимо динамически корректировать аргументы ключевых слов, более Pythonic просто передает их:

gdal.Translate(tileName, rasterfile, something=True)
0 голосов
/ 09 июля 2019

Примерно так должно работать:

options = {
    'destName': tileName,
    'srcDS': rasterfile,
    # kwargs options
}
gdal.Translate(**options)
0 голосов
/ 09 июля 2019

Попробуйте позвонить с этим (не проверенный код)

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