おはようございます。
  Show-ichiさん、わかりやすい回答ありがとうございます。
Relation/Routeについて暗中模索の感じでしたが解説を
読んで全体像が見えてきました。
   
  >route 用だけでなく、multipolygon 用など一緒くたで、
>現状ではソート手段はありませんので、数が多くなると
>探すのが大変です。また選択の手がかりはname と 
>ref の値しかありませんので、作成時に適当な名前を
>付けてしまうと、この時点で後悔することになります。
上記の点や「5 編集上の問題点」は参考になりました。
   
  ikiya

[メールアドレス保護] 
wrote:
  Show-ichi です。

遅くなりましたが、半月ほど前に ikiya さんからリクエストのあった Relation/Route 
について、私が現時点で理解しているところをまとめてみました。

1. Relations とは

Relations は昨年の10月に導入された比較的新しい機能で、node, way, area といった 
OSM のオブジェクトをひとまとめにグループ化することができます。英単語 "relation"
とは「関係」という意味で、つまり複数のオブジェクトの間に何らかの関係が存在してい
ることを示すためにある機能です(この機能が導入する以前は、name や refを同一のも
のにそろえるなど間接的な手段が用いられてきたようです)。

Relations が示す「関係」の一次的な意味は type タグの値で規定し、導入以来さまざま
な提案がされてきていますが、現時点では multipolygon, restriction, route の3つが
確立されています。

・multipolygon:これは area を対象とする relation で、特定の area に穴を開けるた
めに用いられます。
・restriction:これは Restrictions タブの拡張で、交差点における「右折禁止」や
「直進のみ」など、ひとつの node やway だけでは記述できない交通制限を表し
ます。
・route: これは way を対象とし、基本的にある地点(起点)から別の地点(終点)まで
続く、一聯の経路を表します。

また、特定の relation に含められたオブジェクトには、専用の値(role) を与えること
ができます。multipolygon では 本体の area に "outer"、穴となる area に "inner" 
という値を与えることで、それぞれがもつ役割を明らかにしています。
一つのオブジェクトには複数の Relations を指定可能で、role も個別の値を指定するこ
とができます(multipolygon であれば、複数の穴を開けたり、入れ子状に「穴の中に
area があり、さらにその中に穴がある」という状態も表現可能)。
個々の relation は固有のID番号で管理されており、Potlatch や JOSM から確認可能です。

2. Relations/route とは

上記の通り、Relations/Route とは、複数の way から構成される特定の経路を表すため
に用いられます。たとえば、国道や県道、自転車道、自然歩道、バス路線、鉄道路線、営
業路線、巡礼路、マラソンコース、市街地サーキット、ラリーやロードレースのステージ
ルートなど、way の集合で表されるものなら、何でも表現することが可能です。最近 
base layer として導入された Cycle Map はこの Relations/Route を大々的に使用した
アプリケーションです。
個々の way には複数のRelation が指定可能ですから、重複国道や国道を走るバス路線な
ど、他のルートの存在を気にする必要はありません。

3. Relations/Route のタグ

Relations/route で使用するタグには以下のものがあります。 

Key Value 意味
type route relation の一次タグ。route を指定。
route route としての一次タグ。これでルートとしての意味を規定します。
road 国道、高速道路などの道路路線
bicycle 自転車道
foot 歩道
bus バス路線
pilgrimage 巡礼路
detour 迂回路
name 名前
ref 参照名
network 複数の route が構成するネットワークの名前。
operator route の管理者。
state route の状態
proposed 設置が予定されている経路
alternate 代替経路
temporary 正規の経路が使用できない場合などで一時的に設定された経路
connection 複数の route を連結する route (moterway_link などと同様
の意味合い)。
symbol 特定のルートを指し示すシンボルマーク(具体的な使用法は良
くわかりません)
description route 固有の特徴の解説

3-1 規定済みの role

規定済みの role は主にバス路線用です。

Role 意味
forward/backward route 用の oneway です。往復で異なるroute を使用
する区間を示します。
stop_ バス停 node に指定します。は停車する順番
です。
forward/backward_stop_ 往復で異なるルートを通る、もしくは停車するバス停 
が異なる場合に使用します。

表の Recurrence? が何を意味するのかはよくわかりません。

4. Route の編集

4-1. Potlatch

