您要做的是在脚本中设置栅格属性或在ArcCatalog中手动更改它。这不会创建新的栅格,甚至不会花费很长时间。
在python中有点棘手:
import sys, os, arcpy
InFolder = sys.argv[1]
arcpy.env.workspace = InFolder
for Ras in arcpy.ListRasters():
arcpy.AddMessage("Processing " + Ras)
arcpy.SetRasterProperties_management(Ras,nodata="1 0;2 0;3 0")
因为nodata在列表的下方,所以我发现更容易指定它。参数是Band Value; Band Value; ...,直到所有频段都被寻址为止。如果您可能在同一文件夹中有更多(或更少)频段,则必须使用arcpy.Describe和bandCount属性为正确的频段数设置null:
import sys, os, arcpy
InFolder = sys.argv[1]
arcpy.env.workspace = InFolder
for Ras in arcpy.ListRasters():
arcpy.AddMessage("Processing " + Ras)
desc = arcpy.Describe(Ras)
if desc.bandCount == 3:
arcpy.SetRasterProperties_management(Ras,nodata="1 0;2 0;3 0")
elif desc.bandCount == 4:
arcpy.SetRasterProperties_management(Ras,nodata="1 0;2 0;3 0;4 0")
elif desc.bandCount == 1:
arcpy.SetRasterProperties_management(Ras,nodata="1 0")
在ArcCatalog中,右键单击图层并转到属性:
点击编辑按钮:
输入值,然后单击“确定”以关闭NoData编辑器,并单击“确定”以执行更改。
现在,栅格将在像元值为0,0,0的ArcMap中不显示任何内容。