2015-07-02 1 views
2

Я установил Python 3.4.0 64-разрядный и gdal-файл-1400-x64-gdal-1-11-1-mapserver-6-4-1. zip от http://www.gisinternals.com/release.php. Я нашел привязку от http://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal, а имя файла - GDAL-1.11.2-cp34-none-win_amd64. Я успешно устанавливаю эти файлы и импортирую gdal. Тем не менее, когда я запускаю следующую команду в среде IDE Python для слияния файлов 1 2 и 3, я получил ошибкуgdal_merge.py не работает после gdal и установлены привязки python

>>> gdal_merge.py -o out.tif 1.tif 2.tif 3.tif 
    File "<console>", line 1 
    gdal_merge.py -o out.tif 1.tif 2.tif 3.tif 
       ^
SyntaxError: invalid syntax 

Я специально проверить, могу ли я импортировать gdal_merge ниже

>>> import gdal_merge 

и все было нормально. Я ценю, если кто-нибудь может помочь с этой проблемой.

ответ

2

gdal_merge.py является частью GDAL utilities, которые выполняются из командной строки, а не из Python IDE или другого сценария Python.

Просто откройте командную строку (cmd) и тип:

python gdal_merge.py -o out.tif 1.tif 2.tif 3.tif 

В зависимости от переменных окружения и включены ли вы GDAL в переменной Path вам может понадобиться specificy полный путь к gdal_merge.py и/или может оставьте в начале вызова python.

+0

Спасибо за комментарий. У меня есть два вопроса: мне интересно, можно ли использовать эту команду в среде Python. Я могу использовать другие функции GDAl, но имею проблему с этим. Мой второй вопрос: есть ли способ, который вместо того, чтобы вводить имя файла, например 1.tif 2.tif и т. Д., Я мог бы объединить все файлы в папке? Спасибо – user2148425

+0

Если вы хотите использовать утилит командной строки из Python, я предлагаю ознакомиться с модулем [subprocess] (https://docs.python.org/2/library/subprocess.html). Вы также можете использовать [пакетный скриптинг для объединения файлов] (http://gis.stackexchange.com/questions/88058/how-to-batch-gdal-merge-on-win7-in-one-command-line-command). – Kersten

+0

Мне интересно, как я могу передать входной аргумент «-n 0» в команде, которая будет использоваться в подпроцессе. Кажется, что числовые значения не могут быть переданы, поскольку они принимают только текстовые значения. – user2148425