いきなり日曜大工

好きなことを好きなだけやる

マイ地図タイルを作ろう #1 GIMP で地図タイルを作りたい

本格的な画像ベースの地図タイル作りを考える

画像の扱いに慣れてきたので工作の土台になるマイ地図タイルの制作をはじめます。

目指すのはこんなタイル

大きな画像から Google Maps モデル の256ピクセルを1辺とする正方形の地図タイルを作ります。できあがりはこんなイメージ。

作業環境はご家庭向けスペックでそろそろ買い替えたい年頃の PC と Windows10 です。
前回の話と時間が前後しますが Windows での工作は全くの門外漢な上に画像処理ソフトを扱うスキルもほぼゼロでして、前回のタイル手作りと説明画像の作成は実はかなりの奮闘でした(ちょっと慣れてきた)。今回の本番用のタイルにしたい画像はとても手作りできるようなサイズではないので、まずはこの慣れない環境で画像をどうしたらいいのか逡巡するとこから始まります。

先生発見

しかしありがたいことに大変参考になる動画を見つけることができました。

これこそまさに今やりたかったこと!
動画で先生は有料の画像処理ソフトを使っていて、Google Maps API 向けのプラグインで全自動でタイルカット&ファイル保存しているようです。自分はこれを全部タダでやりたいと思います。

GIMP をインストール

とりあえず GIMP をインストールしました。これ以外に Windows で使える多機能そうな無料の画像処理ソフトを知らないというのが GIMP を選んだ理由ですが、今後地図にのせるマーカー用アイコン作成などもすべてこれで行く予定なので、まずはインストール(前回のくまモンタイル作成はこのインストールの後に行いました)。

記憶の中の GIMP(20年前)となんか違いすぎる…

で、Youtube 先生みたいに GIMP の機能あるいはプラグインを使って元画像から楽々自動タイル生成できるつもりでいたんですが(そんなプラグインあるだろうぐらいに思っていた)、えっ・・・ないの!?

残念ながら自分の検索能力では今回 GIMP まわりでそれらしい機能/プラグインは見つけられませんでした。GIMP で Photoshop のプラグインが使えるようになるプラグインというのも試してみましたがうまくいかず。

画像ベースの地図タイル作成の段取り

仕方がないのである程度までは GIMP 上で手作業で行い、あとはフリーの画像分割ソフト&ファイル一括リネームソフトなどに頼ってみることに方針を変更。

Youtube 先生の動画も参考に、すごく大きい画像から地図タイルを生成する段取りを以下のように考えました。

  1. 各ズームレベルの画像を作成する。
    元画像を最大ズームとする。画像を縦横それぞれ半分に縮小すると1つ下のズームレベルの画像になるので、50%縮小した画像をどんどん作っていって、縦横両方のサイズが256px以下になったらその画像をズームレベル0とする。
  2. 各ズームレベルの画像について、縦横256pxの倍数になるように背景をパディングして整形する。パディングは右方向、下方向に。左上の位置は合わせる。
  3. それを256x256pxの正方形に切り分けると、マップタイルになる。
  4. 正しいタイルファイル構成(今回は {z}/{x}/{y}.{ext} )になるように保存フォルダ名とファイル名を決定、タイルを保存する。

これに従って各ズームレベル画像を作成してカット前のサイズにパディング整形するところまでは GIMP で手作業で行いました。あとはフリーのファイル分割やリネームのソフトを探してきてまかせることに。

それからしばらく Windows10 でタイルを作れそうなフリーの画像分割ソフトをググってはいろいろ試してみましたが、元画像のファイルが大きすぎるみたいでどれもエラー終了かフリーズしてしまって未だ使えるものが見つかりません。検索の途中でずばりマップタイルを作成するソフトウェアというのも見つけたんですが、フリーで使えるのはお試し用の小さい画像までで、私の扱いたい画像サイズは有料(しかも一番高いやつ…)だそうで。

なぜかプラグイン開発へ

Google 検索にも飽きてきたので自力で解決する方法をいろいろ検討した結果、選択肢を2つに絞りました。

  1. Windows に ImageMagick (+Unix っぽい開発環境)をインストールして自動化
  2. GIMP のプラグインを書いて自動化

1は大昔に Unix 環境でなら経験があります。2は全く未知の領域です。
・・・2に挑戦してみよう(しくじったら1にすればいいや)。