pgRouting
って何?
Taro Matsuzawa aka. btm (@smellman)
Georepublic

13年11月27日水曜日
今日の内容
地理空間対応の概要をざっくり
pgRoutingについてざっくり
デモ

13年11月27日水曜日
自己紹介
Georepubic Japan勤務
地理空間情報系見習い
OSSコミュニティ歴1x年?
某組とか
日本UNIXユーザ会理事

13年11月27日水曜日
最近の活動
OSM関係にちらほら
伊豆大島
フィリピン
暗渠

13年11月27日水曜日
最近の仕事
Objective-C / Python / PHP
IE向けサイトをWindows + PHPで作
ってます
NTEmacs+SKK+eshell最高

13年11月27日水曜日
DB x 地理空間情報

最近(でもないけど)のDBでは地理空間
情報を扱える
座標&座標系、距離、WKT、etc...

13年11月27日水曜日
よくある例
ある地点から半径nメートル内のデータ
を取得
ある地点xとある地点yとの距離を計算
ポリゴンデータをそのまま格納
こういうのがクエリ一発でできたり

13年11月27日水曜日
DBの地理空間情報サポート
PostgreSQL + PostGIS
MySQL
SpatiaLite(SQLite+地理空間情報関数)
mongodb
Oracleのやつ(よく知らない)

13年11月27日水曜日
ライブラリ
GEOS によるOpenGIS関数サポート
PROJ4による測地系データベースのサ
ポート
お客さんからのデータが日本測地系
だったら世界測地系にして入れたり
とか

13年11月27日水曜日
OSGeo財団
オープンソース地理空間ソフトウェア
の支援と構築のために設立された団体
多くのソフトウェアを提供
OSGeo財団日本支部もあります
弊社も企業会員です!

13年11月27日水曜日
pgRoutingとは
PostgreSQL+PostGIS上でルート計算
をするライブラリ
いわゆる最短経路問題のアレ

13年11月27日水曜日
サポートアルゴリズム
全点対間最短経路探索 - ジョンソンのアルゴリズム [1]
全点対間最短経路探索 - ワーシャル-フロイド法 [1]
A* アルゴリズムによる最短経路探索
双方向ダイクストラ法による最短経路探索 [1]
双方向 A* アルゴリズムによる最短経路探索 [1]
ダイクストラ法による最短経路探索
到達圏探索
K-最短経路探索 - 複数の代替経路探索 [1]
K-ダイクストラ法 - 1対多の最短経路探索 [1]
巡回セールスマン問題
交差点での進入制限付き最短経路探索 (TRSP) [1]

13年11月27日水曜日
必要なデータ
ネットワークデータ
ネットワークトポロジーデータ
グラフを作る必要があるってこと
ネットワークトポロジーデータを作
成するための関数あり

13年11月27日水曜日
ダイクストラ法
pgr_dijkstra(sql, source, target,
directed, has_rcost);
最初のsqlに計算対象となるSQLを渡
し、sourceからtargetまでで最適な距
離を計算する(わかりづらい)

13年11月27日水曜日
実際の式
SELECT seq, id1 AS node,
id2 AS edge, cost FROM pgr_dijkstra('
SELECT gid AS id,
source::integer,
target::integer,
length::double precision AS cost
FROM ways',
30, 60, false, false);

13年11月27日水曜日
以下面倒なのでデモ

13年11月27日水曜日
デモの内容
QGISで簡単なクエリ実行
GeoServer+OpenLayers3で簡単なWeb
アプリ
ぶっちゃけworkshopの内容ですw

13年11月27日水曜日
参考文献など
pgRouting ワークショップ
http://workshop.pgrouting.org/ja/
index.html
アルゴリズムとかはwikipediaを見まし
ょうw

13年11月27日水曜日

11月のささみ: pgRoutingって何?