JA:スリッピーマップ
スリッピーマップ(slippy map)は一般的に、拡大縮小やスクロールができる(マウスでドラッグすることで、ずらして見て回ることができる)現代的なウェブ地図を表す用語です。(訳注:日本では「スクロール地図」と呼ばれます。)
私たちが「スリッピーマップ」を話題にする場合は、 openstreetmap.org のフロントページに表示される地図を指します。これは OpenStreetMap のレンダリングされたデータを閲覧するためのウェブインターフェイスです。
既定では、スリッピーマップは OpenStreetMap の標準スタイルでレンダリングされたタイルを表示しますが、いくつかの他の有名なタイルもレイヤーに選択したりリンクしたりできるようになっています。
- スリッピーマップを利用したりリンクしたりする方法についてのより詳しい基本情報は、閲覧をご覧ください。
- 自分のウェブサイトに地図などを異なる方法で構築する場合は、J独自のスリッピーマップの提供をご覧ください。
- 私たちが使用している "The slippy map" (および自分のウェブサイトでの使い方)については、 JA:Leaflet をご覧ください。
- このウィキにスリッピーマップを埋め込む方法については、 Slippy Map MediaWiki Extension をご覧ください。
技術的詳細
スリッピーマップは、 Ajax コンポーネントです。 JavaScript をブラウザーで実行し、(HTML ページ全体を再読み込みせずに)スクリプトがバックグラウンドでサーバーにタイルをダイナミックに要求することによって、スムーズに滑るようなズームができる地図閲覧を実現します。これは、 OpenLayers または Leaflet の javascript ライブラリによって実装されています。地図の画像は、「タイル」と呼ばれるたくさんの小さい四角の画像から成っています。これは「タイルサーバー」がレンダリングして提供しています。
タイルのレンダリング
レンダリングのプロセスは、選択されたスタイルを使ってベクトルの地図データを、ラスタのビットマップに変換する、かなり計算資源を必要とするプロセスです。たくさんのレンダリングソフトウェアのオプションによって成し遂げられるものです。タイルサーバーはふつう、地図を見ているユーザーごとにリアルタイムでレンダリングを行う訳ではありません。タイルはあらかじめレンダリングされ、ディスク上に保存されています。
Mapnikのタイルレンダリング
OpenStreetMap の「標準」スタイルの生成に使われているレンダリングソフトウェアは Mapnik です。 Mapnik はたくさんのサード―パーティーのレンダリングでも使われており、これにはフロントページのスリッピーマップで表示される有名なタイルである MapQuest open、 Cycle Map、 Transport Map スタイルも含まれます。
標準タイルは tile.openstreetmap.org で生成されています。 OpenStreetMap 標準タイルサーバーのデータベースは、毎分の差分で更新されているので、データの変更のほとんどは数分以内にレンダリングされます。以前は、毎週水曜の朝(GMT/BST)に作られる Planet.osm の週次ダンプのみに基づいて更新されていました。あなたの地図の変更が反映されるのに、どれだけ長い時間がかかったか想像できますか?数日間だったのです!全体の planet ダンプは、差分を適用する際に希に発生する誤りを修正するために、現在でも時々インポートされています。
OpenStreetMap のための Mapnik レンダリングは、特に OSM の高性能なニーズのために開発された mod tile と呼ばれる Apache モジュールから実行されます。これはキャッシュや、再レンダリング要求の待ち行列の管理も行います。それぞれのタイルは、いつレンダリングされたかを示すタイムスタンプと、再描画が必要であることを示す dirty フラグを持っています。レンダラーは以下の規則に従います。
- OSM データベースに変更があると、システムは関連するタイルを "dirty" と設定します。
- タイルを閲覧したときに、3日以上古いかどうかをチェックし、その場合は "dirty" と設定します。
- バックグラウンドのレンダリングプロセスが、すべての dirty のタイルをレンダリングします。
そのため、誰も見ていないエリアは頻繁には再レンダリングされません。タイルは(一種の)注目度優先の原則でレンダリングされます。タイルを dirty と設定することで、そのサブタイルも dirty となるわけではありません。
もしタイルに 'More OpenStreetMap coming soon...' と書かれていたら、それはタイルのデータがなく、サーバーはオンデマンドでレンダリングできなかったことを表します。すでにレンダリングするための待ち行列に入っています。タイルの状態はタイルの URL* を使うと分かります。
単純に最後に /status を加えます。
このページがタイルが作られたタイムスタンプと dirty の状態が分かります。
強制的にタイルをレンダリングさせたい場合は、 URL に /dirty を追加することで dirty と設定することができます。
*) Firefox のコンテキストメニューでは、「ページの情報を表示」を選択して「メディア」タブにあるタイルの URL をコピーしてください。 Internet Explorer では「要素を調査」(など)のみです。それを選択して DOM エクスプローラーから強調表示されているコードを右クリックしてください。アドレスバーにコピー&ペーストし、 PNG の URL 以外の部分をすべて削除してください。
Tiles@Home
以前は、 Tiles@home という、分散レンダリング構成上で実行されていた Osmarender による "Osmarender" と呼ばれる他のレイヤーを提供していました。このプロジェクトは終了し、 "Osmarender" レイヤーは利用できなくなりましたが、 Osmarender を使用したレンダリングを利用することはできます。
関連項目
- 独自のスリッピーマップの提供
- 様々なスリッピーマップ API やその他のアプローチを用いて自分のサイトに地図を載せる方法
- 地図の静止画像
- <img /> タグを使った静止画地図の埋め込み
- タイル
- タイルの定義やリンクに関する様々なこと。
- Slippy map tilenames
- 座標(ズーム, x, y)からタイル名(.png ファイルの URL)を計算します。
- Mapnik, Osmarender (Tiles@home), OpenCycleMap, CloudMade, MapQuest のための URL テンプレート
- 閲覧
- openstreetmap.org のホームページにあるスリッピーマップの基本的なユーザーガイド
- Layer URL parameter
- ホームページでレイヤーがどのように機能するか(OpenLayers による記述)。
- 標準タイルレイヤー
- キーを中心とした http://www.openstreetmap.org/ における標準タイルレイヤーのユーザー向けの説明