使用 Arcpy 批处理光栅图像
Batch processing raster images with Arcpy
我正在尝试在 Python 中编写一个代码,它将 5 个按顺序列出的波段光栅图像堆叠在一个文件夹中,然后将堆叠的图像输出到一个新文件夹。我的第一直觉是使用复合带工具在 arcpy 中自动化某种 for 循环结构。
我需要以下方面的帮助:
我在开始使用 for 循环时遇到问题。关于如何解决这个问题有什么建议吗?
import arcpy
arcpy.env.workspace = ".\"
outws = "Stacked_Images_Folder"
for rasters in folder:
band1 =
band2 =
band3 =
band4 =
band5 =
arcpy.CompositeBands_management("band1.tif;band2.tif;band3.tif;
band4.tif, band5.tif","stacked_img.tif")
我想弄清楚脚本如何知道在堆叠 5 个波段后移动到新图像。我是否需要在开始之前将图像分类到单独的文件夹中,或者是否有解决方法,例如代码知道在达到 5 个波段后移动到下一张图像?
如果您的栅格都在同一个文件夹中,则不需要 for 循环来执行此操作:
import arcpy
wd="Y:/" #have this as your directory where all rasters are located
arcpy.env.workspace = wd
raster_list=arcpy.ListRasters("", "tif")
arcpy.CompositeBands_management(raster_list,"stacked_img.tif") #will save output on the same folder specified above.
如果要保存到新的子目录:
import os
outws = wd+"Stacked_Images_Folder/"
os.makedirs(outws)
arcpy.CompositeBands_management(raster_list, outws + "stacked_img.tif")
现在,如果您要将多组光栅合并到具有共同起始文件名的同一文件夹中,例如 img1-b1、img1-b2 等,您可以使用以下简单的方法使整个过程正常进行实施:
import arcpy
image_names=["img" + str(s) for s in range(1,143)]
wd="Y:/" #have this as your directory where all rasters are located
arcpy.env.workspace = wd
for image_name in image_names:
print image_name
raster_list=arcpy.ListRasters(image_name+"-*", "tif")
import os
outws = wd+"Stacked_Images_Folder/"
os.makedirs(outws)
arcpy.CompositeBands_management(raster_list, outws + image_name+ "_stacked_img.tif")
我正在尝试在 Python 中编写一个代码,它将 5 个按顺序列出的波段光栅图像堆叠在一个文件夹中,然后将堆叠的图像输出到一个新文件夹。我的第一直觉是使用复合带工具在 arcpy 中自动化某种 for 循环结构。
我需要以下方面的帮助:
我在开始使用 for 循环时遇到问题。关于如何解决这个问题有什么建议吗?
import arcpy arcpy.env.workspace = ".\" outws = "Stacked_Images_Folder" for rasters in folder: band1 = band2 = band3 = band4 = band5 = arcpy.CompositeBands_management("band1.tif;band2.tif;band3.tif; band4.tif, band5.tif","stacked_img.tif")
我想弄清楚脚本如何知道在堆叠 5 个波段后移动到新图像。我是否需要在开始之前将图像分类到单独的文件夹中,或者是否有解决方法,例如代码知道在达到 5 个波段后移动到下一张图像?
如果您的栅格都在同一个文件夹中,则不需要 for 循环来执行此操作:
import arcpy
wd="Y:/" #have this as your directory where all rasters are located
arcpy.env.workspace = wd
raster_list=arcpy.ListRasters("", "tif")
arcpy.CompositeBands_management(raster_list,"stacked_img.tif") #will save output on the same folder specified above.
如果要保存到新的子目录:
import os
outws = wd+"Stacked_Images_Folder/"
os.makedirs(outws)
arcpy.CompositeBands_management(raster_list, outws + "stacked_img.tif")
现在,如果您要将多组光栅合并到具有共同起始文件名的同一文件夹中,例如 img1-b1、img1-b2 等,您可以使用以下简单的方法使整个过程正常进行实施:
import arcpy
image_names=["img" + str(s) for s in range(1,143)]
wd="Y:/" #have this as your directory where all rasters are located
arcpy.env.workspace = wd
for image_name in image_names:
print image_name
raster_list=arcpy.ListRasters(image_name+"-*", "tif")
import os
outws = wd+"Stacked_Images_Folder/"
os.makedirs(outws)
arcpy.CompositeBands_management(raster_list, outws + image_name+ "_stacked_img.tif")