YouTube | Facebook | X(Twitter) | RSS

ArcGIS が認識できないラスター データセットをログに出力

2018/7/9 (月)

別のロジックで大量に作成したラスター データセット(画像ファイル)が 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 に変更して使用してください。

  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-, ,