goo blog サービス終了のお知らせ 

てくてくダイアリー

GISとか使ってました

ArcToolboxのバッチ処理で他の行に適用

2011-06-07 | ArcGIS
一度に数千のデータ(シェープとJPG画像)に投影法を定義することになった.なぜってそりゃあ,投影法が定義されていないデータだから(涙).

ArcView3の頃は,シェープファイルが入ったフォルダを指定するとそのフォルダに入っているシェープを一挙に投影法定義をしてくれる機能があった気がするのだが,最近のArcGISではフォルダを選択しようとしてもフォルダの階層を降りて行くだけのむなしーやり取りをArcGISとの間でしていた.

うーんしかし,めんどっちすぎる.どうにかならないものかと思い,方法を探してみたらArcToolboxのバッチ処理というトピックを発見した.ツール名上を右クリックして「バッチ」と選ぶと,複数の入力ファイルを選択し処理を実行できるモードでそのツールが起動する.

入力ファイルの方はArcCatalogを開いておいて,そこからファイルをえいやっとドラッグすれば指定ができる.バッチっぽく手間なしだ.

しかし肝心の投影法の方は,1つ1つその行(というかセル)をダブルクリックして,投影法を指定するか,一度指定した投影法の定義(.prjの中身そのもの)をコピーして,1行1行ペーストするかしかやりようがなかった.というより,その方法しか知らなかったし,ESRIのページを検索しても「コピペしなさい」って書いてあるし.

おかげさまで,数千のファイルにそれを設定したときは,右腕が痛かったですわ.


ここまでが前回投影法を定義した時のお話.ArcGISのバージョンは9.3だった.

で,また投影法をたくさん定義することになった.今回はArcGIS10だ.「何かもっと方法があるんでは」とまた思い直し,いろいろかちかちとバッチモードのArcToolboxをいじっていたら,「他の行に適用」という選択肢があるではないか.

ArcToolboxのパラメタ(入力ファイル名とか,投影法名とか)を指定するセルを右クリックするとこの選択肢が出現する.おおー!もしかして超便利?!

試しに「他の行に適用」してみたのだが,全然他の行に適用されない.ちぇー.バグ?それとも私のオペちょん?

ちょっとがっかりしつつ少し考えてみて,適用したい行を選択した状態(行番号をクリックして水色になった状態)にしてから,値が入ったセルに戻って「他の行に適用」するとうまくいくことが分かった.ぶらぼー.

ただし,空白セル上で「他の行に適用」すると,行を選択していなくてもそれは適用されて,今までパラメタを指定した内容まで消えるので注意が必要だ.
#やっぱりちょっとバグっぽいと思う.ぼそ.

9.3の時はこんな選択肢あったかなー.記憶が定かじゃないけど,バッチ処理するときセルを右クリックしたことがなかったから,もしかするとあったのかもしれない.

パイソンとかがすらすら書ければこんな苦労はしないんだろうけど...まぁ,バッチが本当にバッチっぽく処理が実行できるようになってよかったことよ.

Data Interoperability

2011-05-17 | ArcGIS
ArcGIS10を今さらだけどインストールした.相変わらず自分はあまり新しいバージョンにする必要ないのだけれど,なんとなくといったところだろうか.

で,現状ではArcGIS931がインストールされているので,これをまずアンインストールする.で,次にArcGIS10をインストールした.この時点でArcGISは起動し,ひとまずめでたしめでたし.

よく見るとData InterOperabilityは別にインストールするっぽいので,これもついでにインストールする.

ついでに忘れちゃいけないArcInfo Workstationもインストールする.いや,そろそろ忘れてもよいころかもしれないが.

あとパッチとか国内対応パックとかなんかいろいろインストールした気がする.

やっとこさ,インストールが終わって,確認のためArcMapを起動しようとしたら,起動しないでこける(涙).ArcInfo workstationも起動しない.ふふふ.

ライセンスのイニシャライズはうまくいくのだが,アプリケーションのイニシャライズをしてます,というところで,ArcMapはエラーのため動作を停止しました,てなことを言われる.そうですか.またですか...とほほほほほほ.

64ビットOSがよくないのかなぁ,それともArcInfoWorkstationがよくないのかなぁ.

