« 2009年2月 | トップページ | 2009年7月 »

2009年3月

GmlMgr todo

今後気が向いたらやろうと思うこと。
上から、優先度順。

これ以外には「おお、それは便利だ!!」とか思ったり、「すげえぇぇ、そいつは画期的なアイデアだ」とか思うリクエストがあれば、やるかも。

ちなみにダウンロード速度の高速化は行ないません(コードの改善によって速くなってしまう!!かもしれませんが)。
それで、サーバからブロックされては百害あって一利なしなので。

使用法例の作成
まあ、私が想定している使い方をとりあえず書いておこうかと思う。

除外指定
取得データ除外指定を可能にする。
これは、GoogleMapsで縮尺によっては地図が提供されていない場所があり、その場所を何度も取得しようとするのを避けるための機能。
ignore.datという名前に記載されている地図は、リクエストをしないようにする。
一旦ログを作成してログから自動作成できるようにすると非常に良いと思われる。
その場合、数回取得を試みてからの方が良いとは思われるが。

bakファイルへのリネーム
remove_maps.pl時に、fool proofとして実行対象の範囲指定ファイルの拡張子をbakにする。

log, debugオプション
コマンドラインでもlogやdebugを指定できるようにする。

いろいろなことをするメニューの作成。
やっぱり、メニューがあったほうがいいって人もいるよね。

オブジェクト指向にする
コードの低品質さは全体的に激しいのだが、特にGmlMgr.pmがpmという名前をつけるに値しないくらい情けなさなので、もうちょっと懲りたい…
まあ、perlは動けばいい、っていうのも正しい道なのだけれど。

範囲のネガティブ指定
削除にしか使い道が無いと思うので、ファイルパスからz, x, yを示す関数を作成し、それが指定範囲内か調べるという形で実装する。

HTTPヘッダを利用しての地図データ更新
If-Modified-Since、Last-Modifiedヘッダーを使用して地図の更新チェックして、必要なデータだけ更新できるようにする。
が、まずGoogleMapsが対応しているか調べるところからはじめないと…

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

GmlMgr 1.01

GmlMgr 1.00を出して1日も経っていませんが、1.01をリリースします。

現在は動作しません。

すでに1.00をダウンロードしている方は、変更点を読んで、必要であれば1.01をダウンロードして、mk_burn.plを入れ替えてください。

変更点

  • mk_burn.plにおいて、ハードディスクに地図データが存在しない場合に、ダウンロードしないを選んだ後、存在するデータのみでburningディレクトリを作成するか選べるようにした。
  • 指定した範囲内にGoogleMapsでは存在しない縮尺の地図データが存在する場合、その地図データをGoogleMapsにリクエストしても、当然エラーが返ってくるだけです。
    そのような指定をしていることが明白な場合には、リクエストを行なわないでもburningディレクトリを作成できるようにしました。

「gmlmgr0101.zip」をダウンロード

burn2iso.batが入っていないという問題が発覚したので、03/03 8:37にgmlmgr0101.zipを差し替えました。

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

GmlMgr burn2iso.bat

burn2iso.bat で burnimg ディレクトリの ISO ファイルを作ることができます(Windows環境のみ)。
ISO ファイルは gm_lite 直下に gm_lite.iso という名前で作成されます。
ディレクトリの名前を変更した場合は、burn2iso.batの中身も適宜書き換えてください。
すでに、 gm_lite.iso が存在する場合は上書きされます。

この場合、作成されるのはISOファイルなので、マウントするときには、gm_lite.romではなく、gm_lite.isoを指定します。

例: /home/zaurus/Documents/gml_mount /home/zaurus/Documents/gm_lite.iso

なお、Windows環境でのisoファイルの作成にはmkisofs.exeが必要です。

GM_Lite配布パッケージの中にはCygWin環境で使える mkisofs が同梱されているので、それを使用するようになっていますが、CygWin環境から脱却したい場合は、別途Windowsネイティブバイナリのmkisofs.exeを入手し、gmlmgrフォルダに置いてください。

Windowsネイティブバイナリの mkisofs.exe の入手先。
mkisofs - Mona OS developers Wiki

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

GmlMgr remove_maps.pl

gmlmgr/range/removeフォルダの下に置いてある範囲指定データを基に、ディスク内の地図イメージを削除します。

せっかく作ったのですが、GmlMgrを使う限りあまり日の目を見ることはないと思われるかわいそうなコマンドです。

なぜなら、実際にはディスク内の地図データを消去したいというニーズはそうそうないでしょう。
持ち運び用地図を作るのであればmk_burn.plを使えばよいですし、思いつくのはディスク容量の不足か、一部のデータを消して再度取得したい(すなわち更新したい)くらいです。

更新の場合は、down_maps.plの"-u"オプションで一発でできます。
ディスク容量の不足であればこのツールを使えるのですが、必要な部分だけのこして他の部分を削除したいというニーズが多いでしょう。要る部分を指定することは簡単ですが、要らない部分の指定はなかなか面倒ということです…
要る部分が長方形だったとしても、要らない部分を指定するには、最低でも、4つの長方形を指定しなくてはならないでしょう。

一度、要る部分を指定するものも作りかけたのですが、安易に作ると凶悪にメモリを消費してしまいました…
そして、安易にできないくらいなら、ディスクを買ったほうが早いということで断念しました…

まあ、どうしてもディスク容量が足りなくなったら使ってやってください。

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

GmlMgr mk_burn.pl

