Map2

ローカル線の廃止が決まった(ようである)。いささか含みを持たせた書き方をしたのは、まだ断固 反対をしている人が居るからだ。

累積赤字50億円。このまま運行を続ければ、年間2億円の割合で赤字が増えていくそうである。運行 会社や市や沿線住民もこの問題にはずっと以前より頭を悩ませており、幾つかの対策案を上げて検討 していたようである。

存続させる為には何と言っても、利用客の増大をさせねばと言う事で、増大に向けた実験を数ヶ月 行ったそうである。が、期間中の増加は約1割。てんで赤字を埋める方策にはなりえなかった。

このままずるずるしても埒が明かないので、今後どうするか決めてしまおうとなったのだ。案は、実験を このまま延長する、廃止してバス運行に切り替える、あともう一案あったけど、何だったけな?(って、 関心薄いよ)

バス運行に決まったんだけど、それとて赤字のそしりは免れない。果たしてどうなるか? 銚子電鉄みたいに、ぬれせんべい みたいなもので、全国に窮状を訴えるか。マスコット駅長さんの 、たま(猫)さんみたいな人に期待するか。とにかく、もう決まった事だからねぇ。

地方自治とは言うけど、難しいものだ。

Map2

さて、前回に続いて Map2をやってみる。別にmap2なんて言う手続きがある訳ではないので、ご安心を。 その前に、日本の官庁が行っている地図関係のサービスを列挙しておこう。今では地図と言えば、google等が 当たり前となった感があるけど、ちゃんと整備されてるのね。

電子立国ポータル 入り口

電子立国クリアリングハウス 地図検索

ウォッちず こっちもお勧め

聖地巡礼 民間系だけど、楽しいぞ

もどき

カシミール3Dに出合ったおかげで、官庁がやってる地図にも出会えたし、データも自由にダウンロード 出来る事を知った。標高データなんて地味だけど、いろいろ加工したら面白いぞ。

自分でもカシミールもどきが出来たら楽しいな。ふと、思ったんだけど、メッシュになった標高データって 3次元で表せるよね。そういうデータをぱっとグラフにしてくれるアプリってあったよね。ぱっと 思いつくのは、gnuplotか。

まずは、データを落としてこんとな。どこのデータにする? 今話題になっている、霧島の火山? 単独峰として有名すぎる富士山? 昔、登ったよ。登った繋がりで、ふと芭蕉の句が浮かんだ。

雲の峰 いくつ崩れて 月の山

昔は、よく春スキーに行ってたな。あそこはゴールデンウィークからオープンする夏スキーのメッカだもんなあ。 他には、八甲田山とか苗場、乗鞍とかも良かったなあ。海外遠征もしたけど、毎年遠征地が 違っていたんで、 一期一会だったから山の名前すら出てこない。それに比べると、月山は馴染みすぎる程馴染んだ山だ。 月山の 山並みを題材にしよう。ダウンロードサービスへ 行って、10mメッシュのデータを落としてきた。

前回調べたように、不要な その他 を削除して、代わりに x,y の座標を与えてやれば、gnuplotが 喰うデータファイルになるな。

x = y = 0
while ARGF.gets
  if $_ =~ /\,(\d+)\./o
    printf("%d %d %d\n", x, y, $1.to_i)
    x += 1
    if x == 1125 then x = 0; y += 1 end
  end
end

こんなrubyスクリプトを用意しておいて

[sakae@cdr ~/tmp]$ ./conv.rb FG-GML-5740-60-dem10b-20090201.xml > a.dat

加工してあげる。一応、出来上がりを確認しておく。

[sakae@cdr ~/tmp]$ tail -n 5 a.dat
1120 749 952
1121 749 951
1122 749 950
1123 749 949
1124 749 946
[sakae@cdr ~/tmp]$ sort -n -k3 a.dat | tail
241 313 1980
242 309 1980
241 307 1981
241 308 1981
241 311 1981
242 306 1981
241 309 1982
241 310 1982
242 308 1982
242 307 1983

これ、山頂付近の座標位置です。思い出すなあ、月山の標高はどのくらいって聞かれて、丁度西暦の 年と一緒だよと答えてくれた君。そうか、あの頃は、1983年だったのか。