いろいろ考えつつ,でもArcInfoWorkstationは動かしたいので(やっぱりまだ忘れられないのだ),Workstationだけ残して,残りを全部アンインストール後,再インストールすることにした.

ArcGISのアンインストールは,最後にインストールしたプログラムから順々に消していく.なんとなく名残惜しくて,1つ消してはArcMapが起動するか確認しつつ,消していった.

で,Data Interoperabilityをアンインストールしたら,なんとそのタイミングでArcMapが起動したのだ.ひとまず,ぶらぼー.

うーん,でもなぁ,Data InterOperabilityは使いたいのですよ.待ってれば私の環境でも動くようになるかなぁ.それとも私が何かおぺちょんしてるんだろうか.

私のおぺちょんの可能性はまぁかなりありそうな気がするのだが,今日はこれでタイムアップ.

とりあえず,別PCで動いているArcGIS9でデータ変換をすることになりそうだ.そして早く終わって!再インストール.

GTOPOをArcMapで使う

2010-10-13 | ArcGIS
なんて時代遅れなタイトル...

でも忘れたらいやなのでメモ.

1.GTOPO30をダウンロードする

GTOPO30
Global 30 Arc Second Elevation Data Set
http://www1.gsi.go.jp/geowww/globalmap-gsi/gtopo30/gtopo30.html

地理院にあるUSGSのミラーサイトからダウンロードできるので,ネットワークが混んでいてアメリカが遠くても大丈夫(笑)

ダウンロードしたい地域をクリックして,表示されるページ内の「Download data for tile ~」をクリックする.そうするとダウンロード開始.

2.DEMの拡張子をBILにする

ええ,そんまんまなんですが.ダウンロードしたデータを解凍して,できた~.DEMというファイルのDEMの部分をBILに変更する.

これでBILファイルをArcMapに追加することができるようになる.

うーん,メモる必要もないか...とりあえず手持ちの国境線のデータとはうまく重なった.WGS84なんですな.

ポリゴン切ったらインテグレート

2010-10-05 | ArcGIS
さてさて,インドのデータ,ことに古いインドの地図は紙でしかない.で,ここに来てデータの入力をする機会がことに増えた.

でも,できるだけ手を抜きたいので,じゃなかった,作業は迅速に行いたいので,ポリゴンを入力するときは,外周を入力してから,中を切断する方法をとったりする.

ところが,切断後のデータにびみょーな空間というかギャップが発生する.データの座標系は設定したし,データフレームの座標系もデータのそれと同じに設定している.スナップ環境も設定しているし,なぜぇ~~~?

で,よーく頂点を観察してみた.切断後のポリゴンは,ユーザが入力した位置でポリゴンが分断されて,頂点が発生している.ところがそれに接するポリゴンの方では頂点が発生していない.それで,びみょーに線が太く見えて,ギャップらしきものが発生しているのだ.

困る.とても困る.ギャップといってもほんとに小さいので引いて見れば,実質上問題ないレベルなのだけれど.なんというか,カバレッジ世代なもので,ギャップが存在するデータを作ること自体,とてもいけないことをしているような気がしてしまうのだ.

で,調べました.ええ,いつもの通り,ヘルプを.

「一般的なポリゴン編集タスク」という極めて基本的と思われるヘルプページを見てみる.その最後の方に,「ポリゴンの間のスリバーまたはギャップの削除」という項目がある.

スナップをオンにしなさいとか,エリミネートしなさいとか.わかってるって.でも,スライバー(スリバー)じゃないからエリミネートじゃないでしょう.

で,その中に,インテグレートをかけなさいという,お言葉が.ポリゴンのエッジや頂点を一致させることができますって.私が今ほしいのはこのツールだー!

ということで,ArcToolboxでインテグレートを検索し(データ管理ツールのフィーチャクラスの下にありました),実行!

なんとすばやく美しく今までなかった頂点が発生し,ギャップが消えている.ぐー!

ということで,今回の教訓.
ポリゴンを切断したら,インテグレートを実行しよう.

大ショック

2010-09-14 | ArcGIS
インドな研究室に来てから早10ヶ月になろうとしている.