・作成:新しい route に含まれる way を選択し、画面の右下に3つ縦に並んだ円形のア
イコンのうち真ん中のもの(図柄は鎖)をクリックします。"Add way to a 
relation" と先頭に表示されたダイアログが現れますので、中央のリストボック
スに "Create a new relation" と表示されているのを確認して、右下の "Add"
と書かれたボタンをクリックします。
すると、先頭に Relation と書かれた新しいダイアログが開きます。また、左下
にある way のタグには白抜きの "relation" と書かれたタグが加わります。右
側の白抜きの四角い部分は role 値を入力するところです。
ダイアログの "Relation" の後ろの数字はサーバ登録前の仮番号です。ダイアロ
グの中央には node や way と同じデザインのタグ一覧があり、初期状態では 
type タグだけが入力待ち状態で表示されていますので、値として "route" を入
力します。
次に右上の丸十字状のアイコンをクリックすることで、タグの追加が可能です。
これによりroute, name, ref など必要なタグを加えていきます。特に name の
指定は重要で、他の route と明確に区別された判りやすい名称を記述してくだ
さい。ref も区別しやすいものがベターです。
入力が全て終われば、右下の OK ボタンをクリックしてください。作成に成功す
れば、選択した図上の way に薄紫色の縁取りが加わります。
・追加:既存の route に way を追加するには、追加したい way を選択し、relation ア
イコン(左下の真ん中)をクリックします。表示されたダイアログの真ん中にあ
るリストボックスの右端をクリックすると、その時点でダウンロードされている
(オブジェクトに関連付けられた)relation の一覧が表示されます。当然です
が、route 用だけでなく、multipolygon 用など一緒くたで、現状ではソート手
段はありませんので、数が多くなると探すのが大変です。また選択の手がかりは
name と ref の値しかありませんので、作成時に適当な名前を付けてしまうと、
この時点で後悔することになります。
選び出したら、左下の "Add" ボタンをクリックします。地図上の way に薄紫色
の縁取りが加わり(すでに他の route が指定してあれば色が濃くなります)、
左下に relation タグ(表示は 「route タグの値+ref値」)が追加され、必要
に応じて role 値を指定します。
・削除:取り除きたい way を選択し relation タグの右端の×アイコンをクリックしま
す。relation から全てのオブジェクトを削除しても、Potlatch が起動中は残存
していますが、一旦終了してしまうと、二度と指定することはできないようです
(固有ID番号を用いて指定する方法はないようです。何か情報をお持ちの方は教
授願います)。
・編集:編集したい route に登録されている way を選択し、relation タグをダブルク
リックすると、ダイアログが表示されます。

4-2. JOSM

・表示:JOSM で Relations を編集するには、まずリストを表示させる必要があります。
左側の一聯のアイコンのうち一番下の方の歯車が描かれたアイコンをクリックす
ると Relation と書かれたリストが表示されます。
・作成:リストの左下の "new" ボタンをクリックします。タイトルに "Create new relation" 
と書かれたダイアログが表示されますので、Tags 欄に type, route, name タグ
など、必要なものを記述します。JOSM でも relation の選択は name が基本で
すので、適切な名称付けが必要です。
タグ入力の終了後、関連付けする way を選択し(複数選択可)、左下の "Add 
Sele..." ボタンをクリックすると、Members 欄に選択した way が表示されます。
必要に応じて role 値を入力してください。
また、選択した way の Properties/Memberships リストには Member Of 欄に作
成した route が表示されます。
・追加:リストの中からroute を選択し、右下の Edit ボタンをクリックもしくはリスト
上でダブルクリックしてダイアログを表示させます。あとは同上。
・削除:一般に relation から way を削除するのは面倒です。直感に反して Properties/
Memberships リストから削除することはできません(該当する route の role
欄をクリックし、role 欄が選択された状態でキーボードの「d」を押すと、
「Selection "(wayの情報)" is used by relation "(relationの情報)". 
Delete from relation?」と書かれたメッセージボックスが表示されますが、
「はい」ボタンを押すと way 自体が削除されるようです)。
Member Of 欄の route 名をダブルクリックすると、該当する relation ダイア
ログが表示されます。そのダイアログの Members 欄から該当する way を探し出
します。Occupied By 欄の情報のみが頼りですので、way に固有の name や 
ref が指定されていなければ、適当に way の name タグへ一時的に目立つ名前
を追加すると良いでしょう。探し出したら Delete ボタンを押してください。
Delete と Delete Sel... の違いは、複数選択した全て削除するか、カレントひ
とつを削除するかの違いしかないようです(詳細求む)。
・編集:リストから選択するか、way の Member Of 欄をダブルクリックします。

5 編集上の問題点。

 おそらく、現状における最大の問題は、ダウンロードしたオブジェクトに関連付けられ
た relation しか選択できないことでしょう。これは、アジアハイウェイなどの長大ルー
トの端だけが作成されている状況の場合に顕著です。たとえば route を作成し起点側
(東京)の way を登録したあとで、終点側(イスタンブル)の way を登録するには、エ
ディタを終了することなく、そのwayを選択する必要があります。これはつまり、あまり
拡大率を上げることのできない Potlatch ではほぼ致命的です。固有IDを指定して 
relation をダウンロードできない(と思われる)のがこの問題における最大のネックと
なっています。
また、既存の route が作成されているかどうかは、ルート上の全ての way をダウンロー
ドしなければ確実に確かめることはできません。とはいえ、JOSM を利用すれば登録され
た way を全コピーするのはそう面倒ではありませんので、重複を恐れず作成してその事
実が判明した段階でどちらかに統一するやり方も可能でしょうが、本来は適切な Project 
で一元管理すべきでしょう。
way を切断しても、双方に relation は残存します。JOSM では切断した way のうち先
にあたる way から relation が削除されるという仕様(バグ)がありましたが、6月末
ごろの更新で、残存するように改修されました(relation が指定されたwayを編集する方
は必ずバージョンアップしてください)。ただし、way 上の複数の node を選択し
た状態で切断すると、中抜けするバグが残っているようです。

6 利用上の問題点

いうまでもなく、現状 mapnik や Osmarender は何もレンダリングしてくれませんので、
Cycle Map のように独自のレンダーを用意する必要があることです。

以上、間違い、誤解、新事実などがありましたら、どしどし指摘願います。

-- show-ichi 

_______________________________________________
Talk-ja mailing list
Talk-ja@openstreetmap.org
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-ja

 

 
---------------------------------
Stop! Global Warming ~ Yahoo! JAPAN Earth Project
_______________________________________________
Talk-ja mailing list
Talk-ja@openstreetmap.org
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-ja

メールによる返信