Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSSルーティングエンジン「GraphHopper」と戯れてみた
Search
One compath
November 02, 2016
Programming
0
530
OSSルーティングエンジン「GraphHopper」と戯れてみた
オープンソースで開発されているルーティングエンジン
「GraphHopper」というやつを少し触ってみたという
お話です。
One compath
November 02, 2016
Tweet
Share
More Decks by One compath
See All by One compath
社内の制度を使って新規事業を⽴ち上げてみた話 OCEM#3
mapion
0
51
新規事業のアプリ、Flutterで作ってます〜U-ROUTEのポイ活対応編〜 OCEM#3
mapion
0
47
ウォーキングアプリ「aruku&」ってどうやって作ってるの? OCEM#3
mapion
0
73
ONE COMPATH/ワンコンパス Company Deck For Engineer(会社紹介資料)
mapion
0
3.2k
ONE COMPATHの地図の開発技術~入門編~ OCEM #2
mapion
0
130
脱レガシー! Aurora PostgreSQLに移行してみた OCEM #2
mapion
1
350
エンジニアなので「技術」で仕事を効率化してみた ~Slack連携でチームの生産性が向上~ OCEM#2
mapion
0
120
20221112_FOSS4G2022Online.pdf
mapion
0
970
ONE COMPATH/ワンコンパス Company Deck(会社資料)
mapion
0
260
Other Decks in Programming
See All in Programming
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
7
3.2k
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
410
Folding Cheat Sheet #1
philipschwarz
PRO
0
210
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
250
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
170
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
22
15k
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
3.1k
"config" ってなんだ? / What is "config"?
okashoi
0
210
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
8
2.1k
1인 개발자로 행복하게 살기 - GDG 송도 헬로월드 2024
benjaminkim
1
5.6k
エンターテイメント業界で利用されるAWS
demuyan
0
200
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
162
13k
How GitHub (no longer) Works
holman
304
140k
A better future with KSS
kneath
230
16k
Building an army of robots
kneath
300
41k
Git: the NoSQL Database
bkeepers
PRO
421
63k
Facilitating Awesome Meetings
lara
40
5.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
GraphQLとの向き合い方2022年版
quramy
30
12k
The Language of Interfaces
destraynor
151
23k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
RailsConf 2023
tenderlove
1
530
Transcript
OSSルーティングエンジン 「GraphHopper」と戯れてみた FOSS4G 2016 Tokyo LT 株式会社マピオン 中村 浩士
Who? * 中村 浩士 (なかむら こうじ) * @kozy4324 (Twitter, GitHub,
etc…) * 株式会社マピオン所属 * マピオン歴は10年 * 元Webアプリケーションエンジニア * JavaScriptなどのWebフロントエンド周り が得意領域です(でした) * GISは勉強中です!
オープンソースで開発されているルーティングエンジン 「GraphHopper」というやつを少し触ってみたという お話です。 発表の内容
位置情報ログの分析・解析用途でルーティングエンジン を活用したい! * ユーザーの経路検索ログを可視化 * GPSログの経路マッチング * ネットワークベースの到達圏解析 * etc…
モチベーション
OpenStreetMap Wiki にいい感じでまとめられている https://wiki.openstreetmap.org/wiki/Routing 以下のプロダクトが気になった * pgRouting * GraphHopper *
Open Source Routing Machine * Valhalla OSSルーティングエンジン
https://github.com/graphhopper/graphhopper * Java実装のOSSルーティングエンジン * OSMデータで動作する * 動作要件は「JRE (Java 7+) がインストールされてること」
* ただしネットワークデータを展開するメモリ領域は必要 * また起動スクリプトで wget コマンドを一部利用 GraphHopper とは
Getting Started ソースコードの取得と、最新安定版へのチェックアウト ビルド、OSMデータの取得、ネットワークデータの生成、アプリケーションの起動まで 面倒見てくれる起動スクリプトを実行 最後にWebアプリケーションの起動ログが出力されればOK
Getting Started (続き) http://localhost:8989/ で確認可能
日本のエリアで動かす 起動スクリプトのOSMデータの指定を変え、割り当てメモリを2Gほど指定する (デフォルトだとOutOfMemoryエラーが発生する)
JSONレスポンス形式に対応した Web API にも対応 https://github.com/graphhopper/graphhopper/blob/0.8/docs/web/api-doc.md Web API
Web API レスポンスサンプル 「田町駅」から「駒場東大前」までの ルートリクエスト http://localhost:8989/route ?point=35.645736,139.747683 &point=35.658902,139.683363 &points_encoded=false &instructions=false
&debug=true
Ruby で Web API を叩いて、結果を GeoJSON 形式で吐 き出すプログラムを書いてみた。 Ruby から
Web API 経由で利用する
None
None
実行 以下な感じで実行して結果をファイル出力できる。
GitHub でプレビュー
* OSMデータのサイズでダウンロードおよびネットワーク データの展開はそこそこ時間がかかるが、データ処理 時間を除けば「とりあえず触ってみる」の敷居は低い * デフォルトだと車の経路検索となる、歩行者の経路検索 を行う設定カスタマイズを確認したい * 経路マッチングを行う map-matching
なるプロダクトも あり、これも試したい * 位置情報ログの分析・解析用途に利用するにはこれで いい感じっぽい GraphHopper 所感
* GraphHopperの設定カスタマイズや map-matching な どの機能を試して、分析・解析用途の幅を広げたい * 他のルーティングエンジンも評価して、それぞれの特徴 や強みなどを整理したい * ルーティングエンジンを活用した位置情報ログの分析・
解析に取り組む! 今後の展開(個人目標)