後輩からこんな質問を受けました。
「あるフォルダに47都道府県の子フォルダがあり、その中一つずつジオデータベースがあります。ジオデータベースにはたくさんのフィーチャクラスがあるんですが、これらすべてのフィーチャクラスにすべてメタデータをインポートしたいです。今日はノー残業デーなので早く帰りたいです。」
かわいい後輩のためなら仕方がないと一肌脱ぎました。
フォルダの再帰検索をやればいいんだろうとは思ったんだけど、ぱっと思いつかなかったので楽にコードをかける方法を考えました。
ArcCatalogの検索機能を使うと指定したフォルダ以下を指定したデータ タイプに絞り込んで検索してくれます。検索結果はカタログ ツリーのSearch Results以下にSearchResultsオブジェクトとして取得できるので、これをIEnumObject::Next()で取得する方がコード量的にも簡単でした。コードにはメタデータのインポート方法は割愛して ます。
手順は以下のとおりです。
- [ArcCatalog] → [編集]メニュー → をクリック
- ダイアログで任意の条件を指定してボタンをクリック
- 結果がカタログ ツリーの[Search Results] → [マイ サーチ](デフォルト名)として出力されるので、これを選択
- 以下のマクロをArcCatalogに貼り付けて実行
後で再帰検索の方法も考えてみました。
「ありがとうございます。助かりました。」後輩と固く握手を交わし、彼女は定時で帰っていきました。
自分はノー残業できなかったです。
フォルダの再帰検索をやればいいんだろうと考えたのがこれ。コードにはメタデータのインポート方法は割愛して ます。