マッパーの皆さん 三浦です。
現在、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
_______________________________________________ Talk-ja mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-ja

