別のロジックで大量に作成したラスター データセット(画像ファイル)が ArcGIS で正しく認識できるかどうかを検品するために作成しました。ファイル ジオデータベースのラスター データセットが認識できないことは無いはずなので対象外です。
#ArcGIS が認識できないラスター データセットをログに出力 #パラメーター #input_dir:ラスター データセットが含まれる親フォルダー パス(サブ フォルダーを再帰的に検索) #log_file :出力ログ ファイル(フルパス) #file_ext :検査したいラスター データセットの拡張子(ジオデータベースのラスター データセットは検査不可) #備考 #繰り返し実行した場合、ログは上書きではなく追記されます #環境 #ArcMap 10.4.1 もしくは ArcGIS Pro 2.1 で動作を確認 import os import logging import arcpy #検索ディレクトリ input_dir = r'D:\GIS\SpatialData\Data\Rasters' log_file = r'D:\GIS\SpatialData\Data\Rasters\CheckTIFFs.log' file_ext = 'tif' #再帰的に指定フォルダー以下のファイルを特定拡張子で検索する関数 def walk_files_with(directory='', extension = ''): for root, dirnames, filenames in os.walk(directory): for filename in filenames: if filename.lower().endswith(''+extension): yield os.path.join(root,filename) #ログ ファイル保存処理 fh = logging.FileHandler(log_file) logger = logging.getLogger('log') logger.setLevel(logging.ERROR) #記録するログ レベル logger.addHandler(fh) logger.handlers #処理 for file in walk_files_with(input_dir, file_ext): try: desc = arcpy.Describe(file) bandCount = desc.bandCount #TIFF ファイルのバンド数取得 print('OK:{0}'.format(file)) #ファイル認識正常時 except: print('NG:{0}'.format(file)) #ファイル認識異常時 logger.log(logging.ERROR, 'NG:{0}'.format(file)) #ファイル認識異常時にログ ファイル出力 print('処理が終了しました。')
ダウンロード
ダウンロード後、拡張子を py に変更して使用してください。