インドのデータをGISで扱うのにあたって,まず引っかかったのは,測地系も投影法もわからないということだ.日本のデータならまぁ大体平面直角座標系で,範囲が広ければUTM,測地系は昔っぽければTokyo datum,今っぽければJGD2000もしくはWGS84てな感じで,すぐわかる.

シェープファイルに.prjがあれば,ベッセルだから日本測地系とかArcGISを立ち上げずとも,すぐわかる.ああ,これはとても幸せなことだったのね.

そう,インドのデータには.prjがたいていついていないのだ.というか,シェープファイルじゃなくてカバレッジのデータもあるのだ.

久方ぶりにArcInfo Workstationを起動して,describeコマンドなんぞを打ってみても,Projectionは定義されていない.くぅ,泣ける.

仕方なく,本当に仕方なく,ネットで情報を収集する.どうやらエベレスト1956という測地系があって,これがいろんなソフトで採用されているようだ.きっとこれがインドのスタンダードな測地系に違いない.ArcInfo Workstationにも存在するようだ.

んがこれがArcGISにはなくって,エベレスト1962と1975とか,1830なんていうのまである.くぅ.

仕方なく,これも本当に仕方なく,それぞれの.prjをテキストエディタで開いて,エベレスト1956と一致するパラメータを持った.prjを探す.これ以降のデータはこの測地系(エベレスト1962だったかな)で作られたものと仮定して作業を進めることにする.ぜいぜい.

ところが,今日になってまた新たなデータが出現した.もちろん座標系は定義されていない.ふふ.

座標値を見る限りは,UTMっぽい感じ.データの年代からいって,WGS84のUTMに違いない!と設定してみるが,WGS84の他のデータと重ねると,なぜか南にずれる...UTMだから東西は許す.南北のずれはなぜ?ああ,まさか,XYが逆とか?形が正しいので,それはないない.

で,また仕方なくインターネットで情報を検索する.そしたらなんと,今までの地図はエベレスト1830で作ってました,なんて記述があるではないですか.

えーーーー.大ショック.なぜにそんな古い測地系を...

って,日本もずっと明治時代からTokyo Datumを使ってたんだっけ.人のことは言えないか.

ああ,これから座標系の設定を,この10カ月に作業したデータ全部にやり直すのかーーー.うーん,まぁいっかぁ?(いくない,いくない)

そして,今日出現したデータの南北のずれは,いまだ解決せず.

絶対にインドの測地系の本を探して買おう.
おんなじ失敗,2度はカンベンなのだ.

最後のレコードまで読んでくれない

2010-06-15 | ArcGIS
ArcMapに1万行オーバーのCSVとかExcelを追加したけど2048行までしか読んでくれない.けち.

2048行というやたらとキリのいい数なので,何かの制限なんだろうなと思いつつ,ESRIのサポートサイトを検索.

やっぱりパフォーマンスの問題で,デフォルトで2048行までしか読まない仕様らしい.

最後まで読み込ませたい場合は,テーブルの下に表示されている行番号の横の「一番最後にジャンプ」アイコン(勝手に命名)をぽちっとやると最後まで読み込んでくれるらしい.

はたして,ぽちっで無事解決.これをDBFにしたら60MB弱.確かにちと重いかもしれないと思うのは,年だろうか.

ちなみに「>|」こんな感じのアイコンです.

ベクタライズ

2009-11-25 | ArcGIS
紙の地図をスキャンして、これをベクタライズしたいということはよくあることだと思う。「JPEGをベクタライズするには、どうやってやったらいいんでしょうか」というご質問を、とてもとても偉い先生からいただいてしまった。

別に地理座標がなくてよさそうで、ベクタライズしたデータを使うのはパワポとかイラストレータとからしい。それなら、イラストレータでベクタライズができるという話を聞いたこともある。しかし、私の手元には今現在イラストレータはない。むむぅ。

ArcGISでJPEGを白黒2値にして(Spatial AnalystのCon関数)で、ラスベク変換をしてみたが、はっきり言っていまいち。三角のポリゴンの集団を遠い目で見ると、建物の形状が浮かび上がってくる、そんなベクタデータが出来上がった。がっかり。

ArcScanという手もないでもないが、相手の環境にArcScanがないという可能性もある。というか、私があんまりArcScan、好かん(さぶっ)。

