リレーション

ビギナーズガイドの章で、OpenStreetMapのオブジェクトには3つの種類があると説明しました。ポイント(ノード)、ライン(ウェイ)、そしてポリゴン(閉じたウェイ)の3つです。ラインには複数のポイントデータが含まれていますが、そのラインが何をあらわしているかという情報はそれらのポイントオブジェクトではなく、ラインオブジェクトに対して与えられます。ポリゴンはラインと同じ形式ですが、ラインの始点と終点が同じポイントで閉じられています。

実際のところ、その説明は完璧ではありません。なぜならば、OpenStreetMapには “リレーション” と呼ばれるもうひとつの種類のオブジェクトがあるからです。ラインが複数のポイントオブジェクトを含んでいるように、リレーションにはポイントやライン、ポリゴンなどその他の種類のオブジェクトが含まれ、それらがグループ化されています。高度な編集スキルを身につけたいと考えるならば、リレーションの編集方法について知っておくことはたいへん重要です。

例えば、内部に中庭がある建物を描く時を考えてみてください。この場合、まずは建物の外周を描き、次に、その中にある中庭部分を別のポリゴンとして描く必要があります。これが、リレーションの使い方の一例です。リレーションには複数のポリゴンを含めることができ、建物としてのタグ属性情報はポリゴンではなくリレーションの側に付与されます。

multipolygon demo

リレーションでは、複数のオブジェクトから形成される対象を定義し、表現するために使われます。他にも、バスの運行経路 (ラインの集合) や、長く複雑な形状のオブジェクト (河川や道路など)、あるいはひとつの敷地内に存在する複数の建物 (1つの大学敷地内に複数の校舎がある場合など) をグループ化するために使われます。

OSMで主に使われるリレーションには、4つの種類があります。マルチポリゴン、ルート/経路、バウンダリ/境界線、レストラクション/制限(例えば左方向転回制限など)です。このセクションではその中でも、マルチポリゴンとルートのリレーションについて紹介します。

マルチポリゴンリレーションの作成

それでは、先ほど作成したようなマルチポリゴンリレーションを作成するための方法をみてみましょう。

  • まずは対象となるシェイプを作成します。この場合では、3つのポリゴンを描きます。外周となる外側のポリゴンが1つ、内側の小さなポリゴンが2つです。

multipolygon ways

  • それらのポリゴンをすべて選択します。複数のオブジェクトを同時に選択するには、キーボードのShiftキーを押しながら対象をクリックしてください。
  • *プリセット -> 人工物 -> 人工物 -> 建物 * へ進みます

building preset

  • “新規リレーション”を選択します

new relation

  • リレーション編集ウィンドウが表示されます。グループ化されたウェイに対してタグを追加する作業を行う関係上、表示は少々複雑です。

building relation

  • ウィンドウの上のほうに表示されているパネルは、リレーションに対して付与されているタグです。これらのタグは、通常の操作でオブジェクトに対して与えるタグと同等の意味を持ちます。
  • リストの一番下は、リレーションに所属しているメンバーをあらわします。このリレーションには3つのオブジェクトがメンバーとして所属しています。つまり、この3つのウェイが今回のリレーションを構成している、ということになります。
  • マルチポリゴンの作成を完了させるには、いくつかの操作を行う必要があります。まずは、建物プリセットを使用したために、対象のオブジェクトにはタグがひとつ “building=yes” しか付与されていないことに対応しましょう。リレーションを作成する場合、そのリレーションの “type” を指定する必要があります。リレーションに対するタグに type=multipolygon を追加しましょう。
  • タグ入力ボックスをクリックし、このタグを入力します。

type multipolygon

  • 次に、 role/ロール/役割 と呼ばれる項目を設定します。リレーションに所属するメンバーオブジェクトにはそれぞれにロールが割り当てられ、そのリレーションにおいてどのような意味を持っているかが指定されます。今回のマルチポリゴンの場合、外周側のポリゴンには outer というロールが割り当てられ、内側2つのポリゴンには inner というロールを割り当てます。マルチポリゴンにおけるメンバーに対するロールとして利用可能なのは、この2つだけです。

  • ロールの割り当ては左下のパネルで行います。パネル内でオブジェクトメンバーを選択すると、マップウィンドウでそのオブジェクトが強調表示されます。それぞれのポリゴンに outerinner のロールを割り当ててください。

outer inner

  • マルチポリゴンリレーションの作成はこれで完了です。OKを押してください!

new multipolygon

今回のように作成したマルチポリゴンが地図上でレンダリングされると、以下のように表示されます:

multipolygon mapnik

マルチポリゴンは、外側と内側を組み合わせることで、中庭のある建物や、中洲のある河川をはじめ、非常に複雑な形状のオブジェクトを表現することが可能です。マルチポリゴンについてのより詳しい情報は、OSM Wikiに記載されています。

ルート/経路 リレーション

リレーションを使うことで、長距離にわたる経路情報を表現することも可能です。例えば、バスや自転車の経路は複数の道路オブジェクトを組み合わせる形で指定されています。こうした経路情報を表現するにあたり、リレーションを使うことで、それら複数の道路をまとめて1つの経路として表現することが可能です。また、経路以外の情報、例えばバス停などについても、リレーションのメンバーとして指定することができます。

route relation

それでは、JOSMでバス経路リレーションを作成する方法を見てみましょう:

  • 最初に、その経路を構成するウェイをすべて選択します。経路が曲がるべき箇所でウェイが結合してしまっている場合は、その箇所でウェイの分割を行ってください。JOSMでは、 “ウェイの分割” ツールを使って分割を行うことができます。

public transport preset

  • ルート種類は、”バス”を選択します。
  • “新しいリレーション”を選択すると、マルチポリゴンを作成した時と同様にリレーションウィンドウが表示されます。

bus route relation

  • 経路リレーションを定義するためのタグも既に用意されています。 type=multipolygon と入力する代わりに、 type=route と入力してください。また、その経路が電車やフェリーなどの経路ではなく、バスの経路であることを示すために、もうひとつ別のタグも付与します。
  • ロール に設定するべき情報ですが、経路リレーションの場合はメンバーのロールを設定する必要はありません。ロールの部分を空白にしておくことで、ソフトウェアが自動的に、そのメンバーが経路の一部である、と認識してくれます。もちろん、各メンバーオブジェクトへ明示的に route というロールを割り当てることも可能ですが、指定の上で必須というわけではありません。
  • メンバーの登録が終わったら、OKを押せば設定完了です!

relation panel button このパネルでは、リレーションの選択や編集、新規作成が可能です。

まとめ

リレーションはとても難解な概念で、しかもあまり頻繁に使う機能ではありませんが、OSMを詳細に編集する際には必ず知っておく必要があるものです。編集を行うにあたって、リレーションが必要になることはあります。そのときには、ここでの知識を活かし、OSM wikiにあるより詳しい記述を参考にリレーションを正しく編集できるよう試してみてください。