39
オープンデータ × オープンソースGIS ~WEB上でのインタラクティブ可視化手法について~ テクニカルカンファレンス2014 株式会社ノーザンシステムサービス 中洞 友希

【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

  • Upload
    -

  • View
    561

  • Download
    5

Embed Size (px)

DESCRIPTION

IISAテクニカルカンファレス2014 での発表資料です。

Citation preview

Page 1: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

オープンデータ × オープンソースGIS ~WEB上でのインタラクティブ可視化手法について~

テクニカルカンファレンス2014

株式会社ノーザンシステムサービス

中洞 友希

Page 2: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

自己紹介

名前 中洞 友希 (なかほら ゆき) 出身 岩手県宮古市 会社 株式会社ノーザンシステムサービス 入社2年目 WEB上でのデータの可視化とGISについて日々研究中。

この分野でトップに上り詰めることを目標に頑張ってます!

Page 3: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

1.開発に至った経緯 (1/2)

データを集計して地図で表示したい。

WEB上でインタラクティブに分析

できるようにしてね!

あとIE7でも動くようにして下さい☆

お客様

_人人人人人人_ > I E 7 <  ̄^Y^Y^Y^Y^Y^ ̄

Page 4: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

1.開発に至った経緯 (2/2)

入社して初めてのシステム開発!(*´∇`*)

上司の和山にサポートしてもらいながら

開発を行いました。

・・・っていう案件があるんだけど、

クライアント側の実装をやって

みない?? 和山

Page 5: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

2.オープンデータの概要 (1/4)

なぜオープンデータなのか?

GoogleMapの商用版はいろいろと制約がある。

地図は印刷では使えない

→資料として配布できない

領土問題がある

25000以上のリクエストは有料

Page 6: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

2.オープンデータの概要 (2/4)

オープンデータとは・・・

誰でも使えて、 再利用・再配布が可能であり、 利用しやすい形で公開されている、 行政機関などが保有する公共データ のこと。

Page 7: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

7

行政の透明性・信頼性の向上 経済の活性化・行政の効率化

2.オープンデータの概要 (3/4)

目的は?

地理空間情報 , 防災情報 , 統計情報, 交通情報,観光情報など

XML , CSV , JSON, RDF など、コンピュータが判読しやすい形式

どんなデータがあるの?

どんなデータの形式?

Page 8: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

8

2.オープンデータの概要 (4/4)

使用したオープンデータ 小地域shpデータ (国勢調査) 500mメッシュデータ (国勢調査) 世帯数・高齢化率データ (国勢調査) 男女5歳階級別人口shpデータ (国勢調査) 保険料データ (介護事業状況報告) 将来推計人口データ (社人研) 道路データ (国土数値情報) 介護事業所データ (介護サービス情報公表システム)

Page 9: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

3.オープンソースGISの概要(1/2)

そもそもGISとは・・・

: Geographic

: Information

: System

地理情報システム

位置に関する情報を持つ地理データを管理・加工し、

視覚的に表示することで分析を可能にする技術。

G

I

S

Page 10: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

3.オープンソースGISの概要(2/2)

使用したライブラリ

OpenLayers WEBブラウザで地図データを表示するJavaScriptライブラリ。 (http://openlayers.org/)

PostGIS PostgreSQLで地理空間情報を扱う為の拡張のライブラリ。 (http://postgis.net/)

Mapnik デスクトップ及びサーバー用の地図描画ツールキット。 (http://mapnik.org/)

GDAL ラスターデータフォーマット用ライブラリ。 (http://www.gdal.org/)

Page 11: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

11

4.構築したWEBアプリケーションの主な機能

グラフ&地図の連動による

オープンデータの視覚化

生活圏域の設定

介護事業所のカバレッジ分析

Page 12: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

4-1.グラフ&地図の連動による

オープンデータの視覚化

Page 13: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

地図データ : 小地域shpデータ

グラフデータ : 世帯数・高齢化率・保険料・

将来推計人口データ

amCharts (JavaScript)

OpenLayers (JavaScript)

使用したオープンデータ / ライブラリ

オープンデータ

オープンソース

GIS

その他

ライブラリ

Page 14: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

2014/11/25

OpenLayersで地図を表示する

{ "type": "FeatureCollection",

"features": [

{"type": "Feature",

"geometry": {

"type": "Polygon",

"coordinates": [

[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0] ]

},

"properties": {

"prop":"value0"

}

},

{"type": "Feature",

"geometry": {

"type": "Polygon",

"coordinates": [

[ [101.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0],]

]

},

"properties": {

"prop": "value1"

}

}

]

}

GeoJSON

OpenLayers [ベクターレイヤー]

PostGIS

Page 15: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

amChartsとは? JavaScriptのグラフ作成ライブラリ。

有償版($140)と無償版(テキストリンク有)の2つが提供されている。 (http://www.amcharts.com/)

amChartsでグラフを描画する (2/3)

amChartsを選んだ理由 IE7で動作する

Flashを使用せずJavaScriptのみで動く

指定できるパラメータやイベント関連が豊富

インタラクティブである

グラフの種類が豊富

機能のカスタマイズが可能

という条件にすべて合致したため。

Page 16: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

amChartsでグラフを描画する (3/3)

Y 軸

X軸

グラフの基本情報

プロットするデータ

カーソルの動作

グラフ凡例

var chart = AmCharts.makeChart("chartdiv", { "type": "serial", "theme": "none", "dataProvider": protData, "valueAxes": [{ "axisAlpha": 0, "position": "left", "title": "Visitors from country" }], "startDuration": 1, "graphs": [{ "balloonText": "<b>[[category]]: [[value]]</b>", "colorField": "color", "fillAlphas": 0.9, "lineAlpha": 0.2, "type": "column", "valueField": "visits" }], "chartCursor": { "categoryBalloonEnabled": false, "cursorAlpha": 0, "zoomable": false }, "categoryField": "country", "categoryAxis": { "gridPosition": "start" }, "legend": {"position":"bottom", "labelText":"Visitors from country" } });

JavaScript

Page 17: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

グラフ&地図の連動による

オープンデータの視覚化

デ モ

Page 18: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

4-2.生活圏域の設定

Page 19: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

小地域shpデータ

OpenLayers (JavaScript)

PostGIS (データベース)

Mapnik (サーバ用ツールキット)

使用したオープンデータ / ライブラリ

オープンデータ

オープンソース

GIS

Page 20: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

開発中に直面した問題(1/3)

{ "type": "FeatureCollection",

"features": [

{"type": "Feature",

"geometry": {

"type": "Polygon",

"coordinates": [

[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0] ]

},

"properties": {

"prop":"value0"

}

},

{"type": "Feature",

"geometry": {

"type": "Polygon",

"coordinates": [

[ [101.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0],]

]

},

"properties": {

"prop": "value1"

}

}

]

}

GeoJSON

OpenLayers [ベクターレイヤー]

PostGIS

前例の通りGeoJSONで

地図を表示する方法で

開発を行っていた…

Page 21: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

…しかしテスト工程で

IE7, 8で重すぎて

OSを道連れに落ちる

大事件が発生!(☉Д⊙;;)

開発中に直面した問題(2/3)

Page 22: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

開発中に直面した問題(3/3)

リリース2週間前、急きょ実装方法を変更!

大変でしたがなんとか間に合いました。

だったら地図を画像で表示して

みたらいいんじゃない?? 和山

Page 23: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

OpenLayersでタイル画像の地図を表示する

Mapnik

ズーム値ごとにタイル画像

を生成

OpenLayers [ XYZグリッドレイヤー]

Page 24: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

地物を選択する

① OpenLayersで矩形描画

② PostGISで矩形範囲に含まれる地物を取得

③ Mapnikで地物の画像を生成

④ OpenLayersで画像を表示 [ イメージレイヤー ]

緯度: 141.38 経度: 43.14

緯度: 141.38 経度: 43.10

緯度: 141.47 経度: 43.14

緯度: 141.47 経度: 43.10

temp.png

Page 25: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

生活圏域の設定

デ モ

Page 26: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

2014/11/25

4-3.介護事業所のカバレッジ分析

Page 27: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

小地域shpデータ

道路データ

介護事業所データ

男女5歳階級別人口shpデータ

500mメッシュ

OpenLayers (JavaScript)

PostGIS (データベース)

Mapnik (サーバ用ツールキット)

使用したオープンデータ / ライブラリ

オープンデータ

オープンソース

GIS

Page 28: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

事業所からの到達圏域を計算する(1/4)

到達圏域の計算にはpgRoutingを使用する。

pgRoutingとは?

経路探索ができるPostGISのライブラリ。 (http://pgrouting.org/)

pgRoutingでこんなことができる!

x地点からy地点までの最短経路の検索。

x地点からの到達圏の探索 (自動車で30分圏内 etc)。

x地点からy地点, z地点を経由して

x地点に戻る際の最短経路の検索。 など

Page 29: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

事業所からの到達圏域を計算する(2/4)

さっそく事業所からの50分到達圏域を計算してみると、

非常に時間がかかることが判明!

事業所ノード数 計算時間

9997件 × 2.5分 = 416.5時間

計算時間を短縮するため、以下の2つを試した。

① 事業所ノードの最適化 ② 探索範囲の絞りこみ 事業所ノード数 計算時間

4653件 × 12秒 = 15.5時間

結果、 約26倍の高速化に成功!

Page 30: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

事業所 事業所の最短ノード

2014/11/25

事業所からの到達圏域を計算する(3/4)

①事業所ノードの最適化 経路検索では、事業所に1番近いノードをスタート地点として検索を行う。

検索するノード数が多いと比例して計算量も増える。

⇒事業所のノードが密集している地域は1か所にまとめて、

検索するノード数を減らす。

Page 31: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

事業所からの到達圏域を計算する(4/4)

②探索範囲の絞りこみ 経路検索では、すべてのノードを対象として探索を行うため、

計算時間がかかる。

⇒範囲を絞り込んで探索を行う。

● start

end

start

end

Page 32: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

GDALでヒートマップを作成する

①事業所のノードデータを

補完し、 tif画像を作成

②都道府県の形に切り取る ③カラーテーブルファイ

ルで色付け

-999 0 0 0 0 -1 0 0 0 0 5.77664 0 193 0 255 11.43873 145 224 145 255 17.10082 255 242 138 255 22.76291 253 141 141 255 28.425 221 60 79 255

カラーテーブルファイル

gdal_grid gdalwarp gdaldem

Page 33: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

500mメッシュ単位の高齢者人口を求める

面積:1420k㎡ 65歳以上の人口:18人

重なっている部分の面積:154k㎡ ≪面積按分の求め方≫ 65歳以上の人口= (154k㎡ × 18人) ÷ 1420k㎡ ≒ 1.9人

高齢者の分布を500mメッシュで表したいが、

メッシュ単位ではデータをもっていない。 面積按分にて算出

Page 34: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

Mapnikで合成手法を変更する

OpenLayersではレイヤーの合成は透明度以外できない。

一方、Mapnikは複数のレイヤーを重ねたり、

合成手法(色の混じり具合など)を弄ることが出来る。

また、速度も速いためインタラクティブな操作が可能。

Page 35: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

介護事業所のカバレッジ分析

デ モ

Page 36: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

5.全体のまとめ(1/3)

オープンデータは・・・

複数のオープンデータを組み合わせて分析することで、

今まで見えなかった部分が可視化され、様々な発見ができるの

ではないかと思う。

(地理×防災 , 交通 ×観光 , 公共施設×福祉 など ... 可能性はいっぱい!!)

さらに、アプリケーションやサービスにオープンデータを積極的に

活用することで、データの新たな価値を生み出し、日常生活の

利便性の向上が図れるのではないかと思う。

Page 37: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

5.全体のまとめ(2/3)

オープンソースGISは・・・ マニュアルやリファレンスが主に海外のサイトであるため、

英語の内容を理解しなければならなかった。

⇒ 日本語への変換はGoogle翻訳をフル活用。

⇒ 分からないことはStack Overflow等、Q&Aサイトで検索。

GIS特有の「空間参照系」という概念に慣れるまで苦労した。

Page 38: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

5.全体のまとめ(3/3)

開発にあたって・・・ WEBブラウザの性能の向上により、デスクトップ用GISソフト並みの

インタラクティブな操作や分析がWEB上でもできることが分かった。

また、レガシー環境でもクライアントやサーバの協働により、安定した

レスポンスを確保できることが分かった。

開発中は苦労した面もあったが、無事に開発をやり遂げた時は

今までにない達成感を得ることが出来た。

今後もWEB上でのデータの視覚化という分野にもっと力を入れて

多くの人が驚くようなシステムをどんどん作成していきたい。

Page 39: 【IISAテクニカルカンファレンス2014】 オープンデータ×オープンソース ~WEB上でのインタラクティブ可視化手法について~

ご清聴 ありがとうございました。