How it works — City in words

写真の言葉を、
3D都市モデルの
建物と道に。

みちよみが街路写真から読んだ言葉を、国土交通省の3D都市モデル PLATEAU の建物・道路のIDに結びました。形は PLATEAU、中身は写真の言葉です。東京都の62区市町村で、72.7万の地物に1,862万の記述が付いています。結び方と使い方、そして言葉で街を描く方法を、順に説明します。

PLATEAU Hack Challenge 2026 in TOKYO で発表した作品「言葉がつくる街」(みちよみ × LOOVIC)のしくみを、東京都全域に広げたものです。数字は公開データ v0.2(2026-10-04)から取っています。

726,792結んだ地物(建物・道路・都市設備・植生)
18,626,744記述と地物の紐づけ
1,506,732地物と結びついた写真
62区市町村(小笠原村まで)
00Overview

写真 → 言葉 → 地物ID。

使っているのは、すでにある2つのデータです。みちよみ(街路写真を AI が読んだ言葉)と、PLATEAU(地物ごとにIDを持つ国の3D都市モデル)。この2つを、PLATEAU の地物IDという共通の住所で結びます。

  1. INPUT街路写真

    市民や事業者が Mapillary に公開した写真(CC BY-SA 4.0)。

  2. 01 READ読む

    写真1枚ごとに、AI が看板・建物・歩道・危険の手がかりを文と値で書く。

  3. 02 SPLIT分ける

    1件の記録を「どの地物の話か」の単位(記述)に分ける。文は書き換えない。

  4. 03 LINK結ぶ

    写真に PLATEAU を重ね、AI は「どの地物の話か」を記号で選ぶだけ。

  5. 04 GATHER束ねる

    地物IDごとに記述と値をまとめ、CityGML の属性にできる形にする。

文は書き換えない

元の記述の文と値をそのまま使います。地物の上では意味のない「(右・約15m)」のような写真の中の位置の注記は、使う場面に合わせて外します。

AI は選ぶだけ

紐づけでは、AI に文を書かせません。写真に重ねた記号から「どの地物の話か」を選ばせ、その確率を残します。

無いものは描かない

言葉で描く街は「言葉から描いた想像図」です。言葉の無い壁に窓や店を描かず、素材の語が書かれた壁だけをその素材にします。

01Read

写真1枚を、
AI が言葉と値で読む。

みちよみは、街路写真1枚ごとに AI が書いた構造化された記録です(約191万枚)。看板の文字、建物の種類と見た目の階数、歩道の幅、舗装、危険の手がかりまで、文と数値で持ちます。分からないことは「不明」と書きます。

新橋のコンビニの前の歩道を写した街路写真(2022年撮影)
例: 港区新橋のファミリーマート前(2022年9月、徒歩で撮影)。写真 © Mapillary contributors(画像ページ)、CC BY-SA 4.0、縮小。
  • 看板/townscape/poi_signs/0
    ファミリーマートの店舗看板(右・手前)店の名前と、写真の中の位置を読んでいる。
  • 建物/townscape/buildings/0
    商業施設、2〜3階、築2000年代以降(確度: 高)見た目の階数は、写真の画角に写った範囲からの見立て。PLATEAU ではこの店の入る建物は11階。
  • 歩道の幅/geometry/sidewalk/right
    右側に分離歩道、幅 約4.5m(確度: 中)文ではなく値で持つので、あとで数値の属性にできる。
  • 歩ける幅/accessibility/clear_walkable_width_m
    基準 約4.0m、駐輪などで一時的に 約3.0m(確度: 中)
  • 点字ブロック/accessibility/tactile_paving
    不明この写真からは判定できず「不明」と書き、近くで確かめる項目に残している。

値は公開データ(release 2026-09-13-r1、場面 1575040799633836)のまま。読み方の詳しい説明は しくみ と データの読み方 へ。

02Split

