Skip to content

Transformation

haya4 edited this page Mar 18, 2022 · 1 revision

citygml-osm

Transformation / データフォーマット変換

CityGMLフォーマット

citygml

「3D都市モデル」から読み取る項目

項目 GMLタグ 説明
データ範囲 gml:boundedBy データ対象範囲
ソース名 gml:Envelope-srsName データソース名称
建築物 bldg:Building ビルディングPOIに相当
屋根外形 bldg:lod0RoofEdge 建築物の屋根形状
接地面 bldg:lod0FootPrint 建築物の床形状
建築物形状 bldg:lod1Solid 建築物の形状を示す立体
ID gml:id GMLでの管理ID
名称 gml:name 重要な建物にのみ設定されている
建物ID gen:stringAttribute-name="建物ID" 建築物に付与された識別ID
自治体コード gen:stringAttribute-name="13_*" "13_区市町村コード_大字・町コード_町・丁目コード"
分類 bldg:class 建築物の形態による区分 'Building_class.xml'
用途 bldg:usage 建築物の主な使いみち。代表的な用途 'Building_usage.xml'
建築年 bldg:yearOfConstruction 建築物が建築された年
計測高さ bldg:measuredHeight 地盤面からの建築物の高さ(m)
地上階数 bldg:storeysAboveGround 建物の地上部分の階数(日本的な数え方)正の整数値
地下階数 bldg:storeysBelowGround 建物の地下部分の階数 正の整数値
住所 xAL:LocalityName-Type="Town"

建築物
「建物POI」に相当する。

  • 屋根外形
    形状には外郭線(gml:exterior)と内線(gml:interior)があり、'[{緯度、経度、高度}]'で表される
    '高度'は屋根の標高を表す

  • 接地面
    形状には外郭線(gml:exterior)と内線(gml:interior)があり、'[{緯度、経度、高度}]'で表される
    '高度'は建物床の標高を表す

  • 建築物形状
    建築物の水平的な位置を示す面に、一律の高さを与えた立体。'[{緯度、経度、高度}]'で表される
    '高度'は立体面の標高を表す。この標高から建築物の「最低標高=ele」と「最高標高」を取得して「建物のheight=(最高標高)ー(最低標高)」を算出する。

  • 計測高さ
    計測により取得した建築物の地上の最低点から最高点までの高さ(m)。

  • 地上階数
    建築物の地上部分の階数(自然数)。階数の数え方は日本式。

  • 地下階数
    建築物の地上部分の階数(自然数)。階数の数え方は日本式。

  • 建築年
    建築物が建築された年(自然数)。

分類
bldg:class」 建築物の形態による区分 --> コードリスト: 'Building_class.xml'

id name description
id1 3001 普通建物
id2 3002 堅ろう建物
id3 3003 普通無壁舎
id4 3004 堅ろう無壁舎
id5 3000 分類しない建物
記述例: `<bldg:class codeSpace="../../codelists/Building_class.xml">3001</bldg:class>`

用途
bldg:usage 建築物の主な使い道 --> コードリスト: 'Building_usage.xml'

id name description OSM Tag
id1 401 業務施設 commercial
id2 402 商業施設 retail
id3 403 宿泊施設 hotel
id4 404 商業系複合施設 retail
id5 411 住宅 house
id6 412 共同住宅 apartments
id7 413 店舗等併用住宅 residential
id8 414 店舗等併用共同住宅 apartments
id9 415 作業所併用住宅 residential
id10 421 官公庁施設 government
id11 422 文教厚生施設 public
id12 431 運輸倉庫施設 warehouse
id13 441 工場 industrial
id14 451 農林漁業用施設 -
id15 452 供給処理施設 -
id16 453 防衛施設 military
id17 454 その他 -
id18 461 不明 -

注: 分類が定義されていない建築物は、building=yesとする

記述例: <bldg:usage codeSpace="../../codelists/Building_usage.xml">411</bldg:usage>

  • 'conversion.json'にOSMタグへの変換表を記述して、building=*の値に割り当てる。

  • 変換表に記載がないusageコードは、building=yesとする

