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

18

Click here to load reader

description

ささみでpgRoutingについて発表してきました。 実際はもっといろんな内容を口頭で話しています。 例えば、坂道とか一方通行とかの話とか。

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

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

pgRoutingって何?

Taro Matsuzawa aka. btm (@smellman)Georepublic

13年11月27日水曜日

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

今日の内容

地理空間対応の概要をざっくり

pgRoutingについてざっくり

デモ

13年11月27日水曜日

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

自己紹介Georepubic Japan勤務

地理空間情報系見習い

OSSコミュニティ歴1x年?

某組とか

日本UNIXユーザ会理事

13年11月27日水曜日

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

最近の活動

OSM関係にちらほら

伊豆大島

フィリピン

暗渠

13年11月27日水曜日

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

最近の仕事

Objective-C / Python / PHP

IE向けサイトをWindows + PHPで作ってます

NTEmacs+SKK+eshell最高

13年11月27日水曜日

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

DB x 地理空間情報

最近(でもないけど)のDBでは地理空間情報を扱える

座標&座標系、距離、WKT、etc...

13年11月27日水曜日

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

よくある例ある地点から半径nメートル内のデータを取得

ある地点xとある地点yとの距離を計算

ポリゴンデータをそのまま格納

こういうのがクエリ一発でできたり

13年11月27日水曜日

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

DBの地理空間情報サポート

PostgreSQL + PostGIS

MySQL

SpatiaLite(SQLite+地理空間情報関数)

mongodb

Oracleのやつ(よく知らない)

13年11月27日水曜日

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

ライブラリGEOS によるOpenGIS関数サポート

PROJ4による測地系データベースのサポート

お客さんからのデータが日本測地系だったら世界測地系にして入れたりとか

13年11月27日水曜日

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

OSGeo財団オープンソース地理空間ソフトウェアの支援と構築のために設立された団体

多くのソフトウェアを提供

OSGeo財団日本支部もあります

弊社も企業会員です!

13年11月27日水曜日

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

pgRoutingとは

PostgreSQL+PostGIS上でルート計算をするライブラリ

いわゆる最短経路問題のアレ

13年11月27日水曜日

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

サポートアルゴリズム全点対間最短経路探索 - ジョンソンのアルゴリズム [1]

全点対間最短経路探索 - ワーシャル-フロイド法 [1]

A* アルゴリズムによる最短経路探索

双方向ダイクストラ法による最短経路探索 [1]

双方向 A* アルゴリズムによる最短経路探索 [1]

ダイクストラ法による最短経路探索

到達圏探索

K-最短経路探索 - 複数の代替経路探索 [1]

K-ダイクストラ法 - 1対多の最短経路探索 [1]

巡回セールスマン問題

交差点での進入制限付き最短経路探索 (TRSP) [1]

13年11月27日水曜日

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

必要なデータネットワークデータ

ネットワークトポロジーデータ

グラフを作る必要があるってこと

ネットワークトポロジーデータを作成するための関数あり

13年11月27日水曜日

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

ダイクストラ法

pgr_dijkstra(sql, source, target, directed, has_rcost);

最初のsqlに計算対象となるSQLを渡し、sourceからtargetまでで最適な距離を計算する(わかりづらい)

13年11月27日水曜日

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

実際の式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日水曜日

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

以下面倒なのでデモ

13年11月27日水曜日

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

デモの内容

QGISで簡単なクエリ実行

GeoServer+OpenLayers3で簡単なWeb

アプリ

ぶっちゃけworkshopの内容ですw

13年11月27日水曜日

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

参考文献などpgRouting ワークショップ

http://workshop.pgrouting.org/ja/index.html

アルゴリズムとかはwikipediaを見ましょうw

13年11月27日水曜日