あの頃は体力が有り余っていたから、朝、山麓からスキーを担いで山頂を目指して登山、いい斜面が あるとそこでひと滑りしながらひたすら登る。山頂で月山神社に参拝した後、お昼を食べてひと眠り。それから、一気に 下まで滑り下り、日が高いと、また下の方で遊ぶ。毎日、そんな事をしてたけど、平気だったもの。

で、下のゲレンデで上半身は裸、下は短パンという格好で滑っていたら、酒田駐屯地から雪上訓練に来ていた 自衛隊の人に、スカウトされちゃったよ。ははは、いろいろ思い出すなあ。

お喋りはこれぐらいにして、早速 月山と対面してみるか。gnuplotを起動して、3Dグラフだな。

gnuplot> splot "a.dat" with lines

これ、表示まで死ぬほど時間がかかりました。マウスでぐりぐりしても、待ちのアイコンになったまま さっぱり反応してくれません。きっとデータ量が多すぎて反応が鈍くなってるんだな。

データ量を削ってみよう。まずは半分にしてみるか。月山の頂上は、割と左下の方にあるっぽいので 上半分をカットしよう。原紙のA0を半分に裁断するとA1になるから、ファイル名は、A1.datだな。

[sakae@cdr ~/tmp]$ head -n 421875 a.dat > a1.dat

これでも、まだ反応は鈍いです。しょうがない、もう半分にしてみるか。

[sakae@cdr ~/tmp]$ awk '{if($1 < 563) print $0'} a1.dat > a2.dat

まだ、反応が遅いなあ。それに山肌(のワイヤーフレーム)も見えないし。。。 はて、どうしたものか のう。

カラーマップを使った3次元表示 (pm3d) なんてのを見つけてきた。これなら、高さによって色が変わるだろう。

gnuplot> set pm3d
gnuplot> splot "a2.dat" with lines
  Warning: Single isoline (scan) is not enough for a pm3d plot.
           Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.

こんな文句を言ってきて、カラーの凡例は出るものの、色の変化は付かなかった。しょうがないので HELPを斜め読みして

[sakae@cdr ~/tmp]$ awk '{print $0; if ($1 == 562) print ORS}' a2.dat > t.dat

このt.datを表示させたら、警告は出なくなったけど、相変わらず色が付かない。データ量が多すぎて だめなんだろうか? ものは試しとばかりに、50x50ぐらいのサイズにして動かしてみたら、何と ちゃんと色が付いたよ。それに、マウスでぐりぐりやっても、ほぼリアルタイムに反応してくれる。

標高による色が付かなかったのは、データ量が多すぎて、それぞれの頂点を表示する色(赤)によって 斜面の色がマスクされちゃってたからね。やっと今気づいたよ。

そんじゃ、折角なので、任意のエリアを切り出してくるスクリプトを書いてみよう。カシミール3D にもマップカッターと言うプラグインがありましたね。

# Usage: mc.rb bx by size xml-file

bx = ARGV.shift; bx = bx.to_i
by = ARGV.shift; by = by.to_i
sz = ARGV.shift; sz = sz.to_i
tx = bx + sz
ty = by + sz

x = y = 0
while ARGF.gets
  if $_ =~ /\,(\d+)\./o
    if x >= bx and x <= tx and y >= by and y <= ty
      printf("%d %d %d\n", x, y, $1.to_i)
      print "\n"  if x == tx
    end
    x += 1
    if x == 1125 then x = 0; y += 1 end
  end
end

そんでもって、実行例は下記な。

[sakae@cdr ~/tmp]$ ./mc.rb 200 250 60 FG-GML-5740-60-dem10b-20090201.xml > t.dat

左下の座標が200,250の所から、60個分(10mメッシュなんで、600m四方だな)を切り取った例です。座標位置から ほぼ山頂付近という事になります。gnuplotで表示してみると、滑るには最高の良い斜面でしたよ。

これでやっと、月山の山肌を確かめられたなあ。全ての問題は、データ量にあったんだ。するってえと、 カシミール3Dは、あんなに大量なデータを処理しながら、ほぼリアルタイムに山肌を舐めてくれる 、すんごいソフトって事になるな。ちょいと太刀打ち出来そうにありませんよ。