Google Maps のダウンロード制限回避 (GM_Lite) その2

新しいバージョンがリリースされています。新しいバージョンはダウンロードページへ。

一昨日、昨日と、Hiro 様と Matsu 様から、修正した down_imgs.pl でも地図がダウンロードできないとのご報告をいただきました。

私のほうでも確認してみたところ、確かに、全てではないものの 0 Byte PNG になってしまうようです。
しかも、何度ダウンロードしても同じ特定のファイルが 0 Byte になってしまうという、よくわからない状況でした。

ひとまず、FireFox で Google Maps を表示させたときのヘッダ情報を参考に修正したところ、0 Byte PNG は回避できましたので、公開します。

ファイル名を down_imgs.pl に変更して、GM_Lite を展開したディレクトリの bin/down_imgs.pl と差し替えてご使用ください。

ただ、rikimaru 様、Matsu 様の環境で発生するという、IO::Pipe のエラーは私の環境では再現しておらず、原因の目星がついていないため、こちらの問題はまだ対応できていません。

ひとまず、こちらのファイルでお試しください。


GoogleMaps の制限回避 (GM_Lite)

09/11/07追記: 既に使用不可のため配布を停止しました。GmlMgrをご使用ください。

本業が昨日一段落したため、久々のブログ更新です。

今月入ったあたりから gm_lite で地図をダウンロードしようとすると、制限がかかってしまい、0byte の PNGファイルが大量に作成されてしまいます。

どうやら Spyware や Virus 等がアクセスすることが多いようで、そういった類を遮断するために Google が取った措置のようです。

地図がダウンロードできないのでは qgmap も使い物にならないので、とりあえず回避するために down_imgs.pl を修正してみました。
また、日本の地名にローマ字表記が追加される問題も修正してあります。

正式版は tera 様からリリースされると思いますので、とりあえずそれまでのつなぎとしてお使いください。

  •  down_imgs.pl.txt (09/11/07変更: 使用不可のため配布停止。GmlMgrをご使用ください)

ファイル名を down_imgs.pl に変更し、gm_lite の bin/down_imgs.pl と差し替えてください。

 使い方は今までの down_imgs.pl と同じです。


地図レシピ – 国土交通省の地図を使ってみた

海岸線データを探していたら、国土交通省国土計画局のページから海岸線とか県境のデータが入手できることが分かった。
しかも、各県毎に分かれているなんて、何て使いやすいんだ!

さっそくダウンロードしてデータのフォーマットをみてみると、XMLらしくなんか良く分かんない(^^;
というか、北海道のXMLデータが225MBってデカすぎ! XMLだからかなり冗長ということもあり、ZIP圧縮のファイルは6.2MB程度までちっちゃくなるんだけど、よくこんなデカいデータをメンテできるなぁ。

いちいちXMLをパースなんてやってられないので、正規表現で緯度経度らしいデータを抽出して、地図を描いてみた。


国土交通省のデータで地図を描いてみた
注意!リンク先は大きなサイズになっています(2560×2560 63kB)

すごい!かなり細かい!! 繋がった線だけでも8000本以上あったので、データのポイント数は数万以上なのだろう。かなり詳細でビックリ。

しかも、塗りつぶしてGoogleMapと重ね合わせたらピッタリ!! さすが政府のデータは正確だ。

国土交通省のデータによる地図
国土交通省の地図データによる海岸線の抽出

あまりにピッタリすぎでちょっとビビった。こんな詳細で正確なデータが無料でダウンロードできるなんてすごい世の中になったもんだ。すばらしい!

これでも十分海岸線ピッタリなんだけど、一応念のため、1ドット分太らせて地図取得のデータに使おう。

ただ、完全に閉じた線データになっていなくて、河口や県境が決まっていない部分は開いてしまっているので、単純に陸と海を塗りわけようとすると、以下のようにうまくいかない。以下は陸地を灰色、海を黒く塗り分けた例。


海岸線が切れていて陸地も黒に!

この辺は画像をGIMP等で手修正しようかな。これくらいならそれほど手間じゃないし。
とりあえず、これで各県の陸地部分のマスクデータは作れそうだ。

あとは、そのマスクデータから GM_Lite の down_img のデータに置き換えればOK。
でも、できるだけレシピの行数は短くしたいから、範囲指定を効率よく使って行数減らさないと。

down_map("10", "57", "22");
down_map("10", "57", "23");
down_map("10", "58", "22");
down_map("10", "58", "23");

down_map("10", "57:58", "22:23");

こんな感じの変換をしないと。
特に詳細地図になると、地図1枚を1行にしていたらコピペっていうレベルじゃなくなってしまいそうだし (^^;
このアルゴリズムがまた大変そうだ。うーん。

このページの地図データは、「国土数値情報 行政区域データ 2007年10月版 国土交通省」のデータを元に作成しています。