一度に数千のデータ(シェープとJPG画像)に投影法を定義することになった.なぜってそりゃあ,投影法が定義されていないデータだから(涙).
ArcView3の頃は,シェープファイルが入ったフォルダを指定するとそのフォルダに入っているシェープを一挙に投影法定義をしてくれる機能があった気がするのだが,最近のArcGISではフォルダを選択しようとしてもフォルダの階層を降りて行くだけのむなしーやり取りをArcGISとの間でしていた.
うーんしかし,めんどっちすぎる.どうにかならないものかと思い,方法を探してみたらArcToolboxのバッチ処理というトピックを発見した.ツール名上を右クリックして「バッチ」と選ぶと,複数の入力ファイルを選択し処理を実行できるモードでそのツールが起動する.
入力ファイルの方はArcCatalogを開いておいて,そこからファイルをえいやっとドラッグすれば指定ができる.バッチっぽく手間なしだ.
しかし肝心の投影法の方は,1つ1つその行(というかセル)をダブルクリックして,投影法を指定するか,一度指定した投影法の定義(.prjの中身そのもの)をコピーして,1行1行ペーストするかしかやりようがなかった.というより,その方法しか知らなかったし,ESRIのページを検索しても「コピペしなさい」って書いてあるし.
おかげさまで,数千のファイルにそれを設定したときは,右腕が痛かったですわ.
ここまでが前回投影法を定義した時のお話.ArcGISのバージョンは9.3だった.
で,また投影法をたくさん定義することになった.今回はArcGIS10だ.「何かもっと方法があるんでは」とまた思い直し,いろいろかちかちとバッチモードのArcToolboxをいじっていたら,「他の行に適用」という選択肢があるではないか.
ArcToolboxのパラメタ(入力ファイル名とか,投影法名とか)を指定するセルを右クリックするとこの選択肢が出現する.おおー!もしかして超便利?!
試しに「他の行に適用」してみたのだが,全然他の行に適用されない.ちぇー.バグ?それとも私のオペちょん?
ちょっとがっかりしつつ少し考えてみて,適用したい行を選択した状態(行番号をクリックして水色になった状態)にしてから,値が入ったセルに戻って「他の行に適用」するとうまくいくことが分かった.ぶらぼー.
ただし,空白セル上で「他の行に適用」すると,行を選択していなくてもそれは適用されて,今までパラメタを指定した内容まで消えるので注意が必要だ.
#やっぱりちょっとバグっぽいと思う.ぼそ.
9.3の時はこんな選択肢あったかなー.記憶が定かじゃないけど,バッチ処理するときセルを右クリックしたことがなかったから,もしかするとあったのかもしれない.
パイソンとかがすらすら書ければこんな苦労はしないんだろうけど...まぁ,バッチが本当にバッチっぽく処理が実行できるようになってよかったことよ.
ArcView3の頃は,シェープファイルが入ったフォルダを指定するとそのフォルダに入っているシェープを一挙に投影法定義をしてくれる機能があった気がするのだが,最近のArcGISではフォルダを選択しようとしてもフォルダの階層を降りて行くだけのむなしーやり取りをArcGISとの間でしていた.
うーんしかし,めんどっちすぎる.どうにかならないものかと思い,方法を探してみたらArcToolboxのバッチ処理というトピックを発見した.ツール名上を右クリックして「バッチ」と選ぶと,複数の入力ファイルを選択し処理を実行できるモードでそのツールが起動する.
入力ファイルの方はArcCatalogを開いておいて,そこからファイルをえいやっとドラッグすれば指定ができる.バッチっぽく手間なしだ.
しかし肝心の投影法の方は,1つ1つその行(というかセル)をダブルクリックして,投影法を指定するか,一度指定した投影法の定義(.prjの中身そのもの)をコピーして,1行1行ペーストするかしかやりようがなかった.というより,その方法しか知らなかったし,ESRIのページを検索しても「コピペしなさい」って書いてあるし.
おかげさまで,数千のファイルにそれを設定したときは,右腕が痛かったですわ.
ここまでが前回投影法を定義した時のお話.ArcGISのバージョンは9.3だった.
で,また投影法をたくさん定義することになった.今回はArcGIS10だ.「何かもっと方法があるんでは」とまた思い直し,いろいろかちかちとバッチモードのArcToolboxをいじっていたら,「他の行に適用」という選択肢があるではないか.
ArcToolboxのパラメタ(入力ファイル名とか,投影法名とか)を指定するセルを右クリックするとこの選択肢が出現する.おおー!もしかして超便利?!
試しに「他の行に適用」してみたのだが,全然他の行に適用されない.ちぇー.バグ?それとも私のオペちょん?
ちょっとがっかりしつつ少し考えてみて,適用したい行を選択した状態(行番号をクリックして水色になった状態)にしてから,値が入ったセルに戻って「他の行に適用」するとうまくいくことが分かった.ぶらぼー.
ただし,空白セル上で「他の行に適用」すると,行を選択していなくてもそれは適用されて,今までパラメタを指定した内容まで消えるので注意が必要だ.
#やっぱりちょっとバグっぽいと思う.ぼそ.
9.3の時はこんな選択肢あったかなー.記憶が定かじゃないけど,バッチ処理するときセルを右クリックしたことがなかったから,もしかするとあったのかもしれない.
パイソンとかがすらすら書ければこんな苦労はしないんだろうけど...まぁ,バッチが本当にバッチっぽく処理が実行できるようになってよかったことよ.
いつだったか、バッチ処理がArcToolboxから行えるようになったときから「他レコードへの適用」はできました。
バッチ処理の画面の操作法もヘルプにの
http://help.arcgis.com/ja/arcgisdesktop/10.0/help/index.html#//00210000000w000000.htm
現在のワークスペースを設定しておくとファイル名の入力もかなり楽になります!
http://help.arcgis.com/ja/arcgisdesktop/10.0/help/index.html#/na/002100000037000000/
1. 定義づけしたいshpを1つのフォルダに入れます。
2. いずれか1つのshpに対して投影法の定義を行います。
3. 2で作成されたprjファイルを2.prjにリネームします。
4. コマンドプロンプトで1のフォルダに移動し
forfiles /M *.shp /C "cmd /c copy 2.prj @fname.prj"
を実行します。
一応catalogで確認すると問題ないように思いますが、どうでしょう?
その後,適用したいセルの中にカーソルが表示されていない状態なら「他の行に適用」がうまくいくことを発見しました..prjの中身がだらーんとセル内に表示されている状態だったので,セルを選択しようとすると,どうしても文字入力モードになってしまって,うまくいってなかったっぽいです.
あ,バグじゃないですね.ごめんなさい.こそこそ.
ワークスペースの設定の情報もありがとうございます.普段一人でArcGISと格闘しているので,大変参考になります!
こんなかっこいいDOSコマンドがあったんですね.私はdir *.shpをファイルにリダイレクトして,Excelに持ち込んでcopyコマンドを作成し,バッチファイルとして実行するという,恐ろしく泥臭いことをしておりました.
今回投影法を設定したのはJPGファイルだったのですが,これだとなぜか.prjをコピーしただけではArcMapに追加時に「投影情報がない」と言われてしまって,他のシェープなどとうまく重ねることができませんでした(涙).
ArcCatalogではちゃんとみえているのに,.prjの中身も同じなのに.
JPGファイルだと他のXMLファイルとかもないとだめなのか,まだ検証してないのですが,今でも謎です.解決したらまた書き込みますー.