JA:要素
要素は、 OpenStreetMap における物理世界の概念データモデルの基礎的な部品です。次のものから成っています。
上記のどれも1件以上の関連するタグ(tag、特定の要素の意味を記述するもの)を持つことができます。
ノード
- 主な記事:ノード
ノードは緯度と経度を定義することで、地上にある特定の地点を表します。各ノードは少なくとも1つの ID 番号と座標から成ります。
ノードは独立した点状の地物を定義するのに使用することができます。例えば、ノードは公園のベンチや井戸などを表すことができます。
ノードはウェイの形を定義するためにも使用されます。ウェイの点として使用される場合、ノードはふつうタグを持ちませんが、持つ場合もあります。例えば、 highway=traffic_signals は道路上の信号を表し、 power=tower は電力線の鉄塔を表します。
ノードはリレーションのメンバーになることができます。リレーションはメンバーのロール、つまり、関連する一連のデータ要素の中における、ノードの特定の機能を指定することができます。
ウェイ
- 主な記事:ウェイ
ウェイは2~2000個のノードの順序のある集合で、連続した線分を定義します。ウェイは川や道路のような線形の地物を表すために使用します。
ウェイは建物や森林のような、エリア(単体の多角形)の境界を表すこともあります。この場合、そのウェイの先頭と末尾のノードは同じになります。これを「閉じたウェイ」と呼びます。
なお、閉じたウェイは単体のエリアではなく、環状のもの、例えば道路上のラウンドアバウトなどを表すこともあります。ウェイのタグでそれが分かるようにしておく必要があります。
穴のあるエリアや、2000個を超えるノードを持つ境界線は、単一のウェイで表すことができません。代わりに、より複雑なマルチポリゴンリレーションのデータ構造を使用する必要があります。
リレーション
- 主な記事:リレーション
リレーションは、2つ以上のデータ要素(ノードやウェイや他のリレーション)の関係を記述する、多目的のデータ構造です。例えば、以下のようなものが含まれます。
- JA:Routeリレーション - 有名な(番号付きの)道路、自転車ルート、バスルートなどを表す一連のウェイ
- JA:Turn restriction - ある道路からほかの道路に進入することができないことを示す場合
- JA:Multipolygon - エリア(境界は「outer ウェイ」)に穴(「inner ウェイ」)があるものを記述する場合
このように、リレーションはさまざまな意味を持ちます。リレーションの意味は、タグで定義します。つまり、リレーションは「type」タグを持ちます。リレーションの他のタグは、 type タグを考慮して解釈する必要があります。
リレーションは本質的にノード、ウェイ、他リレーションの順序のある集合です。これらのオブジェクトはリレーションのメンバーと呼ばれます。
それぞれの要素はリレーション内でロールを持つことがあります。例えば、進行方向制限では「from」および「to」ロールのメンバーを持ち、特定の禁止されている進行方向を記述します。
特定のウェイのような一つの要素が、一つのリレーションに複数回現れることもあります。
タグ
- 主な記事:タグ
すべての種類のデータ要素(ノード、ウェイ、リレーション)と変更セットがタグを持つことがあります。タグは要素の割り当てられた特定の意味を記述します。
1つのタグは「キー」と「値」という2つの自由な形式の文字列から成ります。それぞれ Unicode 文字列で255文字までです。例えば、 highway=residential はウェイが主に住宅に行くための道路であることを定義します。要素は同じ「キー」を持つ2つのタグを持つことはできません。「キー」は一意でなければなりません。 たとえば、 ある要素に amenity=restaurant と amenity=bar の両方のタグを付けることはできません。
タグの固定された辞書はありませんが、このウィキ(JA:Map Features から始まる記事)にさまざまな解釈が書かれています。タグの利用状況は Taginfo アプリケーションで計測することができます。ある地物をタグ付けする方法が複数ある場合は、最もよく使われている方法が最善の方法でしょう。
すべての要素にタグがあるわけではありません。それらがウェイの一部であるならば、ノードはしばしばタグなしです。それらがリレーションのメンバーである場合、ウェイとノードの両方がタグなしになることがあります。
共通の属性
OSM のデータベース内では、ノードやウェイやリレーションに次の属性を格納しています。アプリケーションはこれらのすべてを使用する義務はなく、 OSM データから作成された第三者のデータもすべてを含める必要はありません。
名称 | 値 | 説明 |
---|---|---|
id | 整数 (64-bit) | 要素を識別するために使用します。要素の種類によってIDの値は独立しているので、 id=100 のノードと id=100 のウェイは同時に存在することができ、それは互いに関連していたり地理的に近かったりすることを示すわけではありません。 正の値(>0)は既存のすべての要素に使用されます(変更または削除時にも割り当てられたままになります)。負の値(<0)は予約済み(そのスコープは現在のチェンジセットに限定され、データベースには保存されません)、OSMデータベースにデータを送信して新しいオブジェクトを識別し、作成または変更された他のオブジェクトで参照します。(サーバは、作成された各オブジェクトに実際の正の識別子を割り当てることによって、編集アプリケーションによって送信されたこれらの一時識別子を置き換え、使用された負の識別子から割り当てられた正の識別子へのマッピングを返します)。 |
user | 文字列 | オブジェクトを最後に変更したユーザーの表示名です(参考情報のみ、空の場合もあります)。ユーザーはいつでも表示名を変更することができます(既存の要素はバージョンの変更を必要とせずに新しいユーザー名を反映します)。 |
uid | 整数 | オブジェクトを最後に変更したユーザーの識別子です。ユーザーIDは変更されません。 |
timestamp | W3C 標準日時フォーマット | 最後に変更された時刻です。(例: "2016-12-31T23:59:59.999Z") |
visible | "true" or "false" | オブジェクトがデータベース内で削除されているか否かです。 visible="false" の場合は、オブジェクトは履歴を見なければ現れません。 |
version | 整数 | オブジェクトの編集バージョンです。新しく作成されたオブジェクトはバージョン1から始まり、クライアントが新しいバージョンのオブジェクトをアップロードすると、サーバーで値を増加させます。クライアントがデータベース内のオブジェクトとは異なるバージョンのオブジェクトを送信すると、サーバーは新しいバージョンのオブジェクトを拒否します。 |
changeset | 整数 | オブジェクトが作成されたり更新されたりした変更セットの番号です(OSMデータベースの長期的な進化との互換性のためにアプリケーションでは64-bitをサポートすることが推奨されていますがが、それらを更新せずにデータだけを照会するアプリケーションがこの有益な属性を無視する可能性があります)。 |
もちろん、格納したタグに加えて、すべての要素の編集履歴全体も保持しています。
関連項目
|