海岸線データを探していたら、国土交通省国土計画局のページから海岸線とか県境のデータが入手できることが分かった。
しかも、各県毎に分かれているなんて、何て使いやすいんだ!
さっそくダウンロードしてデータのフォーマットをみてみると、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月版 国土交通省」のデータを元に作成しています。