OpenStreetMap
JOSM

JOSMでバスリレーションを書こう!

More than 1 year has passed since last update.

はじめに

OSMのよくわからない機能第1位(自分調べ)に挙げられるのがリレーション機能です。
色々試行錯誤して、バスのリレーションを書く方法を見つけ出したので、まとめてみます。

リレーションとは

リレーションとは、OSM上で「ひとまとまりの集合」を表現するための概念です。
今回のように特定のバスルートやサイクリングロードなどを表したりする際に利用します。
また、複数のポリゴンからなる建造物を表現するのにも用いられます。

JOSMの導入

普段よく使っているOSM WebエディタのiDはリレーション編集機能に対応していないので、
JSOM(Java OpenStreetMap Editor)を利用します。

前提としてJava8のインストールを求められているので、インストールしてください。

WindowsではJSOM公式サイトから"josm.jnlp"をダウンロードしてください。
落としてきた"josm.jnlp"をダブルクリックすればインストールしてくれます。

Linuxでは各ディストリのリポジトリに登録されているものをインストールしてください。

Macではbrew caskで入るのでこれを利用してください。
なお右クリックを頻繁に用いる都合上、Macのトラックパットでは操作が非常に難しいのでご注意ください。

OSMへのログイン

編集するにはまずログイン、ということで先にログイン作業を済ませておきます。
F12キーを押して設定画面を開き、OSMサーバーへの接続設定ボタンをクリックします。

josm13.png

ここで今すぐ認証ボタンをクリックし、ログインユーザー名とパスワードを入力してトークンを受け取ってください。
OAuth認証を利用している人は、認証手続きを半自動に設定したうえで、リクエストトークンを取得してください。

マップの事前ダウンロード

JOSMでは編集する範囲を事前にダウンロードしておく必要があります。
API制限のため極めて狭い範囲しかダウンロードできないので、ちまちまと編集範囲すべてをダウンロードしていきます。
赤枠で囲ってあるダウンロードボタンを押して、範囲を選択しつつダウンロードしてください。

josm01.png

目安としてはこのぐらいの範囲です。
右クリックで地図上を移動しつつ、左ドラッグで範囲を選択します。
josm02.png

ダウンロードしたマップはJOSMを終了すると破棄されてしまうので、保存しておきましょう。
Ctrl+Sで保存することができます。

ウェイのみの表示

これからの作業には道路とバス停のみが見えていれば十分なので、フィルタをかけます。
他のポリゴンがあると動作も重たいですし、優先的に行っておきます。

画面左下のフィルタボタンをクリックし、フィルタ編集欄を出現させます。編集欄は右下に出てきます。

josm03.png

編集欄で「追加」ボタンをクリックします。

josm04.png

フィルター文字列highwayと入力し、フィルターを登録ボタンを押します。
追加されたら、左右2つのチェックボックスにチェックを入れて、完了です。

josm05.png

リレーションの作成

リレーションの追加

いよいよバス用のリレーションを作成します。右下にあるリレーション一覧から「新規リレーション作成」ボタンをクリックします。

josm06.png

編集ウィンドウが開くので、リレーションのタグを決めていきます。
バスの場合はおおむね以下のような値を設定するとよいと考えられます。

キー 説明
type リレーションのタイプ route
route ルートの種類 bus
operator 運行業者 ◦◦バス
name ルート名 ◦◦循環線
ref ルート番号 6
description 説明 △発□行き(◦◦経由)

今回は例として以下のようなリレーション1を追加してみます。

josm07.png

バス停の追加

リレーション編集画面は開いたまま、追加するバス停を選んでいきます。
Ctrlキーを押しながら、始点から終点までのすべてのバス停を選択します。
地図上の移動は右ドラッグなので間違えないようにしてください。

あまりに大量に選びすぎるとミスクリックしたときのダメージが大きいので、
5つぐらい選択したら、リレーションに追加していくとよいでしょう。
下へ下へ追加していけば良いので、4つあるうち一番下のボタンを押して追加していきます。

続きがあるときはどこか何もない場所をクリックして、選択されたバス停の選択を解除することを忘れないでください。
さもないと二重にバス停が追加されてしまいます。

josm08.png

ループ線がある都合上、同じバス停をリレーションに追加しようとすると既に登録されているという旨の警告が出ますが、
事実そういうルートであることには変わりが無いので無視して登録してかまいません。

一通りバス停を追加し終わったら、ロールを適用していきます。
Shiftキーを使って登録したバス停をすべて選択し、ロールを適用欄にstopと入力してチェックボタンを押します。

josm09.png

すべての役割欄にstopと記述されればOKです。

運行ルートの追加

バス停を選択していったときと同様、バスが通る順番に道路を選択していきます。
こちらも下へ下へ追加していってください。
また、ループ線などで同じところを登録しようとすると警告が出ますが、気にする必要はありません。

曲がりたいところで道路が切れていない場合は、交差点部分をクリックしてPキーを押すと道路を分割できます。

ざっくり道路を追加したら、切断箇所がないかを確認します。
特に道路を分割した際などには意図した道路が選択されておらず、途切れてしまう場合があります。
その場合はメンバー欄の一番右の路線選択状況を見て、赤丸になっている箇所を探して修復すればOKです。

josm10.png

赤丸になっている参照先をダブルクリックすると地図上に赤く表示されるので、
その前後を繋ぐような道路を新たに選択して該当箇所に挿入します。
選択されたノードの下に追加ボタンで挿入できます。

josm11.png

追加し終わったら、先ほどと同様にロールを適用していきます。路線状況の矢印に注目してください。
矢印が下に向いているものはforward、上を向いているものはbackwardを記述していきます。
これを間違うと切断状態になってしまうので、気をつけてください。
(もっとも、その場合は赤丸で表示されるのですぐわかりますが)

ルートの結合

最後に編集画面下部にあるOKボタンを押して、リレーションへの登録作業は終了です。

アップロード

リレーションを作り終わったら、OSMに反映させるためにアップロードしましょう。
その前にログインが必要なので済ませておきます。

アップロードボタンをクリックして、いくつかの確認作業を経た後にアップロードできます。
上矢印のアイコンがアップロードボタンです。

アップロードボタン

疑わしいデータへの警告はとりあえず無視してかまいません。

追加や変更のあったオブジェクトの確認欄で、意図していないものを編集していないか確認してから、
変更の概略コメントデータのソースを入れてアップロードしましょう!

マスターリレーションへの登録

同名のバスルートで複数のルートがある場合、マスターリレーションを作成して登録することで関係性を示すことができます。
先ほどと同様に新規リレーション作成し、以下のようなキーと値を設定していきます。

キー 説明
type リレーションのタイプ route_master
route_master ルートの種類 bus
operator 運行業者 ◦◦バス
name ルート名 ◦◦循環線
ref ルート番号 6

さらに、所属させたいリレーションを選択して同様に登録します。
今回は、ロールに何かを設定する必要はありません。

試しに「1」のマスターリレーションを作ってみました。

マスターリレーションの登録

できたらアップロードしましょう。

おわりに

リレーション追加の手順、いかがだったでしょうか。
JOSMを使えば、多少の手間はかかりますが意外と簡単にできてしまうものです。

今回例として書いたリレーションはこちらから見てみてください。
登録してから数日経つと、交通レイヤーにも反映されてやりがいを感じられますよ!

最後になりましたが、もしもっと良いやり方があったり、
リレーションとして不適切な箇所がございましたらご指摘ください。

参考

注釈


  1. 北海道で未着手のバスルートはこちらのサイトで公開されています。そもそもこのページ自体も充実していないので、拡充が必要ですが...