LoginSignup
14
16

More than 5 years have passed since last update.

OSM 3Dタグの基礎

Last updated at Posted at 2014-04-20

OpenStreetMapで、建物の高さを入力する方法を解説します。

基本資料

OSM Wikiに詳細な解説があります。

Simple_3D_Buildingsのページを参照してください。
日本語ページもあります

3Dレンダラ

入力した結果は、以下のページで表示を確認することができます。

  • OSM Buildings: 建物の高さ、建物の各部分の色がレンダリングされます。データ更新が早いので、確認用として最適です
  • F4 Maps: 多くの3Dタグを網羅しており、非常に綺麗にレンダリングされます。いったん画像が出来上がった後の更新がやや遅いようなので、気長に待ちましょう。(感覚ですが、1日くらいかかる感じです)

基本となるタグ

建物の各部分を、タグを使って表現します。

主に入力する項目は以下のとおりです。この6つのタグを、building=yesのエリアオブジェクトに対して適用します。

内容 タグ 備考
建物の高さ height 数字(メートル) 建物オブジェクト高さ。入れなくてもよい
建物の階数 building:levels 数字(階数) 階数。heightタグの代わりにこちらが入っていればとりあえずOK。
建物の外壁の色 building:color カラーコード
屋根の高さ roof:height 数字(メートル)
屋根の色 roof:color カラーコード
屋根の形 roof:shape 定義から選択

実例

実際に値が入力されている場所を見てみましょう。

ここでは、以下のタグが使用されています。
とりあえず、このくらいが最低限入っていれば大丈夫です

heightは計測が大変なので、とりあえず building:levels があると、それなりに見栄えがします。

Key Value 意味
building yes これは建物です
building:color #878F94 外壁の色は#878F94
building:levels 2 2階建て
roof:color #6B6361 屋根の色は#6B6361
roof:shape hipped 屋根の形は hipped

JOSMでの入力と確認

まずは、表示確認用にKendzi3dプラグインをインストールしましょう。
インストール方法は、通常のプラグインと同様です。

起動すると、3D表示が確認できる小窓が表示されます。

スクリーンショット 2014-04-20 21.38.56.png

こんなかんじです。なんのことやらわかりませんね。
スクリーンショット_2014-04-20_21_39_22_1.png

それでは、小窓を選択した状態で、キーボードの矢印キーとマウスを使って表示を移動させましょう。

マウスをクリックしながら、まずは地面の方を向き、その後でキーボードの下キーを押し続けると、視点が空中に移動します。
詳しい操作については、kendzi3dのwikiページを参照してください。

スクリーンショット 2014-04-20 21.51.55.png

kendzi3dはあくまで結果確認用のビューアなので、とりあえず表示ができていればよいです。

この状態で、適当な建物に、heightタグを入れてみましょう。
アップロードしないことを考えたら、height=200とか、わかりやすい数字でも大丈夫です。

その建物の高さが伸びることがわかります。

スクリーンショット 2014-04-20 21.56.02.png

あとは、通常のJOSMでの編集と同じく、先ほどのタグを1つ1つ追加してゆきます。
ひたすら地味で、大変な作業です (^^;

建物の色の確認方法

building:colorの調査は、その建物の写真があれば簡単です。

Macであれば、アプリケーション -> ユーティリティ -> DigitalColor Meterというアプリが標準で装備されていて、写真のカラーコードを抽出してくれます。
この色を使います。なるべく明るく写っている写真がよいでしょう。

スクリーンショット_2014-04-20_22_03_43.png

roof:colorも、同様にして空中写真から色を抽出します。

建物の一部分だけ、階数が異なる場合

多くの方が悩む部分だと思います。

これは、 building:part = yes というタグを使います。

  1. まずは、建物の外郭部分を、通常と同じように描きます。
    スクリーンショット 2014-04-20 22.13.13.png

  2. その建物外郭オブジェクトとは別に、建物の中身を埋めるようにしてbuilding:partオブジェクトを作成し、そこに building:levelsなどのタグを付与します。

スクリーンショット_2014-04-20_22_14_06.png

  1. また、building:partタグとbuilding:min_levelsというタグを組み合わせることで、渡り廊下状の形を作成することもできます。 この建物は、3つの building:partから形成されています。

building

こういう形状のマンションも、これで簡単に作成できますね。
2014-04-11_10_32_15.jpg

より詳しい描き方

リレーションとして表す方法もあります
この方法を使うと、建物の外壁の色を、面ごとに変える(この部分はガラス張りだけど、この部分はコンクリート、など)ことができます。

また、屋根の傾き具合の調整や、"建物の3階と5階にだけ窓がある"などの記述も可能ですが、そこまでやるならテクスチャ貼ったほうがいいのじゃないかなぁ、と思うことはあります。

店舗が建物の中にある場合

建物の中に店舗が存在する場合、建物のエリアオブジェクトとは別に、ノードオブジェクトとして店舗のノードを置くことをお勧めします。

これはなぜかといえば、建物自体の name (たとえば"小池ビル"など)と、そのPOIの name がバッティングすることが多いためです。

また、そのPOIには levelタグを付与しておくことをお勧めします。これによって、"3階建ての小池ビルの2階に、村田歯科医 (amenity=dentist)が入っている" ということがすっきりと表現できます。

POIに付与するための level タグは、1階に入居している場合の値が0(地階)、2階ならば1、という風に、日本での数え方と異なっているため、注意してください。

14
16
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
14
16