[OSM-ja] (開発者募集)OSMタイル配信サーバの開発
Hiroshi Miura(@osmf)
miurahr @ osmf.jp
2013年 4月 4日 (木) 23:36:09 UTC
マッパーの皆さん
三浦です。
現在、OSMタイルサーバを開発しています。日本のOSMコミュニティとして
独自レンダリングを実現したいと考えています。
開発への参加者を募集したいと思います。
同時に、日本らしい地図表現を行うためのmapnikでのレンダリングスタイルを
研究される方もWelcomeです。
開発は、github.com[*0]で行なっています。
名前は、キャッシュになっていますが、(最初はキャッシュの構築から開始したため)
OSMの独自タイル配信サーバの機能をもたせる計画です。
開発に興味のある方、一緒に研究しませんか。
<アーキテクチャ>
OSMのwikiでは、apacheにmod_tile[*1]を導入し、mapnik[*3]ライブラリを使った
Tirex[*2]がタイル画像を生成する方法が説明されています。
また、DBMSには、PostGISを用いて、 osm2pgsqlツールによって最新データを
取り込むようです。osmosisツールを使うことで、自動更新ができます。
独自タイル配信サーバの開発では、次のアーキテクチャを考えています。
<開発ロードマップ>
Ver 0.8
* nginxサーバで、タイルキャッシュ機能を提供します。(DONE)
* リクエストのx/y/z値のチェックをおこなって不正なアクセスを
抑止します。(in progress)
* tile.openstreetmap.orgの地域分散プログラム(CDN)へ参加可能な
機能を備えます。(DONE)
Ver 0.9
* PostGISデータベースに日本地域のOSMデータを日次で
自動更新できるようにします。(ほぼ完了)
* アクセス元が日本国内かどうかを判定して、独自タイルの配信を
切り替えます。(done)
* リクエストのx/y/z値をチェックして、レンダリング対象かどうかを
判定できます。(未実装)
* 一部タイルについて、静的タイルを配信できるようにします。(done)
Ver 1.0
* nginxサーバのLUA拡張を利用して、mod_tile相当を実装します。
* タイル生成は、Tirex[*2]で行います。
* 生成されたタイル画像ファイルは、ファイルシステムに格納されます。
* nginxサーバとTirexは、UDPソケット通信でコマンドをやり取りします。
* mapnikのスタイルを改良します。(アイコンとか、色とか)
mod_tile相当とは
* 独自タイル生成を、リクエストに応じて、on the flyで実施します。
* データベースの更新にあわせて、古くなったタイル画像を削除し、
再度生成されるようにします。
* タイル画像が古い(expire)の場合でも、レスポンスを確保するため
古いタイルを返送するが、httpでの画像の有効期間を再生成に
必要な時間を動的に計算して、設定します。
ユーザが再度表示しようとすると、新しいタイルになります。
Ver 1.x
* 日本らしい地図表現のバージョンアップをしていきます。
Ver 2.0
* Redis Key-Value-Storeを活用して、メタ情報を管理します。
* Redis Pub/Subを利用して、コマンドをやり取りします。
* Tirexを拡張して、redis pub/subに対応させます。
* renderd_expireを拡張して、redis pub/subに対応させます。
* nginx-luaから、redis pub/subを利用したコマンド利用させます。
Ver 3.0
* Redis KVSへタイルそのものを格納します。
* Redisリプリケーションやnginxリバースプロキシ、Tirex分散等により
大規模サーバ構築可能にします。
* 更新タイルやアクセスの少ないタイルのRedis自動expire機能によって
DISK容量を削減可能にします。
* 本家レンダリングのリプレースを狙います(?)
<実行環境>
環境は、Ubuntu 11.10(64bit)です。
Nightly buildのmapnikを使っています。[*5]
nginxは、nginx-extra packageを使います。
luaからredisデータベースへのアクセスは、OpenRestyのLua-redis[*6]
モジュールを使います。
Tirexは、ドキュメントに従ってmake debして、パッケージを導入します。[*7]
redis-server パッケージを導入します。
<インストール>
上記実行環境を整えたあと、
$ git clone git://github.com/osmfj/tilecache.git
$ cd pkgs
$ sudo dpkg -i lua-nginx-redis_0.15-1_all.deb <https://github.com/osmfj/tilecache/blob/master/pkgs/lua-nginx-redis_0.15-1_all.deb>
これで、redisにアクセスできる環境ができます。このパッケージは
Ubuntu raringからしか提供されていないので、同梱されています。
$ cd tilecache
$ (cd nginx; sudo ./install.sh)
これで、nginxの設定が導入されます。サーバ名はtileになっている想定です。
$ cd render_expire
$ make
$ sudo make install
これで、render_expireが/opt/tileserver/bin に導入されます。
[*0] https://github.com/osmfj/tilecache
[*1] http://wiki.openstreetmap.org/wiki/Mod_tile
[*2] http://wiki.openstreetmap.org/wiki/Tirex
[*3] http://wiki.openstreetmap.org/wiki/Mapnik
[*4] http://nginx.org/ja/
[*5] https://launchpad.net/~mapnik/+archive/nightly-trunk
[*6] https://github.com/agentzh/lua-resty-redis
[*7] http://wiki.openstreetmap.org/wiki/Tirex/Building_and_Installing
--
Hiroshi Miura
OpenStreetMap Foundation Japan
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.openstreetmap.org/pipermail/talk-ja/attachments/20130405/82c8b991/attachment.html>
Talk-ja メーリングリストの案内