LoginSignup
15
16

More than 5 years have passed since last update.

AWS CloudFront で OpenStreetMap や 国土地理院タイル を Elastic化して Leaflet / OpenLayers3 や Kibana から参照 (後編)

Last updated at Posted at 2016-09-18

概要

スクリーンショット 2016-09-18 17.35.25.png

前編 : タイルサーバを CloudFront を使って CDN 配信する
後編 : CloudFront をタイルサーバとしてクライアントを作成する

はじめに(後編)

前編で構築した CloudFront によるタイルサーバを使って、クライアント側 のアプリケーションを設定/作成します。

以下、この構成について順番に見ていきます。

スクリーンショット 2016-09-18 17.22.34.png
(後編の範囲)

地図アプリケーション

以下のタイル情報を使った、LeafletとOpenLayer3のアプリを作成しました。

ベース地図

  • OpenStreetMap
  • 地理院地図 標準
  • 地理院地図 オルソ
  • 写真(1974年)
  • 写真(1979年)
  • 写真(1984年)
  • 写真(1988年)
  • 簡易空中写真(2004年)
  • 白地図

レイヤー地図

  • 色別標高図
  • 土地利用図
  • 地質
  • 断層・褶曲
  • 土地条件

Githubにアップロードしておきます。html単体で動作します。
https://github.com/exabugs/WMTS

前編で構築したCloudFrontを以下の部分にタイルサーバとして設定してください。

    // CloudFrontを使ってアクセス先をひとつにまとめた
    function mtsHost(path) {
        // あなたのCloudFrontを指定してください!!
        // 仮にOpenStreetMapを指定しています
        return "http://tile.openstreetmap.org/" + path;
    }

例えば、以下のようなことも、確認できます。

  • 今住んでいる家の地盤は大丈夫ですか?
    (クリックした地点の、詳細地質情報を産業技術総合研究所から引いてきます)
  • 40年前、実家や会社は存在していましたか?
  • 今いる場所の海抜はどれくらい?
    大きな津波が来た時は、どこに非難するべきか。

Leaflet

スクリーンショット 2016-09-14 0.39.09.png

  • パーマネントリンクを作ってくれる leaflet-hash ライブラリが超便利です!
  • ベクタータイルは、国土地理院のサンプルを参考に、leaflet-tilelayer-geojson ライブラリを使って対応しています。
  • 次の OpenLayers3 と比較して、若干使いやすいので、自分としてはこちらがオススメです。
  • 因みに Kibana は Leaflet を使っているのですね。

OpenLayers3

スクリーンショット 2016-09-14 0.37.47.png

OpenLayers3 で同等の機能を実装しました。

  • レイヤーコントロール機能がないので、自分で実装です。
  • スケール(Leafletでの左下のものさし)機能が、無いですね。
  • ベクタータイルは、外部ライブラリ無しで自ら描画できるようです。

Kibana

MapQuest社のタイルサービス停止に伴い、おいおい困ったよ〜 て人が続出だと思います。

Kibana のタイルサーバの変更方法は、下記 Developers.IO 記事を参照してください。
KibanaのTileMapにOpenStreetMapを利用する

OpenStreetMap を使うには、kibana 設定ファイルに以下を追記します。
他のタイルデータを使うこともできます。(Kibana再起動が必要ですが)

/opt/kibana/config/kibana.yml
tilemap.url: "http://<cloudfront>/{z}/{x}/{y}.png"
tilemap.options.maxZoom: 18

この CloudFront版 であれば、自分でタイルサーバを構築せずとも、オリジンサーバに迷惑かけることなく業務を継続できると思います。

因みに、OpenStreetMap にすると、以下のように、Zoom18まで対応になります。
スクリーンショット_2016-09-18_20_33_10.png

Advanced - JSON Input に以下を設定すると、さらにクラスタリング粒度を詳細にすることができます。

{"precision":9}

まとめ

  • 前編では、オープン地図データをCloudFrontでElastic化し、地図アプリケーションから利用可能にしました。
  • 幾つかの地図データをレイヤーで重ね合わせる地図アプリケーションを作成しました。
  • OpenStreetMap の思想と、そのデータ精度は素晴らしいです。
    微力ながら、データの更新作業に参加していきたいと思っています。
  • 実際の業務で使用するには、オリジンサービスの利用規約を確認してください。
15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16