Природа того, что я делаю, основана на базе ГИС, по моей проблеме основано на python, поэтому я публикую здесь.Задание пути вывода с циклом по зашифрованному списку
У меня есть 4 папки, содержащие растровые файлы (файлы .tif). Я выполняю операцию над ними, а затем сохраняю вывод в определенном месте. Вот где моя проблема, указав мой выходной путь.
код, я использую это следующим образом:
import arcpy
from arcpy.sa import *
#set pathway to rasters
arcpy.env.workspace=r'F:\Sheyenne\Normalized_Indices\Fuzzy_Overlay\NDVI'
NDVIraster=arcpy.ListRasters('*tif')
arcpy.env.workspace=r'F:\Sheyenne\Normalized_Indices\Fuzzy_Overlay\NDII'
NDIIraster=arcpy.ListRasters('*tif')
arcpy.env.workspace=r'F:\Sheyenne\Normalized_Indices\Fuzzy_Overlay\RGR'
RGRraster=arcpy.ListRasters('*tif')
arcpy.env.workspace=r'F:\Sheyenne\Normalized_Indices\Fuzzy_Overlay\SWIR32'
SWIR32raster=arcpy.ListRasters('*tif')
#set the output pathway
outpath='F:\Sheyenne\Normalized_Indices\Fuzzy_Membership\\'
#run my operation
for ndvi, ndii, rgr, swir32, in zip(NDVIraster, NDIIraster,RGRraster, SWIR32raster):
outpath=outpath + ndvi
outraster= arcpy.gp.FuzzyOverlay_sa([ndvi, ndii, rgr, swir32], outpath, "AND")
поэтому я хочу, чтобы мой выходной путь комбинацией исходного outpath
и имени файлов в ndvi
. Когда я печатаю outpath
, хотя он начинается с сохранения первого имени файла, второй файл сохраняется в первом имени файла и втором имени файла. Таким образом, вывод будет file1.tif, вывод два - file1.tiffile2.tif, а вывод три - file1.tiffile2.tiffile3.tif и т. Д.
Как просто сохранить в соответствующие имена файлов в ndvi
, а не с помощью итерации продолжать добавлять имена?
Это потому, что 'outpath' никогда не возвращается к базовому пути в каждом цикле. Он сохранит значение, на которое оно было установлено. Вы можете справиться с этими двумя способами: сначала переместите значение инициализации в цикл, прежде чем добавлять их. Или, что я бы рекомендовал, меняет имя 'outpath' на' outroot' и меняет дополнение к 'outpath = outroot + ndvi' – TehCorwiz