Мой вопрос касается библиотеки GDAL (библиотека геопространственной абстракции данных) с именем gdaladdo. Этот инструмент должен создавать обзорные изображения из файла .tif. Из документации, которую я нашел на ней, я вижу, что она обычно вводится в командную строку. Я пытался найти способ запустить его через мою программу Python, потому что у меня есть несколько тысяч изображений .tif, которым нужны внешние обзоры. Моя конечная цель в этой программе - передать ей изображение .tif и создать для него пирамиду .rrd. Вот мой код до сих пор:Как правильно использовать gdaladdo в программе Python?
import gdal
import os
from subprocess import call
#Define gdaladdo
gdaladdoFile = 'C:\Program Files (x86)\GDAL\gdaladdo.exe'
#--------------------------------------------------------
os.chdir("Images")
openfile = open('imagenames.txt', 'r')
if {openfile.closed == False}:
count = 0
while count < 5:
#Grab the image to work with
filename = openfile.readline()
#Strip off the newline
filename.rstrip('\n')
#Create pyramid
call([gdaladdoFile, '-ro', '--config USE_RRD YES', 'filename', '2 4 8 16'])
count += 1
openfile.close()
else:
print "No file to open!"
я получаю ошибки, относящиеся к call([gdaladdoFile, '-ro', '--config USE_RRD YES', 'filename', '2 4 8 16'])
линии. Когда обычно вводите эту команду в командную строку, она должна выглядеть так: 'gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE erdas.img 2 4 8 16', но Python говорит, что параметры (например, --config USE_RRD YES) неверны синтаксис. Поэтому я последовал примеру передачи аргументов подпроцессу (который я нашел здесь) и помещал опции внутри одинарных кавычек и добавлял запятые после каждого из них. Синтаксические ошибки исчезают, но появляются новые, когда я запускаю программу для ее проверки. В окне командной строки он говорит «FAILURE: Неизвестное имя параметра» --config USE_RRD YES '. Как я могу изменить эту конкретную строку, чтобы заставить ее делать то, что я хочу?
Я новичок в stackoverflow и все еще изучаю программы в колледже, поэтому, пожалуйста, простите мое невежество и будьте нежны со мной. Заранее благодарю вас за помощь в решении этой проблемы.
gdaladdo reference link, в случае необходимости.
Вы пытались расщепить '--config USE_RRD YES' на три отдельных элемента списка? т.е. '' --config ',' USE_RRD ',' YES''? Кроме того, я не знаю, заметили ли вы это, но вы передаете строку «имя_файла» вместо переменной 'filename' –
@RNar. Я попробовал это сейчас, а приглашение командной строки теперь дает мне разные ошибки. Прежде всего, это связано с изменением моего каталога (которое я просто исправил, чтобы быть более понятным), и теперь он жалуется, что мои изображения не существуют, когда они очень много делают. Когда я пройду через все эти странные ошибки, я дам вам знать, исправляет ли ваше предложение мою реальную проблему. Спасибо за идею! – Aizenmyouou
@RNar Еще раз спасибо за ваше предложение. Он решил мою проблему, и я, наконец, получил файл! Задача решена. – Aizenmyouou