記録を「どの地物の話か」
で分ける。

1件の記録を、PLATEAU の地物に振り分けられる単位の「記述」に分けます。文面は元の値をつないだだけです。記述ごとに、振り分け先の種類・左右・距離と、元の記録のどこから来たか(JSON Pointer)を持ちます。

記述の言葉(上から最初に当たったもの)振り分け先
看板・店名、建物の種類・階数・外装建物
信号・街灯・標識・電柱・柵・消火栓・マンホール・横断歩道都市設備
街路樹・高木・ケヤキ・イチョウ…街路樹
植栽帯・植え込み・分離帯・交通島植樹帯・島
歩道の幅・段差・縁石・点字ブロック・車いす歩道部(左右)
車線・標示・舗装・ひび・駐車・見通し車道部

危険・不具合の手がかりも、同じ規則でその原因の地物へ振り分けます(「根上がり」→ 街路樹、「駐輪で歩道が狭い」→ 歩道部)。写真の中の位置の言葉(右・左・正面)と距離(約15m)は、次の紐づけの手がかりになります。

04Gather

地物IDごとに束ね、
CityGML の属性にする。

結んだ記述を地物IDごとに集めます。同じ店の看板を別の撮影で読んでいれば多数決でそろえ、歩道の幅のような値は中央値・最小・最大・観測数にまとめます。こうして PLATEAU の形に、「その場所がどう見えるか」という言葉の層が付きます。

言語LOD記述の細かさを、形の LOD と同じはしごで

地物123
建物全体(種類・階数・築年代・外装)—看板・店名
都市設備・街路樹存在と種類状態・属性不具合・危険の手がかり
歩道・車道存在・通りの文脈幅・舗装・標示・段差不具合・危険の手がかり

CityGML に書き込んだ建物記号 G のビル(書き込みツールの出力から抜粋)

<bldg:Building gml:id="bldg_0ec48603-…">
  <gen:genericAttributeSet name="みちよみ">
    <gen:intAttribute name="言語LOD">3</…>
    <gen:intAttribute name="観測場面数">16</…>
    <gen:stringAttribute name="観測期間">2016-2022</…>
    <gen:stringAttribute name="看板">ファミリーマート / サンチェア 新館 / …</…>
    <gen:stringAttribute name="建物の種類">オフィスビル</…>
    <gen:doubleAttribute name="見た目の階数_階">9.5</…>
    <gen:intAttribute name="見た目の階数_観測数">14</…>
    <gen:stringAttribute name="築年代の見立て">00s以降</…>
    <gen:stringAttribute name="記述">ファミリーマートの看板(右・手前)(2022) / …</…>
    <gen:stringAttribute name="出典">みちよみ(michiyomi.dev、Mapillary の街路写真より)、CC BY 4.0 / scene: …</…>
    <gen:stringAttribute name="注意">撮影年時点の写真1枚からの AI の推定。実測・点検の結果ではない</…>
  </gen:genericAttributeSet>
  <bldg:usage …>401</bldg:usage>  <!-- 業務施設 -->
  <bldg:storeysAboveGround>11</bldg:storeysAboveGround>
  …(PLATEAU の元の形)
</bldg:Building>

値は数値の属性(gen:doubleAttribute など)になるので、GIS で条件にかけられます。「見た目の階数」(9.5)と PLATEAU の階数(11)がずれるのは、写真に写った範囲から見立てているためです。

05All of Tokyo

新橋の作品から、
東京都全域へ。

ハッカソンでは新橋の一角で動かしました。そのあと、同じ規則・同じ AI・同じプロンプトのまま、約1km四方のメッシュごとに東京都全域へ広げました。地物は隣の8メッシュまで読み、境目の建物も両側の写真から結びます。

写真から紐づけまで公開データ v0.2

みちよみの写真(場面)1,914,490
うち、カメラの位置と向きが分かる普通の写真(全周写真を除く)1,645,775
紐づけにかけた写真1,645,212
地物と結びついた写真1,506,732

