トップページ | 2009年3月 »

2009年2月

GmlMgrの範囲指定データ

範囲指定データは、それぞれのプログラムに対応したフォルダの中にある拡張子bak以外のファイルをすべて読み込みます。フォルダが階層構造になっていれば、下まで読みに行きます。

範囲指定ファイルをフォルダ構成や複数に分けることができるので、地域別、目的別などに分ければ範囲指定の管理がやりやすくなるかもしれません。bucchiさんのレシピ集を使うのもお勧めです。

同じ地図イメージは1度しか処理しないので、内容は重複していてもかまいません。

  • gmlmgr/range/main    gm_lite直下のimgsに追加するファイルのデータです。down_maps.pl
  • gmlmgr/range/burn    gm_lite直下のburnimgに置くファイルのデータです。mk_burn.pl
  • gmlmgr/range/remove    gm_lite直下のimgsから削除するファイルのデータです。remove_maps.pl

範囲指定ファイルには、空白(タブもしくはスペース)区切りで(down_imgs.plと同様の)Zoom, X, Yを指定します。Y以降にタブ区切りの文字列があった場合は、コメントとみなします。
また、空行、行頭に#がついている行は無視します。

例:
13:7    57    22  北海道
9:3    907:909    402:403    東京

上は、down_imgs.plに、以下のように書くのと同じになります。
down_map("13:7",    "57",    "22");
down_map("9:3",    "907:909",    "402:403");

以下にサンプルの範囲指定データファイルもおいておきます。
世界、日本(本州)、日本(島部)、首都圏、東京、都心など(範囲は適当ですが…)があります。

data.zip

zoom値の逆指定

GmlMgrではzoom値を小から大という方向で指定することができます。たとえば2:7という値を指定した場合、x,yはzoom値2のものとみなして、その地点を含む地図をzoom値7まで取得します。
これはスポット的に変更が発生した場合に無駄な取得を行なわないためのものです。

たとえばzoom値2まで取得している近所に新しく橋ができた場合などは、zoom値2で橋の場所を指定してzoom値7まで取得すればよいでしょう。

互換性

実際には、互換性のためGM_Liteのさまざまなプログラムで使われていた以下の形式もそのまま読むことができます。ただし、意味があるのは位置情報だけでdown_map、del_mapなどのキーワードは無視されます。

down_map("13:7",    "56:57",    "23:24");
down_map 19:13  0           0
del_map 13:7    57          22
copy_map 13:7   55          26

サンプル

配布ファイルには、サンプルとして世界、および日本のデータがgmlmgr/range/mainの下に置かれています。

| | コメント (0) | トラックバック (0)

GmlMgrとGM_Liteとの違い

GmlMgrでできてGM_Liteでできないことというのは今のところありません。
では、どこが違うのかといえば…

プログラムとデータの分離

簡単にデータの組み合わせを追加変更できるので、使用しているMapデータを頻繁に変更したい人。行き先に応じて、携帯用のデータを作成することがよくある人は便利かもしれません。
旅行先に合わせて、bucchiさんの都道府県レシピ集などをつかって、地図を作るのも簡単です。
また、データをいじっているときにプログラムを壊す心配はありません。

後述のPerl化にも関連しますが、データの記述方法も、すべてのプログラムで統一することもできるようになりました。

All Perl

実は目には見えませんが、これが最大の特徴です。
Shellスクリプトやwgetなどを使わず、すべてPerlで書いたために(特にWindows上での)負荷がかなり減りました。
また、CygWinを使わないので、私のようにWindows PCにはすでにCygWinが入っている人も、添付のCygWinのDLLとのバッティングを気にする必要はなくなります。

シェルは汎用性が高く、ツールの組み合わせで処理を行なうというのも、非常に私の好む方法ではあるのですが、Perlも同じくらいすきなのです。

メンテナンス性の向上

定数、変数の使用、そしてモジュール化により、仕様変更に対応しやすくしました。
それぞれのプログラムでの共通部分をまとめ、私としては更新しやすくなったので、興味を持っているうちは(笑)、GoogleMapsの仕様変更にも早めに対応できると思います。

あ、GmlMgrでできてGM_Liteでできないことがひとつだけありました

GmlMgrでは、zoom値を小から大に指定することができます。つまり、詳細地図でポイントを指定して、そこを含む広域地図も一気に取得することができます。何に使うかといえば、ポイントを絞ったデータ更新用ですね。

| | コメント (0) | トラックバック (0)

GmlMgrにしよう

さて、GM_Lite改造版もだいぶコードがまとまってきました。
大まかなコンセプトは決まっているんですが、コードだけでなく細かい仕様も結構悩みどころではあります。

