何がやりたいことはあるセットのラスタプロパティは、スクリプトまたは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で、レイヤーを右クリックしてプロパティに移動します。
編集ボタンを押します:
値を入力し、[OK]をクリックしてNoDataエディターを閉じ、[OK]をクリックして変更を適用します。
これで、セル値が0,0,0の場合、ラスターはArcMapに何も表示しなくなります。