2016-03-01 5 views
0

Природа того, что я делаю, основана на базе ГИС, по моей проблеме основано на 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, а не с помощью итерации продолжать добавлять имена?

+0

Это потому, что 'outpath' никогда не возвращается к базовому пути в каждом цикле. Он сохранит значение, на которое оно было установлено. Вы можете справиться с этими двумя способами: сначала переместите значение инициализации в цикл, прежде чем добавлять их. Или, что я бы рекомендовал, меняет имя 'outpath' на' outroot' и меняет дополнение к 'outpath = outroot + ndvi' – TehCorwiz

ответ

1

Просто перезагрузите outpath перед добавлением чего-то еще.

#run my operation 
for ndvi, ndii, rgr, swir32, in zip(NDVIraster, NDIIraster,RGRraster,SWIR32raster): 
    outpath='F:\Sheyenne\Normalized_Indices\Fuzzy_Membership\\' 
    outpath=outpath + ndvi 
    outraster= arcpy.gp.FuzzyOverlay_sa([ndvi, ndii, rgr, swir32], outpath, "AND") 
0

Вы переписываете переменную outpath. Вам нужно использовать 2 переменные для работы так, как вы хотите, например, используя outpath_base для корня.

#set the output pathway 
outpath_base='F:\Sheyenne\Normalized_Indices\Fuzzy_Membership\\' 

#run my operation 
for ndvi, ndii, rgr, swir32, in zip(NDVIraster, NDIIraster,RGRraster, SWIR32raster): 
    outpath=outpath_base + ndvi 
    outraster= arcpy.gp.FuzzyOverlay_sa([ndvi, ndii, rgr, swir32], outpath, "AND") 

 Смежные вопросы

  • Нет связанных вопросов^_^