ということで(???)、GM_Lite改造版というのはやめて、GmlMgr(GM_Lite Manager)という名前にすることにしました。
GM_Liteはダウンロード部分よりも、そのデータ構造と閲覧環境こそがキモだと思うからです。そこの部分には手を入れる気はありません。

あくまでも、GM_Liteの地図の管理を行なう部分のみなので、まあ補助ツールといった具合でしょうか。地図管理がちょっとだけ楽になるかもしれないツールってことですね。

ここに捨てるのはもうちょっと先ですが、ぼちぼち先に仕様書代わりに能書きでもここに書いていきましょうか。

| | コメント (0) | トラックバック (0)

コード、ほぼ書き起こしかも…

GM_Liteをいろいろ見ていじっているのですが、今GM_Liteの地図データ操作ツールを作っています。

イメージ位置決定エンジン部分は、teraさんのものをそのまま使わせていただくとして、その他の部分はかなり書き起こしになりそうです。

もちろん、あくまでGM_Liteの地図データ操作ツールなので、本家様の動作には支障がありません。というか、本家様の補助ツールという位置づけですかね。

| | コメント (0) | トラックバック (0)

GM_Lite 改造版 パッチ 0902221

bucchi様が公開されているGM_Lite 改造版down_imgs-4.pl.txtに対する、gmver2.92に対応したパッチです。patchコマンドを使ってあててください。

現在は動作しない無意味なものです。このページは過去行なったことの記録として残してあるだけです。

範囲指定ファイルを別にする機能もつけました。
ただし、ダウンロードした地図はWindows上のFirefoxでの確認しかしていません。

お願い

オリジナルにも改造版にも無いライセンス規定をつけさせていただきます。ライセンス規定というよりこのパッチを使用する方へのお願いです。
ウェイトの値を0.3未満に下げたり、外したりしないでください。
せっかく、tera様が高速化をしてくださったのですが、短時間に大量のhttpリクエストをクライアントの名前を偽証して行なうことは、サーバに対するアタックとみなされても仕方ない行為です。激しい絨毯爆撃を行なうと、それだけGM_Liteの寿命を縮めかねません。
一サーバ管理者からのお願いです。
また、googleからのアクセスブロックが発生してしまっては結局取得に時間がかかってしまいます。
0.3であれば、アクセスブロックは(現在のところ)発生の気配はありません。
そのかわり、と言ってはなんですが、かなり海の部分を省いた範囲指定ファイルを用意しています。不要なダウンロードを避けることができるので、その分はかなり高速化できるはずです。

さて、2.92対応以外にも、かなり余計なことをしています。
趣味的なコード改変のほか、デバッグ用のコードです。
以下はその例です。

log
$log_fileにファイル名を入れると、imgsディレクトリの下に実行のログが取れます。
ログの内容は以下のものです。
(error|success) zoom, x, y, url, filepath

debug_mode
$debug_modeを1にすると、実行画面に饒舌なメッセージを出力します。
ログが取れるので、ほとんど意味はありません。最初に実装したまま残してあります。

範囲指定ファイル
単なるGoogle側への対応だけではアレなので、新機能を追加しました。
範囲指定ファイルを別にすることができます。
範囲指定ファイルは、down_imgs.plと同じディレクトリ(bin)においてある".dat"という拡張子をつけたファイルで、複数あればすべて読み込みます。
範囲指定ファイルが無い場合は、今までどおりdown_imgs.plにdown_map(…)で記入した範囲をダウンロードします。逆に、範囲指定ファイルがあれば、down_imgs.pl内の指定は無視されます。

範囲指定ファイルには、空白(タブもしくはスペース)区切りで(down_imgs.plと同様の)Zoom, X, Yを指定します。Y以降にタブ区切りの文字列があった場合は、コメントとみなします。
また、空行、行頭に#がついている行は無視します。

例:
13:7    57    22  北海道
9:3    907:909    402:403    東京

上は、down_imgs.plに、以下のように書くのと同じになります。
down_map("13:7",    "57",    "22");
down_map("9:3",    "907:909",    "402:403");

範囲指定ファイルを複数に分けることにより、範囲指定の管理がやりやすくなるかもしれません。
また、copy_imgsとほぼ書式が同じなので、必要な地図を切り出す場合にもある程度楽に使えるようになるかと思います。

それでは、パッチです。
「down_imgs.pl.p090223」をダウンロード

また、サンプルの範囲指定データファイルもおいておきます。
世界、日本(本州)、日本(島部)、首都圏、東京、都心、などがあります。
「data.zip」をダウンロード

| | コメント (5) | トラックバック (0)

トップページ | 2009年3月 »