写真に PLATEAU を重ねて判定するので、全周写真や、位置と向きの分からない写真は使えません。

結果62区市町村・1,693メッシュ

建物402,339
交通(道路・歩道部・車道部など)317,923
都市設備6,195
植生335
紐づけ(うち AI が記号で選んだもの 1,987,029、位置で結んだもの 16,639,715)18,626,744

手元の GPU 2台で、約2日

記号を選ぶ AI(Qwen 系の27Bモデル)を手元の GPU 2台(RTX PRO 6000 と RTX 5090)で動かし、2026年9月27日夜から29日夕方までで全メッシュを回しました。紐づけの処理では、写真を外部のサービスに送っていません。

島しょの道路まで

最初は PLATEAU に建物があるメッシュ(1,644)だけを回しました。10月4日に、建物は無いが道路がある49メッシュ(小笠原村や、ほかの島しょ・山地)を足し、62区市町村になりました。建物が無い所では撮影位置の補正ができないので、Mapillary の位置と向きをそのまま使います。

同じ選択になるのは約9割

同じ条件で選ばせ直すと、記述の約9割(89.7%)で同じ記号を選びます。残りは確率が拮抗している記述です。一致する割合は、正しさの割合ではありません。

表札の氏名と車のナンバーは、本体のデータ(v0.3.1)と同じ位置で伏せています。

06Use

地物IDの表として配り、
CityGML に書き込める。

PLATEAU の形は配らず、地物IDと代表点、記述と値の表にしました。使う人は、自分で入手した PLATEAU と gml_id で結合するか、同梱のツールで CityGML に書き込みます。

公開データHugging Face finalvent/michiyomi-tokyo-plateau

features地物ごとに1行(区市町村ごとの GeoParquet、点は代表点)。地物ID、元ファイル、言語LOD、観測場面数、観測期間、看板、値(歩道の幅・建物の種類など)
links記述ごとに1行。scene_id、記述の位置(JSON Pointer)、analysis_sha256、役割、確率、結び方。元の写真の記録までたどれる
sources使った PLATEAU のデータセット(区市町村ごと、2024・2025年度)
条件記述と紐づけは CC BY 4.0(AI の回答やアプリに出典は不要)。地物ID・代表点などの PLATEAU 由来の部分は PLATEAU サイトポリシー(出典・ライセンス)

手元の CityGML に書き込むtools/write_citygml.py

uv run --with pyarrow --with huggingface_hub python write_citygml.py \ 13103_minato-ku_pref_2025_citygml_1_op/udx/bldg \ 13103_minato-ku_pref_2025_citygml_1_op/udx/tran \ --out minato_michiyomi

必要な分だけを Hugging Face から取り、地物ごとに gen:genericAttributeSet name="みちよみ" を1つ差し込みます。元のファイルは書き換えません。東京都全域の PLATEAU(4,339ファイル)で試し、公開データ(v0.1)の地物すべてが gml_id で一致しました。

07Draw

言葉が、プリセットの
素材と部品を選ぶ。

地物に付いた言葉だけで、街の見た目を組み立てられます。画像は生成しません。あらかじめ用意した素材(CC0)と部品(自作の3Dモデル)のどれを使うかを、文に書かれた語が決めます。素材は東京都全域の 3Dの街の「素材の街」で、部品は作品「言葉がつくる街」(新橋)で動いています。

1. 意味で6つに分ける

地物の言葉を、記述の役割で6つの意味に分けます。注意(危険・不具合)を最優先にし、どれでもないものは「街の物」にします。

建物看板舗装植生注意街の物

2. 素材と色の語で、素材を選ぶ

「左側の茶色系タイル張りの高層ビル」なら、素材「タイル」と色「茶」から、ambientCG の CC0 素材を選び、言葉の色に合わせます。素材の語が無い壁は無地のまま。建物の種類から素材を推測しません。