gmlmgr/range/burnフォルダの下に置いてある範囲指定データを基に、ディスクに存在するデータから、持ち運び用gm_liteフォルダburnimg(burningではありません)を新たに作成します。

オリジナル版には、copy_imgsという、地図データコピーツールがありますが、mk_burn.plは、他の環境で使う地図データを作成する作業に特化したツールです。

burnimgフォルダはgm_lite直下に作成されます。

このburnimgフォルダには、(閲覧に必要な)gm_lite.html、addrおよびimgs\dataフォルダもコピーされるので、そのままイメージ化してもしくはフォルダ丸ごと別の機器に移して、GM_Liteを使用することができます。

すでにburnimgというディレクトリおよび、その中にファイルが存在すれば、新しい地図データがgm_lite/imgsの中にあればアップデート、指定範囲外のものは削除されます。addr、gm_lite.htmlの内容もアップデートされます。

ディスクに存在しない地図データがある場合には以下のように聞いてきます。

Target File is not exist local disk.
Do you want to download? (y/n)

地図データをGoogleMapsからダウンロードする場合には「y」を、ダウンロードしない場合には「n」を押します。

「n」を選んだ場合にはさらに、存在するデータのみでburningディレクトリの作成を継続するか、一旦作成をやめるかを以下のように聞いてきます。

Continue makeing burnimg directory? (y/n)

継続するには「y」を、停止するには「n」を押します。

まあ、焼くためのイメージファイルを作るという感じでcopy_imgsではなくmk_burnとします。

addr, imgs/dataが存在する場合には、そのまま使います(見ているのはフォルダが存在するかだけです)。
addr, imgs/dataをアップデートしたい場合には、-uオプションをつけて起動するか、gmlmgr.iniに"burn_update 1"という行を追加します(タブかスペースで区切ります。
addr, imgs/dataディレクトリは、通常GM_Lite本体が変更されない限りは、そのまま使って問題は無いはずです(自分で中身を書き換えている人は別ですが…)。
もし、addr, imgs/dataが存在しなくても、そのまま(存在しないまま)にしておきたい場合は、"-i"オプションをつけて起動するか、gmlmgr.iniに"burn_update    2"という行を追加します(qgmapユーザ向け)。

地図データが存在しない場合のデフォルト動作を指定することができます。-dオプションの次に数値を指定して実行すると、それぞれ以下の動作になります。
0    問い合わせる(デフォルト)
1    ディスクに存在するデータのみで作成する
2    ディスクに存在しないデータはダウンロードして作成する
3    中止する
これらの動作はgmlmgr.iniでも"burn_download 1"などと指定することができます。

なおburn2iso.batを実行すると、(使えるmkisofsが存在すれば)このフォルダのisoイメージ化ができます。

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

GmlMgr down_maps.pl

gmlmgr/range/mainフォルダの下に置いてある範囲指定データを基に、GoogleMapsから地図イメージを取得します。GM_Liteのdown_imgs、down_imgs2に相当します。

まずgmlmgr/range/mainフォルダの下に範囲設定データを記載したファイルを置いて、それからdown_maps.plを実行します。

コマンドラインから使う場合、"-u"オプションをつけて起動すると、ディスク内に既存のデータがあってもすべて更新ダウンロードします。
たとえば、新しい住宅地ができたとか、駅ができたとか一部のエリアの地図を更新したい場合に使うとよいでしょう。
このような場合、範囲設定でzoom値の逆指定を使うと、ダウンロードする地図を必要最小限に抑えることができます。

コマンドラインを使わない人は、以下のようにショートカットを設定して更新したいときにはそちらを使うとよいでしょう。

  1. down_maps.plのショートカットを作成します。
    09030201_2
  2. update_mapsとでも名前を変更します。
  3. プロパティでリンク先に"-u"を追加します。
    09030202_4
  4. 09030203_3

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

GmlMgr 1.00

GmlMgr(GM_Lite Manager)は、GoogleMapsの地図データを実用工房にて公開されているGM_Liteのデータ構造にダウンロードしたり、コピーしたり、削除したりするためのパッケージです。

詳細はGmlMgrのページから。

1.00として公開します。

現在は動作しません。

gmlmgr0100.zip

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

GmrMgrのインストール

前提条件として、当然GM_Liteをインストールされていることとし、以下の説明ではGM_Liteはgm_liteというフォルダにインストールされていることとします。
またperlもインストールしてください。Windowsの方ならActivePerlの使用がお勧めです。

GmlMgrをダウンロードしたファイルを展開するとできるgmlmgrフォルダを、まるごとgm_lite直下においてください(現在直下でないとうまく動きません)。その中に実行ファイルが入っています。

実行はWindowsにActivePerlをインストールしているなら、.plファイルには関連付けがされているはずなので、目的のコマンドをクリックするだけでいいはずです。
それ以外の方は、おそらく自分でなんでもできる方でしょう。

ただし…

いくつかのプログラムではPerlの標準パッケージに入っていないモジュールを使っています。
現在配布されているActivePerlに標準で入っていることは確認済みですが、もし、モジュールが足りないというエラーが出た方はCPANなどから取得してください。

なお、各コマンドはGmlMgr.pmというモジュールを使っているので、コマンドラインではgmlmgrフォルダからしか実行できません。

なお、ディスクイメージの作成は、もちろんGM_Lite付属のmkisofs.exeを使用しても可能ですが、(私のようにGM_Lite付属の)CygWin環境では困るという方は、Windowsネイティブバイナリを入手しgmlmgrディレクトリにおいてください(詳細)。

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

« 2009年2月 | トップページ | 2009年7月 »