どこまでが写真の記録で、
どこからがAIの読みか。
このページを読むと、応答のどの値を、どこまで頼りにしてよいかが分かります。みちよみは、写真の記録・決まった計算・AIの読み取りを混ぜずに返し、分からなかったことは分からないまま返します。
1件は写真1枚(シーン)
データの1件(シーン)は、写真1枚です。20m 四方のマス目・撮った向き(45°ごと)・撮影年ごとに代表の1枚を選んでいます。同じ場所でも、年や向きが違えば別のシーンになります。これが経年変化を比べる材料になります。
idは Mapillary の写真のIDです。数字に見えても文字列のまま扱ってください(数値にすると桁が落ちることがあります)。- 座標は写真を撮った位置で、写っている物の位置や建物の入口ではありません。Mapillary が写真の並びから補正した位置を基本にし(公開中の 1,914,451 件のうち 1,899,940 件)、無いときだけ GPS の生の値を使います。どちらかは
position_sourceに書いてあります。 - 処理した 1,914,490 件のうち、撮影時刻が明らかにおかしい 39 件は、近くを探す結果や数の集計から外しています(IDを指定すれば読めます)。
3つの層: 記録・計算・AIの読み取り
1枚の写真について、性質の違う3つを分けたまま返します。GET /v1/scenes/{id}?include=metadata,machine,analysis で3つとも取れます(既定は analysis だけ)。
metadata ・ 撮影の記録- 撮影日時・撮影年
- 位置(補正後と生の両方)・カメラの向き
- 連続撮影の並び・画質
machine ・ 決まった計算- 進む向き(前後の写真の位置から)
- 写っている物の方角(北・南東…)
- 色・緑の割合、季節・時間帯の区分
analysis ・ AIの読み取り- 歩道・幅・舗装・標示のかすれ
- 看板の文字・建物・植え込み
- リスクの手がかり、見えなかったこと
層を混ぜないので、食い違いに気づけます。たとえば写真 964535250779795(2019年・中央区)は、撮影の記録では22時54分で、それをもとにした計算も「夜」ですが、AIは「日中」と読み、逆光で建物が白く飛んでいると書いています。撮影時刻は機器の時計しだいでずれるため、時間帯はAIの見立てを正としています(技術白書 3.2)。
summary は人が読むための要約です。プログラムで扱うときは、構造化された analysis を使ってください。世代: どのAIが読んだか
どの言葉にも、それを書いたAIの系列と出力の決まりを表す世代(generation)が付いています。世代は品質の順位ではなく、来歴の札です。各件には、モデル名(model)・指示文の版(prompt_version)・作った日時(generated_at)も付いています。
| 世代 | 読んだAI | 公開中の件数 |
|---|---|---|
gen2-qwen-local(既定) | ローカルVLM(Qwen 系・自宅のGPU) | 1,836,775 |
gen1-codex | クラウドVLM(GPT 系) | 77,676 |
既定では、1枚につき1つの世代の言語化を返します。特定の世代だけを見たいときは generation=gen1-codex のように指定します。世代の一覧は GET /v1/generations。
確度と推定値
幅・車線数・距離などの数値は、写真1枚からの推定で、測った値ではありません。多くの項目に、根拠(evidence)と確度(confidence: 高・中・低)が付いています。一覧の要約では [high] [mid] [low] と書きます。全体の目安として confidence_overall(0〜1)もあります。
// 写真 1499911054492109(2025年・新宿区)の車道の幅。analysis.geometry から "roadway_width_m": { "value": 4, "evidence": "駐輪している原付バイク(幅約0.7m)をスケール基準に、車道部(走行車線計)を推定", "confidence": "中" }
確度はAI自身の見立てで、別に測った正解率ではありません。リスクの手がかり(risk_cues)も、写真から読んだ手がかりで、事故の統計や公的な安全の評価ではありません。
「なし」「不明」「画角外不明」
写っていないことを推測で埋めないように、AIには次の3つを分けて書かせています。
同じ新宿区の写真では、右側の歩道は「画角外不明」、路面のひび割れと点字ブロックは「不明」です。見えなかった範囲は off_frame、判断できなかったことは not_assessable に、理由と一緒に書いてあります。
"sidewalk": { "left": { "presence": "あり", "type": "路側帯", "width_m": 1.5, "confidence": "中" }, "right": { "presence": "画角外不明", "type": "該当なし", "width_m": null, "confidence": "低" } }, "off_frame": ["道路の反対側(対向側の歩道・沿道)は画角外のため評価不可", …]
「不明」を「なし」と読み替えないでください。集計するときも、「不明」「画角外不明」を「なし」に数えないでください。通りと町丁目のカルテの率は、判定できた件数だけを分母にしています。
いつの様子か
- 記述は撮影した年の様子です。すべての結果に撮影年(
capture_year)が付いています。2019年の写真の記述を、いまの状態として語らないでください。 generated_atは文章を作った日時で、撮影日時ではありません。data_as_ofはデータの版を固めた日です。- 撮影年は1986〜2026年ですが、99.8%は2014年以降です(それより前は 3,660 件)。古い年のもの、とくに2010年より前のものには、撮影機器の時計がずれた記録が混ざりやすくなります。
- 23区は複数の年の写真を収録し、多摩・島しょは最新の年が中心です。
被覆: 写真がある場所だけ
みちよみは、市民が撮って Mapillary に公開した写真から作っています。だから、写真がどこにどれだけあるかは、撮った人がどこを歩き・走ったかで決まり、場所によって大きく違います。
答える前に GET /v1/coverage で収録を確かめてください。たとえば銀座四丁目の交差点から半径300mには 2,312 枚あり、撮影年は2010〜2026年に分かれています。0件は「撮影がない」という意味で、「何もない」「変わっていない」ではありません。近くを探す結果で candidate_truncated が true のときは、候補を途中で打ち切っています(打ち切られるのは中心から遠い側です)。
通りと町丁目のカルテ
写真1枚ずつの読み取りを、通り(線)と町丁目(面)の単位に集めて、文章にしたものです。
- 通り
- OpenStreetMap の道路を交差点で切った区間(写真15枚以上)を、同じ名前・同じ区市町村でまとめたもの。
street_idで引きます。名前の無い道は、区間(edge_id)ごとの数値だけです。 - 町丁目
- 国勢調査2020の小地域。
town_keyで引きます。 - 書き方
- 集計(素材束
profile)だけを材料に文章を書き、数値・年・固有名が素材束にあることを機械で確かめています。素材にないことは書きません。 - 率
- 歩道がある割合などは、判定できた件数が分母です(
judged。判定できた割合はjudged_rate)。複数の年をまとめた数で、いまの様子ではありません。year_spanを添えてください。 - 両側
- 通りの両側は「北東側」のような方角で書きます。前や後ろを向いた写真だけから作るので、件数が少ないことがあります。
- 版
- 本文を書いたモデルと指示文の版は
karte_provenance。ほかのモデルで書いた版はkarte_versionsにあり、include=versionsで本文ごと取れます。どの版も同じ素材束と同じ機械の確かめを通っています。
被覆等級
写真の量と広がりの目安です。等級Dには文章のカルテがなく、数値だけを include=profile で読めます(規則は応答の profile.coverage.rule)。
| 等級 | 通り(すべて満たす) | 町丁目(すべて満たす) | カルテ |
|---|---|---|---|
| A | 写真100枚以上・撮影の走行5本以上・延長の6割以上に写真 | 写真300枚以上・走行10本以上・車道の延長の4割以上に写真 | あり |
| B | 写真40枚以上・走行3本以上・延長の4割以上 | 写真100枚以上・走行5本以上・車道の延長の25%以上 | あり |
| C | 写真15枚以上・走行2本以上 | 写真30枚以上・走行2本以上 | あり |
| D | それより少ない | それより少ない | なし(数値だけ) |
いまの版(la_release 2026-10-03-la2)には、通り 6,248(うちカルテあり 3,563)、町丁目 5,256(うちカルテあり 4,734)、道路の区間 30,362 があります。
区全体より幅の広い複数車線の車道が北西へ延び、両側に高層のオフィスビルやマンションが並ぶ通り。晴海通り(中央区)のカルテの書き出し。被覆A、写真1,739枚・2013〜2026年の記録から。GET /v1/streets/799
経年変化: 崩れなかったものだけ
同じ場所を別の年に撮った写真を比べて見つけた「変わった」という主張のうち、反証を試みても崩れなかったものだけを収録しています。
- 比べる組を選ぶ同じ道路のまとまりで、向きが合う別の年の写真の組を、機械的に選びます。
- 違いを書くAIに、2つの時点で何が変わったかを書かせます。
- 崩しにいく文脈を切り離した別のAIセッション(同じモデル系列)に、その主張を「反証する」つもりで確かめさせます。
- 残ったものだけ収録崩れなかった主張(
supported)だけを API に入れます。
公開中の第1パスの 2,660 件の主張の内訳。残った割合は 94.8% です。
- 座標は道路のまとまりの中心で、変わった物の位置ではありません。
segment_priority_scoreは道路区間の点検の優先度の目安で、変化そのものの危険度ではありません(多くはnull)。- 根拠にした写真のID(
scene_ids_a・scene_ids_b)は元のデータに無いため、いまの版ではすべてnullです。根拠の文章(evidence)の全文はGET /v1/changes/{change_id}で読めます。
2017年は赤枠の角形板にタクシー図柄と「22-1」および左右矢印が見えるが、2026年は円形のタクシー関連規制標識、その下の「22:00-1:00」補助標識、さらに左右矢印の補助板へ変更されている。GINZA SIX 前のタクシー関連標識(設備・2017→2026)の根拠から抜粋。GET /v1/changes/chg_4424424a5b4f
安定度: 同じ写真を2回読ませると
同じ写真 36,479 枚を同じ条件でAIに2回読ませ、答えが一致した割合です。正解率ではなく、読み取りのぶれの少なさを表します。
- 撮影条件(天候・時間帯)95%超
- 道路の種別85〜90%
- 歩道の有無75%
- 幅員の完全一致57%
幅の値がそっくり同じになるのは6割弱です。1枚の写真の数値を決め手にせず、近くの何枚かや、通り・町丁目のカルテの傾向と合わせて読んでください。
設備(自販機・トイレ・ベンチ)
AIの記述に自販機・トイレ・ベンチが写っていた撮影地点を、近い順に返す機能もあります(GET /v1/amenities/nearby)。座標と距離は写真を撮った位置のもので、設置された位置・いまあるか・使えるかは確かめていません。私有地の中や、施設の利用者向けのものが含まれることもあります。
使うときの5つ
- 撮影年を添える(
capture_year)。いまの様子として語らない。 - 数値は推定として扱う。断定しない。
- 0件は「撮影がない」。先に
coverageで確かめる。 - 「不明」を埋めない。「なし」「不明」「画角外不明」を分けたまま使う。
- 出典は義務ではない。回答や表示には要りません。データとして配り直すときの書き方は出典・ライセンスへ。