3. 建物の種類と1階の業態の語で、部品を選ぶ

建物の種類(マンション・オフィス・住宅・ホテル・工事中)と、1階の看板の語(コンビニ・飲食・居酒屋・医院・美容…)で部品を選びます。部品は自作の3Dモデルで、多くは GPT-6 Pro が Blender MCP で Blender を操作して作りました。外部の3D素材は使っていません。

形だけ・写真の質感・言葉から描いた街

PLATEAU の形だけの新橋の街並み
形だけ(PLATEAU)
PLATEAU の写真テクスチャを貼った新橋の街並み
PLATEAU の写真テクスチャ
言葉で選んだ素材と部品で描いた新橋の街並み
言葉から描いた想像図(素材と部品を言葉で選ぶ)

素材と部品は差し替えられる

語と素材・部品の対応は表になっているので、別の素材集や部品に置き換えても、同じ言葉から同じ規則で街を組み立てられます。手がかりは公開データにある値(建物の種類・素材の語・看板)なので、ほかの地域にも当てはめられます。

字が、その地物の面へ飛ぶ

作品の導入では、約14万字の一字一字が、自分の文が結ばれた地物の面を知っていて、そこへ飛んで PLATEAU の形を下から書いていきます。素材の語が光ってから、壁がその素材で現れます。新橋の演出を見る

素材: ambientCG(CC0)。部品: 自作の3Dモデル(多くは GPT-6 Pro が Blender MCP で作成)。上の比較画像は作品(新橋)のもの。素材と部品の見た目は公開データには含まれません。

08Limits

正直に
書いておくこと。

紐づけは1枚の写真の解釈で、撮影の位置と向きの誤差で決まります。使うときは、次のことを前提にしてください。

  • 隣の建物に結ばれることがある

    車から撮った密集した街区では、記号の輪郭が実物と5〜8°ずれて隣の建物を選ぶことがあります。だから車・自転車の写真は確率0.9以上だけを採っています。

  • 写真の年と、形の年がずれる

    言葉は主に2014〜2026年に撮られた写真、形は2024・2025年度の PLATEAU です。建て替わった建物には、前の建物の言葉が載ることがあります。capture_year と合わせて読んでください。

  • 位置で結んだ歩道・車道は目安

    左右と撮影位置だけで決めたものです。確からしさは上限0.7の目安として扱ってください。

  • 値は写真からの推定

    幅・階数などは単眼の写真からの推定で、実測ではありません。建物の状態の記述(外壁の風化・ひび・空き家の可能性など)も、写真1枚からの推定で、点検の結果ではありません。

  • 建物の無いメッシュは補正なし

    小笠原村などの建物の無いメッシュでは、建物の輪郭による撮影位置の補正ができず、Mapillary の位置と向きをそのまま使っています。

  • 描いた街は想像図

    言葉で描いた壁の素材・部品は、言葉から選んだもので、写真を貼ったものではありません。言葉の無い所は描きません。

誤りに気づいたら contact@michiyomi.dev へ。

Origin

作品「言葉がつくる街」
から。

このしくみは、PLATEAU Hack Challenge 2026 in TOKYO(主催: 国土交通省、2026年9月26〜27日)で、みちよみと LOOVIC の共同チームが発表し、グランプリとオーディエンス賞をいただいた作品「言葉がつくる街」から生まれました。作品では、新橋で歩いた人の声(LOOVIC の現地記録)も同じ地物に重ねています。

出典: 3D都市モデル(Project PLATEAU)東京都内各区市町村データ(2024・2025年度、G空間情報センター)を加工して作成 / 言葉: みちよみ(街路写真 © Mapillary contributors、CC BY-SA 4.0 を AI が言語化。言葉は CC BY 4.0)/ 素材: ambientCG(CC0)/ 部品: 自作モデル。