それならいっそ、フリーソフトの方が優秀なんじゃないか???と思い、検索してみた。そこで編み出したのが以下の方法。

1.JPG画像をBMPに変換

これは2.のソフトがBMPしか受け付けないから。JPG画像をWindows添付のペイントなどで開き、BMP保存する。このときモノクロビットマップで、保存するといいような気がする。

2.JPG画像からDXFに変換

ScanBmp Monkey II
http://www.vector.co.jp/soft/win95/art/se089461.html

このソフトが大変優れもので、ベクタライズ前に必要なラスタのノイズ消去を自動でやってくれる。たいていはここで挫折するのだけれど、すんばらしい。個人的にはおサルインタフェースも好き。

3.DXFからEMFに変換

VectorToVector
http://www.vector.co.jp/soft/win95/business/se438196.html

VectorToVectorが起動したら、「ベクトル→ベクトル変換」のボタンをクリック。次に「ファイル登録」で、2.で作成したDXFを指定。さらに、「ベクトル変換」をクリックし、出力形式としてEMFを選択。

当然ながら文字などもベクタデータとして取り込まれてしまうので、邪魔なようならJPGやBMPの時点で、ペイントの消しゴム機能などできれいにしておくとよいかも。

もしシェープファイルをDXFに変換するのなら、ArcToolboxの「変換ツール>CADへ変換>CADへのエクスポート」。DXFに変換後は3.のソフトでEMFにする。

イラストレーターではEMFが読めるか不明だけど、3.のソフトではSVGにも出力できる。SVGは確かアドビが作ったフォーマットだったような気がするので、おそらくイラストレータでもSVGが読めるのではないかと期待っ。

パワポにEMFを追加するには、「挿入>図>ファイルから」でEMFを指定する。

しかし、まったくスマートな方法ではない。というか、この記事のカテゴリーがArcGISなのに、まったくGISを使っていない。

まぁよいではないか。よいではないか。とりあえず、出来るんだし。
これを偉い先生にお伝えするのはちと気が引けるが。

もっとスマートな方法があったら、みなさん教えてくださいまし。

シェープファイルからネットワークデータセット

2009-09-01 | ArcGIS
ひょんなことから,シェープファイルからNetwork Analyst用のデータを作ることになった.使うのは数値地図2500(空間データ基盤)から変換した道路中心線のデータだ.

でもネットワークデータセット(Network Analyst用のデータの形式)って作るの難しそう.なんかちゃんと指定しないといけないんだよね...一方通行とかさ,そこを通行するのにかかる負荷とかさ...できることなら,避けて通りたい感じ.

しかし,まぁとりあえず,いっちばんシンプルにやったらどんな感じよ,と思って手をつけてみた.で,まずはArcGISのヘルプを探す...(涙).

ヘルプは無事見つかり,それを読もうとするが,非常にちゃんと書いてあって読むのがめんどっちい.

とりあえずとっかかりのところだけ読んで,すぐに作り始めてみてしまう.

だいたいこんな感じの手順だ.

1)ArcCatalogで,シェープファイル名を右クリック,新規ネットワークデータセットを選択(必要なら,ツール>エクステンションでNetwork Analystにチェックを入れておくこと.ついでに,ネットワークデータセットを作成したい範囲だけをあらかじめ選択とかクリップとかしておくこと.ネットワークデータセットは後からクリップできないらしいので)

2)ウィザードが表示される.まずは,ネットワークデータセット名を適当に入力して「次へ」をクリック

3)「接続性」というボタンが出てくる.「次へ」をクリック

4)エレベーションフィールドのデータ値により接続性を,と出てくる.「次へ」をクリック

5)このネットワークでターンをモデリングしますか?と出てくる.デフォルトが「はい」なのでそのまま「次へ」

6)ネットワークデータセットの属性を指定してくださいといわれる.何も追加せずに「次へ」をクリックすると,「コストは最低でも1つは必要なんだけど.シェープの長さに基づいてコストを追加する?」と聞かれる.迷わず「はい」と答える.

7)ディレクションの設定を行いますか?と聞かれる.デフォルトは「はい」なので,そのまま「次へ」

8)これまでの設定が一覧される.「完了」をクリック