{
	"usage" : [
		{"code":"401","name":"業務施設",	"building":"commercial"},
		{"code":"402","name":"商業施設",	"building":"retail"},
		{"code":"403","name":"宿泊施設",	"building":"hotel"},
		{"code":"404","name":"商業系複合施設",	"building":"retail"},
		{"code":"411","name":"住宅",		"building":"house"},
		{"code":"412","name":"共同住宅",	"building":"apartments"},
		{"code":"413","name":"店舗等併用住宅",	"building":"residential"},
		{"code":"414","name":"店舗等併用共同住宅",	"building":"apartments"},
		{"code":"415","name":"作業所併用住宅",	"building":"residential"},
		{"code":"421","name":"官公庁施設",	"building":"government"},
		{"code":"422","name":"文教厚生施設",	"building":"public"},
		{"code":"431","name":"運輸倉庫施設",	"building":"warehouse"},
		{"code":"441","name":"工場",		"building":"industrial"},
		{"code":"451","name":"農林漁施設", "building":"agricultural"},
		{"code":"453","name":"防衛施設",	"building":"military"}
	]
}

その他

仕様には記載されているがデータで確認が取れないもの

  • 「解体年 bldg:yearOfDemolition」 建築物が解体された年

  • 「屋根の種別 bldg:roofType」 建築物の屋根形状の種類 --> 'Building_roofType.xml'

  • gen::stringAttribute 建物用途コード番号」 --> コードリスト: 'Building_usageDetail.xml'

"building" OSMフォーマットへの変換

タグ付け

OSMファイルへの変換項目

項目 エレメント 説明
データ範囲 bounds maxlat,maxlon,minlat,minlon

閉じたWAYへのタグ付け項目

項目 OSMタグ 説明
建物ID k="ref:MLIT_PLATEAU" 建物ID
建物 k="building" リレーション:buildingのメンバーの場合は `k="building:part"。vの値は'bldg:usage 用途'から取得する
建物名称 k="name" リレーション:buildingのメンバーの場合は、k="name"
住所 k="addr:full" 住所
建物高さ k="height" 計測高さ(m)bldg:measuredHeight, bldg:measuredHeightがない場合は、lod1Solidlod0[RoofEdge,FoodPrintから算出する
(小数点以下2桁まで有効)
標高 k="ele" 建築物形状の高度(m) bldg:lod1Solidの最低高度
(小数点以下1桁まで有効)
地上階数 k="building:levels" 建物の地上部分の階数(日本的な数え方) 正の整数値
地下階数 k="building:levels:underground" 建物の地下部分の階数 正の整数値

建物種別 k="building"

  • GML::bldg:usageの値を'conversion.json'で変換して、building=*に割り当てる。
  • 変換表に記載がないusageコードは、building=yesとする
  • 複合ビルの場合は、最大面積のビルパーツの'usage'をリレーションの「building=*」とする。

建物名称 k="name"

  • 建物ポリゴン Relation::type="multipolygon" の場合は、k="name"とする
  • 建物リレーション Relation::type="building"の場合は、k="name"とする
  • 建物パーツ member::role="part"->building=yes の場合は、k="name"とする
  • 複合ビルの場合は、構成部位の名称のうちで、最も文字数が多いものを「合成名称」にする(Relation:k="name"v=合成名称 --> Issue #51

建物高さ ele

  • bldg:lod1Solidの'高度'値の最低値
  • 複合ビルの場合は、全ビルパーツの最低値

建物高さ height

  • building:heightとはしない
  • 単体ビルの場合は、bldg:measuredHeight
  • 単体ビルで、bldg:measuredHeightがない場合は、lod1Solidlod0[RoofEdge,FoodPrintから算出する
  • 複合ビルの場合は、複合ビルの'最低標高'を求め、全ビルパーツの'最低標高'からの'高さ'の最大値。'標高'が設定されていないビルパーツは全ビルパーツの'最低標高’からの高さが設定されているとみなす。

地上階 building:levels

  • 単体ビルの場合は、building:levels
  • 複合ビルの場合は、全ビルパーツの最大'地上階'をリレーションの「地上階'building:levels'」とする。

地下階 building:levels:underground

  • 単体ビルの場合は、building:levels:underground
  • 複合ビルの場合は、全ビルパーツの最大'地下階'をリレーションの「地下階'building:levels:underground'」とする。

建築年 start_date

  • GML::bldg:yearOfConstructionの値をstart_dateの値とする
  • ビルパーツの'建築年'を「建築年start_date」とする。
  • ビルリレーションには「建築年」を反映させない。Issue 39

POI構成