OpenStreetMapでデータの編集を行なっていると、リレーション という単語にあたることがあります。
OSM編集においてたいへん大切な概念であり、OSM Wikiにも解説ページが存在するのですが、具体的な設定操作方法がわからない、という声をよく聞きます。
ここでは、リレーションの基礎的な概念と、JOSMでの編集方法について解説します。
- [OSM Wiki: Relation] (http://wiki.openstreetmap.org/wiki/JA:Relation)
##OSMにおける地物の基本(Node,Way)
そもそもリレーションとは何か、を解説する前に、OSM編集の基礎となる地物についての基礎をおさらいしましょう。
地球上に存在する地物をOSMで表現する場合、私たちは以下のどちらかの方法を使って、対象の地物の位置を緯度経度で表現しています。
- ノード : Node。特定の緯度経度1点を示す。
- ウェイ : Way。複数のノードをつなぎあわせて、線として表現したオブジェクト。始点と終点が同じ位置の場合は、エリア(Area)と呼称する。
基本的には、上記の方法でほとんどの地物を表現することが可能です。
しかしOSMのなかで、それらの方法では表現しきれないデータの要求がでてきました。
具体的には、例えば以下のような事例です。
- エリアの中に別のエリアが存在する場合 (Multi Polygon)
- バスや鉄道など、複数の道路にまたがる経路情報 (Route)
リレーションでは、既に存在しているノードやウェイ、エリアを論理的に関連付け、1つのまとまりであることを表現することでこの問題を解決します。
リレーションの構成
リレーションには複数のノードやウェイが、メンバーとして組み込まれます。
また、それぞれのメンバーには、**ロール(役割)**が割り当てられます。
複雑な形状の森林地帯などを表現するために使われるマルチポリゴンという種別のリレーションを例に、解説を行います。
マルチポリゴンにおける、リレーションメンバーとロール
OSM Wikiのマルチポリゴン解説ページは以下になります。
非常に複雑な例をあげて詳細な説明がされていますが、基本となる構成は以下のみです。
同構成をJOSMで行う場合の構成設定画面は以下となります。
- リレーション自体へのタグ付け
- リレーションメンバー
- リレーションメンバーに割り振られるロール
- リレーションメンバー同士の接合状態
1. リレーション自体へのタグ付け
そのリレーション自体へのタグづけが行われています。
リレーションへのタグづけでは type というタグが必ず使用されており、その内容で、そのリレーションがどのような役割を持つかが判別されます。代表的な typeタグには、以下があります。
Type名称 | 概要 |
---|---|
multipolygon | エリア内に空洞部分を作成 |
route | 国道や県道などの道路、バスなどのをまとめる |
site | 1つの施設内に存在する複数の地物をまとめる |
public_transport | 公共交通機関の経路をまとめる(routeの拡張版) |
boundary | 市町村や都道府県などの行政境界、飛び地を表現 |
リレーションメンバーの構成やロールなど、他情報のタグづけ方法が異なります。
詳しくはそれぞれのWikiページを参照してください。
2. リレーションメンバー
リレーションを構築する際は、既存のNodeやWayを **メンバー(member)**として登録させます。
3. リレーションメンバーに割り振られるロール
リレーションに参加しているメンバーには、それぞれ固有のロール(Role, 役割)が割り当てられます。
このロールはリレーションのtype毎に異なり、固有のWikiページで解説が行われています。
例えば、マルチポリゴン・リレーションを使用する際には、メンバーに対して以下のロールを使用するよう、定義されています。
ロール名称 | 概要 |
---|---|
outer | このロールが割り当てられたウェイが、マルチポリゴン外側の円周であることを意味する |
inner | このロールが割り当てられたウェイが、マルチポリゴン内側の円周であることを意味する |
4. リレーションメンバー同士の接続状態
登録されたリレーションメンバーはリスト状に表示され、そのリストでの並び順にも意味が付与されています。
また、特に道路などのWayを登録する際には、地図上で隣接しているWayが、リレーションメンバーのリスト上でも連続した順番で登録されていることが重要となります。