2017年03月27日

緯度経度データの世界地図表示には投影座標系を設定しよう

最近、2地点の緯度経度座標からラインを発生させて地図を作るという作業をしている。まずは緯度経度の座標はエクセルかなんかで、ID番号、始点X座標(経度)、始点Y座標(緯度)、終点X座標(経度)、終点Y座標(緯度)が一行に入っている表に準備しておく。

i17032601.PNG

あ、都市の緯度経度はかなり適当に取得したものなので信じないでください。はい。

表ができたら、ArcToolboxの 「データ管理>フィーチャ>XY 座標 →ライン(XY to Line)」を使って、ラインを発生させる。

i17032602.PNG

これで出来上がるのがこんなラインのデータだ。ArcMap立ち上げ直後にXY to Lineを実行したので、地図はXY to Lineツールを使うときに空間参照の項目で指定したGCS_WGS_1984で表示されている。

i17032603.PNG

なんだか少し気持ち悪くないだろうか。そう、背景の世界地図を超えてびよーんとでっばった線が2つほどあるのだ。1つは東京toサンフランシスコの緑色の線、もう一つはサンフランシスコto香港の青い線である。

どうやら、日付変更線を超える都市まで伸びる線は、本来の位置から360度回った位置まで伸ばして表示されるようなのだ。どちらから生えるかは、始点を基準にしているらしい。つまり、東京toサンフランシスコなら東京を起点に線を伸ばし、サンフランシスコto香港ならサンフランシスコを起点に伸ばすのだ。

ううむ、しかしできれば日付変更線を超えるときは、そこで一度線が切れて、逆側に線を回りこませたい。東京toサンフランシスコなら、一度ハワイのあたりで線が切れて、切れた残りの線が地図左側からまた伸びてきて欲しい。

当初これをやるには、180度のところで線を一度切って、360度足したり引いたりするという、手作業エディットが必要なのかなーと思っていた。んが、しかし、いつも経度0度を中心に地図を表示するわけではない。日本付近を中心にすることだってあるだろう。そのたびに、地図の端にあたる経度で線を切って360度移動、というのは、私がGISにこき使われるしもべ状態ではないか。

ま、実際その作業を何回かして、ある時ふと気づいた。データフレームの座標系を投影座標系に設定すると、線を切らなくてもきちんとそれが回り込むのだ。

上のXY to Line実行直後の地図は、緯度経度をそのままXY座標として表示している。それを例えば、ミラー図法(投影座標系>世界範囲の座標系(WGS 1984))を指定する。これはデータフレームのプロパティ>座標系タブで設定する。

i17032604.PNG

そうすると、これまでびよーんと伸びていた線がきちんと左右に回り込んでくれるのだ。

i17032605.PNG

ああ、素敵。ついでに、データフレームのプロパティ内では、中央子午線も指定できる。例えば、東経140度を真ん中にすると…。

i17032608.PNG

ちゃんと日本付近を中心に表示してくれる。それだけではなくて、今度はサンフランシスコからロンドンに伸びる線がきちんと地図の左右で回り込んでくれる。

i17032607.PNG

あのGISにこき使われていた時間はなんだったのか…、と思わなくもない。きっと知っている人は知っている話に違いない。まぁそれでもこれでその作業から解放されて、ひとまずはめでたしめでたしなのでした。
posted by たかはし at 10:15| Comment(0) | ArcGIS

2017年03月01日

ラベルの配置プロパティを閉じるとレイヤプロパティがハング

ArcGISを買って数か月後のある日、デフォルトのラベル位置では見えにくかったので、何気なくレイヤプロパティのラベルタブで「配置プロパティ」を開いてみた。で、配置の設定をしてOKをクリックしても、制御がレイヤプロパティに戻らない(涙)。(応答なし)とウインドウのタイトルに出たまま、うんともすんとも動かなくなる。

なんかデータが壊れているのかなぁと思って、他のデータでも試してみたけど、やっぱりハングする。絶対に再現するってある意味すばらしいんだけど、この後ArcMap.exeを終了しようとしても絶対に終了しないという困った現象まで必ず再現される。

まずは、Windowsのタスクマネージャからのタスクの終了はスルーされてしまう。タスクマネージャの「詳細」タブのところで、ArcMap.exeを終了しようとすると「アクセスが拒否されました」と言われてしまう。

管理者権限でtaskkillをしてもだめ、その他いろいろ手を尽くしても、プロセスが終了できない。仕方なくPCのシャットダウンをかけると、レイヤプロパティだけが残った状態となって、その他の動作はできなくなる。レイヤプロパティ以外は、シャットダウンされてしまっているのかもしれない。

仕方なく、本当に久しぶりにPCの電源ボタンを長押しして強制的に電源を切った。

これだけ大きなバグが残っているとは考えにくいので、OSとかドライバといった環境固有の問題なんだろうなぁと思う。実際、もう一つインストールしたWin7機では現象は再現しない。再現するのはWin8.1機である。しかし、大変に困る。せっかくArcGIS用にPCを買ったのになぁ。新しいPCの電源をぶちっと切り続けるのも気が引けるし。

ArcMapをWin7互換モードで起動しても現象は再現する。ArcGISのバージョンを最新にしても(当時は10.4)、再現する。うーん、とてもとても困る。

パソコンとか詳しくないんだけどな(涙)、と思いながら、いろいろ調べてみると、ArcMapが起動している最中、待機チェーンとしてsplwow64.exeというのが時々リストされることがある。常にリストされるわけじゃないんだけれど、ラベルの配置プロパティを開いた時もリストされる。

splwowって、スプールの何かなのかな?プリンタ関係のWindows Updateがあったら狙ってみてもよさそうである。

一応このバグが出た時点で、Windows Updateは最新のものを適用していたんだけど(Win10へのアップグレード関連は除く)、もう一度確認してみるとオプションでインストールが推奨されているものに、KB3013769というのがあった。

このKBは複数のdllなどが更新されるのだが、その中にsplowow64.exeも含まれていた。果たしてこのアップデートを適用したら、配置プロパティを開いてもハングしない!ああ、ハングしないってすばらしい!

このKBで、splwow64.exeのバージョンは6.3.9600.17415から6.3.9600.17480に更新されていた。配置プロパティを開いてもハングしないWin7機では6.3.9600.17415だったので、このバージョンのsplwow64.exeが絶対にいけないというわけでもなさそうである。

KB3013769にはsplwow64.exe以外にもいろいろアップデートされるので、必ずしもsplwow64.exeがいけないという確信があるわけではないんだけど。でも、とりあえずハングしなくなってほんとによかった。

まま、今回はこれにて。
posted by たかはし at 11:00| Comment(0) | ArcGIS