Template:OSM経路図

# 1.はじめに
見よう見まねでウィキペディアのテンプレート「[Template:OSM経路図](https://ja.wikipedia.org/wiki/Template:OSM%E7%B5%8C%E8%B7%AF%E5%9B%B3)」を作ってみました。場所について書かれた記事によくある「交通アクセス」節などからリンクを張り、現地に至る経路をOpenStreetMap由来のデータを元に経路探索して表示するものです。OSM側でのデータ整備とウィキペディア記事との連携の一助になればと考えてみました。

# 2.パラメータの説明
詳細は[Template:OSM経路図](https://ja.wikipedia.org/wiki/Template:OSM%E7%B5%8C%E8%B7%AF%E5%9B%B3)を参照してください。パラメータは4つありますが、必須となるのは「開始位置座標」と「目的位置座標」の2つだけです。

* <b>経路探索エンジン＋移動手段（省略可）</b>：経路探索に使うエンジン(GpaphHopper/OSRM/Valhalla)と移動手段(徒歩/自転車/自動車)の9種類の組み合わせから選びます。既定値は「graphhopper_foot」。
* <b>開始位置座標（必須）</b>：経路の開始位置をカンマ区切り（スペース無し）で指定します。(例："35.79143,139.93805")
* <b>目的位置座標（必須）</b>：経路の終了位置をカンマ区切り（スペース無し）で指定します。(例："35.78999,139.94030")
* <b>表示リンク名（省略可）</b>：リンク用に表示する文字列を指定します。既定値は「OSM経路図」。

# 3.使い方
## 3.1 使用する記事を決める
ここでは「[本福寺 (松戸市)](https://ja.wikipedia.org/wiki/%E6%9C%AC%E7%A6%8F%E5%AF%BA_(%E6%9D%BE%E6%88%B8%E5%B8%82))」という記事を選びます。
![](https://i.imgur.com/70hUZDH.png)
交通アクセス節に以下のように記載されています（本記事による修正前の状態）。
``
鉄道
　* 新京成線上本郷駅またはJR常磐線北松戸駅から徒歩で約10分
``

このお寺は下記中央の赤丸の位置にあり、新京成線上本郷駅とJR常磐線北松戸駅からはほぼ等距離です。また、より近くには明治神社前というバス停もあります。
![](https://i.imgur.com/uRMnsdd.png)
この3地点から本福寺までの徒歩経路を表示することにしましょう。

## 3.2 開始/目的位置座標を調べる
テンプレートにセットする2つの座標値を何らかの方法で調べます。ここでは[OSM.org](https://osm.org)を利用します。実はこの調べるための操作で表示される経路が、そのままこのテンプレートで表示される経路になります。（なのでテンプレートを使わずともその操作結果のURLを単純に外部リンクするだけでも結果的には同じ動作となります。）

OSM.org画面左上の検索ウィンドウの右隣にある下記アイコンをクリックすると
![](https://i.imgur.com/PEBRECy.png)
画面左上で経路探索の操作ができるようになります。
![](https://i.imgur.com/CV4ShFR.png)

緑のピンを開始位置（北松戸駅）に、赤のピンを目的位置（本福寺）に、それぞれドラッグします。
![](https://i.imgur.com/x8boboo.png)
徒歩での経路が薄青の線で表示されました。距離は773m、時間は9分となっています。経路探索エンジン（GraphHopper）の時間計算の根拠までは調べきれていませんが、単純計算で1分あたり85mくらいの距離換算でしょうか。

ピンを落とした際に画面左上の2つの赤枠内に表示されているのがそれぞれ開始/目的位置の座標値です。緯度と経度がカンマと半角スペースで区切られていますが、テンプレートにパラメータとしてセットする際には半角スペースは必ず外してください。

## 3.3 テンプレートに必要なパラメータを記述する
残り2箇所からの経路も同様に開始/目的位置を調べ、ウィキペディアの記述を以下のように修正して保存します。

``
; バス
: * [[松戸新京成バス|京成バス]]明治神社前バス停から徒歩で約4分 （{{OSM経路図|start=35.79707,139.91597|goal=35.79576,139.91443|name=経路案内}}）
; 鉄道
: * [[常磐線|JR常磐線]][[北松戸駅]]から徒歩で約9分 （{{OSM経路図|start=35.80052,139.91188|goal=35.79576,139.91438|name=経路案内}}）
: * [[新京成線]][[上本郷駅]]から徒歩で約11分 （{{OSM経路図|start=35.7896,139.9162|goal=35.79594,139.91444|name=経路案内}}）
``
![](https://i.imgur.com/9yOYbhx.png)
これで「[本福寺 (松戸市)](https://ja.wikipedia.org/wiki/%E6%9C%AC%E7%A6%8F%E5%AF%BA_(%E6%9D%BE%E6%88%B8%E5%B8%82))」の交通アクセス節でそれぞれ（）内にある「経路案内」の文字をクリックすると経路案内が表示されるようになりました。（OSM.orgで座標を調べた時の操作結果が再現される形です。）

* 明治神社バス停→本福寺
![](https://i.imgur.com/S8lpPH7.png)
* 北松戸駅→本福寺
![](https://i.imgur.com/n6j0FZL.png)
* 上本郷駅→本福寺
![](https://i.imgur.com/XfTDIQg.png)

# 4.補足・注意事項
* 指定できるのは起点と終点の2地点のみで、経由地の指定はできません。公共交通機関を降りた後の目的地までの(主に)徒歩での経路案内を想定しています。
* 期待に反する経路が案内された場合は経路探索エンジンを変えたり、座標位置（特に目的地側）を微調整（OSM.org上でピンをドラッグして動かせます）すると改善される場合があります。
* 各エンジンの仕様とOSMデータに基づいて経路を選ぶため、データに誤りや過不足がある場合はOSM側での修正が必要です。実際は横断歩道があるのに描かれておらず渡れなかったり、車道と歩道が接続されておらず歩行者向け経路に入れなかったり、はたまたバス停が描かれていない、といったことはよくあります。その際、修正方法はOSMの規範に従ってください。自分の期待する経路を取るためだけに修正しないようにしてください。知り合いにマッパーがいればお願いするのが良いと思います。このあたり、興味ありましたら過去記事（[地元の知識で歩行経路を充実させよう](https://qiita.com/higa4/items/a8db76994ddedddec559)）をご参照ください。
* 各経路探索エンジンはOSMデータを複製して利用しているため、オリジナルデータを更新しても経路に反映されるまでしばらく時間がかかります。この記事を書くために更新した結果では約1週間後に経路が変更されました。
* 徒歩以外の経路も選択できますが、日本ではカーナビや鉄道乗換えの案内が充実しているため、同等レベルの案内ができるデータがOSM側で整備されることはすぐには期待しないほうが良いのではないかと思います。つまり、現時点では徒歩での経路案内用として使うと良いと思います。自転車向けの経路がOSM側で整備されているところでは、自転車向けの経路案内も面白いかもしれません。
* 外部サービスに依存している機能であるため、予期なく仕様が変わったり、動作しなくなる可能性があります。
* 機械的に連続して動かす等、外部サービスに過度に負荷を掛けるような利用法は控えてください。
* 理想的にはWMFがホストしているOSMサービス側で直接経路案内付きのベクターマップが表示されると良いのでしょうが、現時点でできることとしてOSM側にリンクを張る形としています。

# 5.関連情報
* [Template:OSM経路図](https://ja.wikipedia.org/wiki/Template:OSM%E7%B5%8C%E8%B7%AF%E5%9B%B3)
* [使用例：本福寺 (松戸市)](https://ja.wikipedia.org/wiki/%E6%9C%AC%E7%A6%8F%E5%AF%BA_(%E6%9D%BE%E6%88%B8%E5%B8%82))
* [経路探索エンジンGraphHopperの説明（英語）](https://wiki.openstreetmap.org/wiki/GraphHopper)
* [経路探索エンジンOSRMの説明（英語）](https://wiki.openstreetmap.org/wiki/Open_Source_Routing_Machine)
* OSM歩行経路マッピング関連記事：[地元の知識で歩行経路を充実させよう](https://qiita.com/higa4/items/a8db76994ddedddec559)

画像の出典：ウィキペディア日本語版 / (c)OpenStreetMap contributors