qgmap alpha6 リリース

qgmap の alpha6 をリリースします。ダウンロードページからダウンロードしてください。

今回の主な修正は、以下のとおりです。

  • y様からご指摘のあった、ズームレベル 0 の画像が表示できないバグの修正
  • tera 様からご要望があった、マーカー表示機能の実装
  • Hキー or ? キーでヘルプ表示
  • 緯度経度指定ジャンプで数値の前後のスペースを許容

1つ目はダウンロードページのコメント欄に y様からご指摘があったものです。(コメントに気づかず失礼しました。)
私の勘違いでズームレベル 1が最精細だと思っていた ^^; のが原因です。(お恥ずかしい・・・)
この修正でズーム0も表示できるるようになりました。

次は tera 様からご要望があった、マーカー表示機能です。 alpha 6 の目玉機能です(?)。
Shift+0~9のキーで位置を登録できますが、「M」キーを押すと、その登録した位置にマーカーを表示することができます。

マーカー表示機能
マーカー表示機能

縮小した図では分かりにくいですが、0〜9のマーカーが表示されています。画面外に位置するマーカーは、画面の端で方向を指し示します。上記スクリーンショットでは、1, 2, 3, 4, 5, 9 のマーカーが画面外になっています。

ちょっと分かりにくいですかね?? 見づらいとか、分かりづらいとかあればコメントください。できるだけ使いやすくしたいと思います。

マーカーをすべて表示すると、若干重たくなるのと、画面がゴチャゴチャするため、個別に表示・非表示を選べるようにしました。
「M」キーを押した後、左上にツールチップが表示されている間(3秒間)に「0」〜「9」キーを押すことで、個別にON/OFFを選べます。
やはりマーカ表示数が少ないと軽くなるようです。

ただ、上記機能のためツールチップが出ている間は「0」〜「9」の位置にジャンプできないことになります。
ツールチップが消えるまで待てない場合は、「Q」キーを押すことでツールチップが表示されていても、本来の「0」〜「9」キーの挙動に戻すことができます。(ちょっとややこしいですね ^^;)

3番目は、ヘルプ表示機能です。機能が増えてきたので、自分のために作りました照れる
「H」キーまたは「?」キーでヘルプを表示できます。いずれかのキー押下か、画面のタップで消えます。
いずれスタイラスでもヘルプ表示できるように、「?」アイコンでも画面上に作ろうかなと思っています。

最後は、ヘボかった緯度経度パーサをちょっとだけいじりました。数値の前後や、カンマの前後にスペースが入っていても正しくパースできるはずです。

なりふり構わずに機能追加してきたので、そろそろソースを見直して 0.1 をリリースしたいなと思ってはいるんですが・・・。
たぶん次も alpha っぽい気がします あっかんべー

GPS買っちゃいました – uPod

地図表示ソフトを作ってる関係上、なんとなくGPSは欲しいなぁと思っていたんですが、個人的にはあまり需要はなくて、いまいち購入に踏み出せていませんでした。

BitWarpのPHSカードを持っているので、PHS基地局の位置情報程度でも、ある程度の位置は取得できるというのも踏ん切りがつかなかった理由の一つでもありました。

Yahoo!オークションとかでも探してみたんですが、結構高くて・・・。

ですが、色々探していたら、ふと4000円程度で買えるUSB GPSドングルがあることを知り、 ついつい勢いで買ってしまいました。実際は送料が1000円程度かかるので5千円くらいになったんですが。

uPodパッケージ
uPod届きました

購入先はGPSDGPSというお店。GPS機器のお店として結構有名で色々な所で「旭川」と呼ばれているようです。

さっそくWindowsマシンに繋げて動作確認。付属ソフトを起動し、uPodを窓際に置いてしばらく待つと、ちゃんと衛星を捕捉してくれました。パソコン用のGPS機器を初めて触ったので、緯度経度が表示されたときはちょっと感動してしまいました 笑顔

続いて Ubuntu で使えるか確認。uPodを刺すと自動で usb_acmドライバがロードされ、/dev/ttyACM0 が作成されました。

LinuxのGPSソフトはよくわからないので、とりあえず cat /dev/ttyACM0 で読み出してみるとNMEAフォーマットのデータが表示されたので、多分使えるのでしょう。

最後に Zaurus です。USBホストケーブルを使ってつなげてみたところ、自動で acm ドライバがロードされました。ですが、デバイスファイルは自動では作られないようです。

cat /proc/devices を確認したところ、acmドライバはメジャー番号 166 を使うようなので、

mknod /dev/ttyACM0 c 166 0 

と、自分でデバイスファイルを作った所、cat /dev/ttyACM0 で NMEA フォーマットのデータが読み出せました。
気を良くして Zagaでも /dev/ttyACM0 を使うように設定したら、問題なく使うことができました!!

ただ、付属のUSB延長ケーブルでZaurus本体からだいぶ離さないと、ちゃんと捕捉してくれませんでした。
噂でZaurus本体のノイズの影響が大きいため、アンテナを離さないと使えないと聞きましたが、本当ですね。
衛星を捕捉した状態のuPodに Zaurus を近づけると途端に受信できなくなりました。Zaurusは結構ノイジーなんですね。

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

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

さっそくダウンロードしてデータのフォーマットをみてみると、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月版 国土交通省」のデータを元に作成しています。