デジタルガーデン
常州衛星影像の城:一本のデータ遠征と三つの納入鍵
「写真測量」も「手工モデリング」も封じられたとき、一つの城はまだどうやって真実に近づけるか? 常州の答えは——手に入る高精度ネットデータにデータ源をすべてすげ替え、Agent に全自動管路を走らせる。六路線、一日で歩み切った。
一、路線の分岐
物語はあの制約から始まる——「ネットデータか該当データを見つける以外できず、撮影も手工ランドマークも無理なので、路線はどう歩むべき? AI と agent だけで完成させるだけ。」謀士はまず天井を引いた——写真測量がなければ真实立面纹理は永遠に手に入らず、到達可能な限界は「輪郭精準 + 高さ真实 + 屋根に正射影像貼図 + 立面が中遠景で偽乱真まで程序化」——Google Earth 3D の白模 + 影像貼図の効果。そして六路線を順位付け——Overture 建築高さ、Esri/天地図衛星影像、貝殻小区階数回填、高徳 POI 自動标注、Mapillary 街景立面、学術高さデータセットの交叉検証。ユーザーの一声——一から六の路線で开工せよ、全部完了まで。
二、路線一の挫折と路線二の進軍
路線一(高さ)はネット環境に阻断され、正直に記録——Overture の DuckDB/libcurl の OpenSSL 握手が透明代理に拦截され(curl の schannel は正常だが 258GB の parquet は全下できず);Google Open Buildings は S2 分片で常州のファイルを定位できず;GHSL の JRC サーバは到達不能。建築高さは依然 OSM タグ + 発見式推定——これは現在のモデル最大の精度短板で、報告は粉飾しなかった。
路線二(衛星影像)は収益最大の一戦——Esri World Imagery タイルを分批でダウンロード——当初 18,303 タイルの規模は毎時三・六タイルの龟速の前で八十五分かかるため、核心区 z15 + 外囲 z14 に変更(総量を約四、四百に削減)、並行を三十二に引き上げ、速度は毎秒三十タイルへ飛んだ。透明代理がリクエストごとにランダムに切断する陰手も回り込まれた——Python urllib の SSL は代理に壊され curl は正常——すべて curl サブプロセスに変更。最終 万三百八十一タイル(z14 全境九十三パーセント + z15 核心九十四パーセント)、十六枚の 4096² チャンク貼図にモザイク、地形はすべて真实衛星影像に置き換え、欠損区は隣接平均で充填。
路線二c(屋根色)は惊喜だった——全部三万六千三百七十五棟の建築を衛星影像から一棟ずつ屋根色をサンプリング、百パーセント覆蓋、量子化して約二百種の材質に合併——新築小区の白屋根、工業の青屋根、旧城の赤瓦が自動区別され、一つの城の経済地理が一目で読めるように。
三、路線四 / 五 / 六:立面の革命
路線四(程序化立面)——建築メッシュに二つの逐頂点属性を追加——壁面局部高さ wz、壁面水平座標 wu——材質シェーダがそれに基づき窓格と床版を生成——住宅は三・二 m 層高 / 四 m 開間、ガラスカーテンウォール三・六 m / 三・二 m、工業四・五 m / 八 m の疎窓、窓格の roughness/metallic が同步変化;十六 m 以上の平屋根建築に一・一 m の娘壁を追加。街景视角では完全な窓格立面が見える——これは「白模」から「建築」への一跳躍。
路線五(ランドマーク精修)——天寧宝塔をやり直し——八角十三層、反り檐口(角点が一・三 m 上に跳ねる、中国宝塔最も顕著な特徴)、相輪塔刹に金色宝珠。
路線六(POI 标注)——OSM から抽出し精選した五十二の标注(六区県 + 恐竜園 / 博物館 / 大劇院 / 奥体 / 運河 / 太湖 / 火車駅)、隣省都市の残留と村級标注を过滤、独立コレクション 09_Labels、俯瞰図のみ渲染——固定字号では五 km と五十五 km の視高に同時に適応できず、これは記録に残されたトレードオフ。
工程の最適化も一言——MeshBuilder.v() の **kwargs 辞書渡しは五十倍減速の根源で、最適化後の構築は二十六秒だけ;六百三十三の材質は多すぎ、屋根色の量子化ステップを〇・一 に粗化。
四、三つの納入鍵
七十一 MB の blend は非 Blender ユーザーには直感的でないため、三つの鍵が作られた——
一。ブラウザビューア——changzhou_web.glb(Draco + meshopt で 267MB から 80MB に圧縮)+ three.js ドラッグドロップビューア。デバッグ過程そのものが探偵小説だった——ページはモデルをロードしたが画面は真っ白——rAF のバックグラウンドタブスロットリング(手動レンダリングは成功、二百三十五回のドローコール、三百万三角形)、カメラ near=5/far=2,000,000 の深度バッファ精度災害(二十二 km 先で LSB あたり約二 km、near=50/far=500000 に修正)、最終真犯人は五百 km の背板で都市との深度差が深度バッファ一精度単位より小さく、都市が背板にまるごと覆われていた——导出時に use_selection で背板を除外し、画面は完璧。
二。飛行映像——二十二秒、五百二十八フレーム、1280×720——高空俯衝→市区穿行→宝塔环绕→拉升收尾。Blender 5.2 の陥穽が一路で現れた——Action API が変わり(fcurves が layers/channelbags に移動)、FFMPEG が image_settings から削除(media_type=‘VIDEO’ + ffmpeg.format/codec を使用)。
三。Blender 漫遊——ビューポートのクリップ距離を 1000km にプリセット(大尺度モデル最も多い「ズームアウトすると全部消える」陥穽、ファイルに保存)、飛行モード WASD+QE、十個のプリセット機位、09_Labels は自分で開閉可能。
最終 changzhou.blend——七十一 MB、三百八万頂点、百九十二万面、約二百材質、十機位。スクリプト管路は完全に保持(terrain.py → extract.py → esri_download.py → build_esri_mosaic.py → blender_build.py)、任意のパラメータを変えれば全量再実行できる。
真実の座標
- 路線一(Overture)阻断を正直に記録——DuckDB/libcurl の OpenSSL が透明代理に拦截、258GB は全下できず、Google Open Buildings の S2 分片は定位不能、GHSL 到達不能;高さは依然 OSM タグ + 発見式
- 路線二:万三百八十一 Esri タイル(z14 全境九十三パーセント + z15 核心九十四パーセント)→ 十六枚の 4096² チャンク;Python urllib の SSL が代理に壊されすべて curl サブプロセスに;欠損区は隣接平均で充填;Web Mercator は正射補正なし(高層に軽微な位移、記録済み)
- 路線二c:三万六千三百七十五棟の屋根色を百パーセントサンプリング、約二百材質に量子化(新築白 / 工業青 / 旧城赤瓦が自動区別)
- 路線四:wz/wu 逐頂点属性が窓格を駆動(住宅三・二 m / 四 m、カーテンウォール三・六 m / 三・二 m、工業四・五 m / 八 m)+ 十六 m 以上に一・一 m の娘壁;MeshBuilder kwargs の五十倍減速を最適化(二十六秒構築)
- 路線五:天寧宝塔は八角十三層 + 反り檐口(一・三 m 上跳)+ 相輪塔刹 + 金宝珠;路線六:五十二の精選 POI(六区県 + ランドマーク)、09_Labels は俯瞰のみ
- 三つの納入鍵——ブラウザビューア(GLB 80MB Draco、深度精度災害 near=5/far=2M→50/500k、五百 km 背板遮挡の真犯人、use_selection 除外)、飛行映像二十二秒 / 五百二十八フレーム、Blender 漫遊(ビューポートクリップ 1000km、十機位);Blender 5.2 API——Action layers/channelbags、FFMPEG media_type=‘VIDEO’、MixRGB 命名インターフェース
- 最終——changzhou.blend 七十一 MB / 三百八万頂点 / 百九十二万面 / 約二百材質 / 十機位;五本のスクリプト管路で全量再実行可能
コメント