6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenStreetMapAdvent Calendar 2013

Day 16

route relationの描き方

Last updated at Posted at 2013-12-18

リレーションの編集: 基本編

すでに別ドキュメントとして書きましたので、そちらを参照ください。

route relationの用途

route リレーションは、バスや電車の運行経路、国道や県道などの長距離にわたる道路、ハイキングコースなど、なんらかの経路を記述するために利用します。
長距離のウェイを記載する場合、例えば橋やトンネルなどによってウェイが寸断されている場合や、1つの道路に複数の道路番号が割り当てられていることがしばしばあります。routeリレーションではそれらを解決することができます。

例えば、こんなかんじです。

skitch.png

route relationの構成

リレーション本体に付与させるタグの一覧はOSM wikiに記載があります
特に、以下の2つのタグが重要となります。

タグ 説明
type route リレーションのtypeがrouteであることを指定
route road
bicycle
foot
hiking
bus
train
etc...
経路の種別を特定

OSM Wiki -Relation:route

リレーション編集ウィンドウの、この部分に記入します。

rel-2.jpeg

route relationの memberとrole

とても数が多く、わかりづらいのがここです。

ただ、基本的には、forward, backward, stopの3種類しか使わないのではないかと思います。

対象オブジェクト種別 ロール リレーション内に必要なメンバー数 説明
ウェイ route(あるいは空白) 0個以上 経路を構成するウェイ。両方向に通行することが多い場合に使う
ウェイ forward 0個以上 経路内のウェイに付与し、そのウェイが一方向にのみ通行する部分に対して使う。
経路は、ウェイの向きと同じ方向に対してのみ進行する
ウェイ backward 0個以上 経路内のウェイに付与し、そのウェイが一方向にのみ通行する部分に対して使う。
経路は、ウェイの向きと逆方向に対してのみ進行する
ウェイ link 0個以上 highway=motorway_linkなど、主な経路との接続道路に対して使う
ノード stop 0個以上 経路上に存在するバス停や鉄道駅をあらわす。ノードのみがValidであることに注意
ノード stop:<number> 0個以上 経路上に存在するバス停や鉄道駅。番号がある場合に利用し、番号はゼロから始まる(stop:0、stop:1、など)。
停留所の順番は、リレーション内でrole:stopが並んでいる順番がそのまま使われる。
ノード forward/backward:stop 0個以上 経路上に存在するバス停や鉄道駅。
forwardかbackwardかはウェイの向きにのみ関連し、上り線や下り線などの概念とは無関係なので注意。
停留所の順番は、リレーション内でrole:forward:stopや role:backward:stopが並んでいる順番がそのまま使われる。
ノード forward/backward:stop:<number> 0個以上 経路上に存在するバス停や鉄道駅。番号はゼロから始まる(stop:0、stop:1、など)。
forwardかbackwardかはウェイの向きにのみ関連し、上り線や下り線などの概念とは無関係なので注意。
停留所の順番は、リレーション内でrole:forward:stopや、role:backward:stopが並んでいる順番がそのまま利用される。

リレーション編集ウィンドウの、この部分に記入します。

rel-1.jpeg

具体的な登録方法

シンプルな例

kim_upsilonさんのスライドにもある例ですが、以下のようなバスの運行経路があるとします。
STOP 1の停留所からスタートし、ウェイA・C・Eを通過して、STOP 2へ向かいます。

rel-3.jpeg

この際、メンバーとして所属するオブジェクトのウェイの向きに注意してください。
ウェイの向きと運行経路の向きが逆転している場合は、リレーションのロールにbackwardを入力します。
なんで backwardというロールが存在しているかというと、一方通行への対応が必要だからです。

rel-4.jpg

1つのウェイに対して複数経路を登録する場合

例えば1本の道路に対して、2系統のバスが通行している場合があります。
これこそ、リレーションの真骨頂です。
リレーションを2つ作成し、それぞれにメンバーを登録してください。

例えば、以下2つのリレーションは同時に成立します。
ウェイCの部分が、2つのリレーションに所属しています。

ほげ路線のリレーション

rel-5.jpg

ふー路線のリレーション

rel-6.jpg

よくある困った例

登録するべきウェイの分割

既存で長いウェイが存在していて、本来の経路(曲がる、など)が表現できない場合、既存のウェイを適切な形に分割します。

詳細はkim_upsilonさんの資料を参照してください。

線路: 駅構内での迂回路線

特に単線の路線の場合、駅で列車をすれ違いさせるために、駅の中だけを複線にしている場合があります。

この場合、メインで使用される経路のみをリレーションに登録します。

駅・停留所の登録方法

ロールの "stop" を利用しますが、ウェイの接続の中途に入れ込む必要はありません。
停車の順番にだけ気をつけて、リレーションの上か下のどちらかへまとめます。

rel-8.jpg

上りと下りで経路が異なる場合

  • 上りのリレーションと下りのリレーションで2つの経路を作成します。
  • 例:
  • 上り路線リレーション: "name: ほげ51系統","from: STOP 1","to: STOP 2"
  • 下り路線リレーション: "name: ほげ51系統","from: STOP 2","to: STOP 1"
  • 2つの経路をメンバーとして含む、マスターリレーションを作成します。

参照ドキュメント

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?