9)「新しいネットワークデータセットが作成されました.今すぐ構築しますか?」と聞かれるので,迷わず「はい」と答える

こんな感じで,シェープの長さをコストにしたネットワークデータセットが作成された(らしい).一部メッセージが実際の表記と違うので,そこは意図をくみ取ってくださいな.

試しに最短経路探索を試してみたらうまくいっているように見える.う,嬉しい.

しかし,確か数値地図にはトポロジの情報も入っていたような気が.これは利用する意味あるのかしらん?ついでに,国道とかほそーい路地とかによって,スピードをかえれないかしらん.

んんん.ここから先は,ヘルプと数値地図変換ツールの説明書とにらめっこだなぁ.

===
とここまで書き終わって,過去の記事をみていたら,同じ作業を2年ほど前にやっていたことが判明.全く忘れている自分が悲しい.書いてあることもほぼ同じ.むしろ2年前の方がちゃんと処理している.まずは,ヘルプより自分の作業ログを見た方が良いのかも(苦笑).

しかし,9月はNetwork Analystな月なんだろうか...

ArcGIS9.3SP1日本語版のバグ

2009-04-20 | ArcGIS
新学期である。最近は4月早々から授業がはじまり、ぱたぱたとした毎日である。

いや、自分が正規に担当している授業は1つだけだけど、自作のオンライン教材を最近授業で使ってくれる人が増えてきて、その準備でぱたぱたなのだ。

ぱたぱたの原因は、まず相手の環境が分からないこと。ArcGISのバージョンもそうだけど、OSの特定のパッチとArcGISとの組み合わせで発生するバグ(リングバッファのバグみたいなの)とか、なんかコマコマと確認を積み重ねていかないとならない。

教材はArcGISが9.1の時代に作ったけど、今回9.3で授業をするところが出てきた。もちろん教材で説明した操作が、9.3でもちゃんと動くか挙動を確認せねばならない。

で、やはり発見 ArcGISのバグ。

9.3 sp1 日本語版だと発生するようで、アメリカESRIのサイトではバグの報告は発見できなかった。

どんなバグかと言うと、属性テーブルやメニューから「グラフ作成」を選択すると、ArcGISが気持ちいいくらいすこーんと落ちるのだ。すこーん。

かなしー気持ちでESRIJのサポートサイト(保守有効オンリーページ)を見ると、パッチが出ている。早速ダウンロードして、指示通り実行するが、正常にパッチがあたらなかった旨が告げられる(DLLがないとかなんとか)。むむぅ。

ちゃんと管理者権限で実行ってやったのに、バッチファイルはちゃんと動かないのだ。もう、VISTAもArcGISもみんな嫌いだ。

いいよ、手でやるから。バッチファイルをテキストエディタで開き、ついでにコマンドプロンプトも「管理者権限で実行」をして立ち上げ、指定のフォルダに移動し、バッチファイルに書かれたコマンドを実行した。

うごいた~~~~!がっつ。

そして、きちんとグラフ作成は動くようになったのでした。めでたしめでたし。

のわけないじゃん!授業で9.3を使うところのコンピュータ環境に対して、これを全部やってもらうんですかい。。。

あー、うー、プログラムが集中管理されているような(ログオンのたびに、OS環境から何から何までサーバに取りにいくような)環境なら、パッチをあてる負荷は少ないけど。。。他校だからわからないですよ。そこまでは。。。

バグがあるのは仕方ないけど、やっぱりバグは少ないと嬉しいな。。。

せめて、実行したらプログラム全体が落ちるレベルのバグは。。。(涙)。
そういうシリアス度の高いバグが1つあると、10とか20とか小さいバグがあるっていうじゃないですか。

これから教材の最後の章まで、かなりどきどきできそうだ。

9.3インストール

2009-03-13 | ArcGIS
やっと9.3をインストールした.

とりあえず,起動してみる.おお,モデルビルダーのアイコンが最初っから表示されている♪(それだけで感動)

なぜ,ブックマークをメニューに格上げ?そんなに使う?

と,ぱっと目の違いを確認しただけで,今日はおしまい.だって,今日はなんか雑事が多かったんだもーん.(だから,片手間でインストールしたんだけど).