1. 从一堆OSGB文件说起这套数据到底能拿来干什么第一次拿到OSGB倾斜摄影数据的人大概率会经历三个阶段先是兴奋觉得这玩意儿跟实景一模一样比手工建模强太多然后是懵圈一个文件夹里躺着几百上千个.osgb文件外加一个metadata.xml完全不知道从哪下手最后是抓狂想把它塞进项目里结果发现坐标系对不上、模型加载卡成幻灯片、贴图还发黑。我这些年经手的倾斜摄影项目不算少从早期的ContextCapture 4.x一路用到现在的版本OSGB这套数据格式可以说是国内实景三维领域最“接地气”的存在。它不像3DTiles那样天生为Web端流式加载设计也不像OBJ那样通用但胜在结构简单、分块清晰、单机加载性能好所以大量无人机航测项目交付时默认给的就是OSGB。这篇文章我想把OSGB倾斜摄影数据从“下载到用起来”这条链路彻底讲透。核心关键词OSGB、倾斜摄影、数据资源下载会贯穿全文但我不打算只停留在“哪里能下”这个层面——那种内容网上已经够多了而且很多链接早就失效。我更想聊的是拿到数据之后坐标系怎么选、OSGB和DOM到底什么关系、怎么转成3DTiles给前端用、大疆无人机拍的片子怎么走通建模流程。这些才是真正卡住人的地方。适合谁看如果你是测绘、GIS、三维可视化方向的学生或者刚入行的工程师这篇能帮你少走至少半年的弯路。如果你已经有一定基础但每次遇到坐标系和格式转换就头疼那第3节和第4节应该能解决你的大部分问题。全文基于我自己的实操经验涉及参数和步骤的地方我会把计算过程也写出来方便你直接抄作业。2. OSGB数据资源获取与前期准备2.1 免费OSGB数据到底从哪里来先说清楚一件事真正高质量的OSGB倾斜摄影数据几乎没有完全免费公开的。原因很简单一套城市级实景三维模型的采集成本摆在那里——无人机飞行、像控点测量、空三解算、人工修模每一步都是钱。所以网上流传的“免费下载”基本是以下几类教学示例数据一些软件厂商和高校会放出小范围样例比如ContextCapture自带的示例工程或者某些测绘单位公开的几百米街区数据。这类数据的特点是范围小、精度一般但用来练手完全够用。开放地理数据平台部分城市有公开的实景三维成果格式可能是OSGB或者3DTiles需要注册申请有的还限制用途。个人项目分享一些博主会把自己练手做的模型打包分享这类数据质量参差不齐坐标系信息经常缺失下载后要自己核对。我个人的建议是别把精力花在到处找免费数据上先用手头的样例把流程跑通。等你真正理解了OSGB的结构和处理方法再去找项目数据或者自己飞一片区域建模效率高得多。提示下载任何数据前先确认它的坐标系和范围。我见过太多人下载完直接拖进软件结果模型跑到几千公里外就是因为没看metadata。2.2 拿到数据后先做这三件事很多人下载完OSGB就急着往软件里拖这是大忌。我习惯先做三件事五分钟就能避免后面几小时的返工。第一看目录结构。标准OSGB数据通常长这样Data/ ├── metadata.xml ├── Tile_000_000/ │ ├── Tile_000_000.osgb │ ├── Tile_000_000_L20_00.osgb │ └── ... ├── Tile_001_000/ └── ...那个metadata.xml是命根子里面记录了SRS空间参考系统、范围、层级信息。用文本编辑器打开看一眼重点找SRS标签它会告诉你这是EPSG多少。第二确认坐标系。国内常见的倾斜摄影成果坐标系有这么几种坐标系类型EPSG示例适用场景特点CGCS2000 高斯投影4547等国内测绘标准平面精度高需带号WGS84 经纬度4326国际通用直接对应GPSWeb墨卡托3857Web地图前端展示常用地方独立坐标系自定义特定城市需转换参数坐标系选错模型位置就全错。这一步千万别偷懒。第三检查文件完整性。OSGB是分块的如果下载过程中断了某些tile可能损坏。我一般会看总文件数和总大小是否和说明一致然后用一个简单的脚本遍历一遍确认没有0字节文件。2.3 硬件和软件环境的最低配置倾斜摄影数据处理是吃硬件的大户尤其是OSGB这种带大量贴图的数据。我踩过的坑是用一台8G内存的笔记本打开一个城市级OSGB直接卡死。给你一个我实测下来比较稳的配置参考内存16G起步处理城市级数据建议32G以上。OSGB加载时会把节点和贴图读进内存内存不够就频繁换页卡到怀疑人生。显卡独立显卡显存4G以上。集成显卡能打开但体验很差。硬盘SSD至少留出数据体积3倍的剩余空间。转换和缓存过程会产生大量临时文件。软件ContextCapture建模和查看、OSGB转3DTiles工具如CesiumLab、3DTiles转换器、QGIS或ArcGIS坐标系处理、Blender或3ds Max模型修整。软件这块我要多说一句不要迷信某一个工具能包打天下。ContextCapture擅长建模和OSGB输出但转3DTiles不是它的强项CesiumLab转3DTiles很顺手但处理坐标系不如专业GIS软件。组合使用才是常态。3. 核心概念拆解OSGB、DOM与3DTiles的关系3.1 OSGB到底是什么为什么倾斜摄影爱用它OSGB全称OpenSceneGraph Binary是OpenSceneGraph这个开源三维引擎的二进制格式。它本质上是一种场景图格式把三维模型组织成树状结构每个节点可以包含几何体、贴图、变换矩阵等信息。倾斜摄影为什么偏爱OSGB我总结下来有三个原因。第一分块机制天然适配倾斜摄影的数据组织方式。倾斜摄影模型是通过多视角影像密集匹配生成的数据量巨大必须分块。OSGB的LOD细节层次结构让不同距离显示不同精度的模型近处清晰远处简化这个机制和倾斜摄影的“金字塔”数据组织完美契合。第二二进制格式读取快。相比OBJ这种文本格式OSGB是二进制的解析速度快很多。一个几百MB的OSGB文件加载起来比同样内容的OBJ快好几倍。第三贴图内嵌管理方便。OSGB可以把贴图打包在文件内部也可以外链。倾斜摄影的贴图是影像自动映射的数量多且碎内嵌方式省去了管理成千上万张贴图的麻烦。但OSGB也有明显短板它是桌面端格式Web端不能直接加载必须转成3DTiles不同软件对OSGB的支持程度不一跨平台性一般。3.2 OSGB和DOM的关系别再搞混了这是被问得最多的问题之一osgb和dom的关系到底是什么简单说OSGB是三维模型DOM是二维正射影像。两者是完全不同的数据产品但经常一起出现所以容易混淆。DOMDigital Orthophoto Map是数字正射影像图它是把航空影像经过几何校正后消除地形和相机倾斜影响生成的一张大图。你可以把它理解成“从正上方垂直往下拍、并且把地形起伏都压平了的照片”。DOM是二维的每个像素对应地面一个位置有坐标信息。OSGB是三维的它不仅有平面位置还有高度信息能看到建筑物的侧面、树木的轮廓。它们的关系体现在这几个方面生产流程上倾斜摄影一次飞行可以同时产出OSGB三维模型和DOM正射影像。空三解算后用同一套影像分别生成两种产品。应用上互补DOM适合做底图、量测平面距离和面积OSGB适合看立体效果、量测高度和体积。很多项目会同时交付这两样。数据关联DOM的坐标系通常和OSGB一致可以叠加使用。在三维场景里DOM经常被当作地面底图贴在OSGB模型下方。我见过有人把DOM当成OSGB的贴图这是不对的。OSGB的贴图是模型自带的来自倾斜影像的自动映射DOM是独立的正射产品两者来源相同但用途不同。3.3 为什么最终都要转成3DTiles如果你只做桌面端展示OSGB够用了。但只要涉及Web端、涉及在浏览器里流畅加载大场景3DTiles就是绕不过去的坎。3DTiles是Cesium提出的三维瓦片规范专门为流式加载设计。它的核心思想是把三维场景切成一个个瓦片每个瓦片有明确的包围盒和几何误差浏览器根据视角动态请求需要的瓦片。这样即使数据总量几十上百G用户也只需要加载当前视野内的部分。OSGB转3DTiles本质上是把OSGB的LOD树结构重新组织成3DTiles的tileset.json加b3dm或glTF瓦片。转换过程中要处理几个关键问题坐标系转换OSGB的坐标系要转成3DTiles要求的EPSG:4978地心直角坐标或者带地理参考的局部坐标。贴图格式OSGB的贴图可能是DDS等格式要转成Web友好的JPEG或PNG。层级重构OSGB的LOD层级和3DTiles的geometricError要对应好否则会出现加载闪烁或者精度突变。转换工具我用过不少CesiumLab的转换质量比较稳定对坐标系处理也比较友好。开源方案里3d-tiles-tools可以做一些基础转换但配置起来麻烦一些。4. 实操全流程从OSGB到可用三维场景4.1 坐标系选择与转换的完整计算过程坐标系这块我要展开讲因为这是最容易出错、也最需要理解原理的地方。假设你拿到的OSGB数据是CGCS2000高斯投影3度带中央经线117度带号39。metadata里写的EPSG是4547。现在你要把它转成3DTiles用于Cesium展示。第一步确认源坐标系。EPSG:4547是CGCS2000 / 3-degree Gauss-Kruger CM 117E也就是中央经线117度、3度带投影。它的坐标值是东坐标带500km假东和北坐标单位米。第二步确定目标坐标系。Cesium的3DTiles通常用EPSG:4979WGS84地理坐标或者EPSG:4978地心直角坐标。转换时一般先转成4979再由Cesium内部处理。第三步执行转换。这里有两种路径路径A用GIS软件转换。在QGIS里加载OSGB的metadata确认坐标系然后用“重投影”功能转成EPSG:4979。但OSGB本身不是QGIS直接支持的格式通常要先转成其他格式或者用专门工具。路径B在转换工具里指定坐标系。以CesiumLab为例导入OSGB时它会让你指定源坐标系和目标坐标系。源坐标系选EPSG:4547目标选EPSG:4979工具会自动计算转换参数。这里有个关键点高斯投影转经纬度不是简单的线性变换涉及椭球参数和投影反算。如果你手动算公式是这样的对于高斯投影反算已知x北坐标、y东坐标先去掉假东500000然后计算底点纬度再迭代求解经度。这个过程比较复杂实际工作中没人手算都是用工具。但你要理解转换参数错了模型就会偏移几百米甚至几公里。我踩过的坑是有一次数据是地方独立坐标系metadata里没写清楚我按CGCS2000转了结果模型整体偏移了1.2公里。后来找项目方要了转换参数四参数或七参数才纠正过来。所以如果数据来源不明一定要先问清楚坐标系或者找一个已知点验证。4.2 OSGB转3DTiles的详细步骤下面是我用CesiumLab转3DTiles的完整流程其他工具逻辑类似。第一步准备数据。把OSGB文件夹整理好确保metadata.xml在根目录。如果数据是分多个文件夹的先合并到一个目录下。第二步打开转换工具新建任务。选择“OSGB转3DTiles”功能。第三步指定输入输出。输入选OSGB根目录输出选一个空文件夹。注意输出路径不要有中文和空格这是很多工具的通病。第四步设置坐标系。源坐标系按metadata填写目标坐标系选EPSG:4979。如果工具支持勾选“自动计算中心点”这样生成的tileset会以数据中心为原点避免坐标值过大导致精度问题。第五步设置瓦片参数。这里有几个关键参数最大层级根据数据精度定一般倾斜摄影最大层级在20-22级。设太高会生成大量小文件设太低会丢失细节。几何误差控制LOD切换的阈值。默认值通常可用如果发现切换太突兀可以调小。贴图格式选JPEG质量75-85平衡体积和清晰度。线程数按CPU核心数设置一般设成核心数的80%。第六步开始转换。转换时间取决于数据量一个1GB的OSGB大概需要10-30分钟。转换过程中可以看日志如果有报错会提示。第七步验证结果。转换完成后用Cesium加载tileset.json检查模型位置、贴图、LOD切换是否正常。注意转换过程中如果中断输出文件夹里会有残留文件下次转换前一定要清空否则可能出错。4.3 大疆无人机倾斜摄影建模的坐标系选择大疆无人机如Mavic 3E、Phantom 4 RTK做倾斜摄影坐标系选择有几个关键决策点。第一飞行时用什么坐标系。大疆RTK机型默认输出WGS84经纬度和椭球高。如果你需要CGCS2000成果可以在飞行设置里选择或者后期转换。我的建议是飞行时用WGS84后期按项目要求转换。因为WGS84是GPS原生坐标系转换到其他坐标系有成熟参数反过来则可能引入误差。第二空三解算时用什么坐标系。在ContextCapture里新建工程时会要求指定SRS。如果你有像控点像控点的坐标系就是你的目标坐标系。如果没有像控点用WGS84也能出成果但绝对精度差一些。第三建模输出时用什么坐标系。ContextCapture输出OSGB时可以选择输出坐标系。这里要和项目需求一致。如果是国内测绘项目通常输出CGCS2000高斯投影如果是Web展示输出WGS84更方便。我实测下来大疆RTK机型在无像控点情况下WGS84成果的平面精度可以做到5cm以内高程精度10cm左右。加像控点后能到2-3cm。这个精度对于大部分实景三维应用足够了。4.4 模型提取与轻量化处理有时候你不需要整个场景只想从OSGB里提取某栋建筑或者某个区域。这时候就需要模型提取。提取的方法有几种按范围裁剪在ContextCapture或者第三方工具里画一个多边形范围只输出范围内的模型。适合规则区域。按层级提取OSGB的LOD结构里高层级是简化模型低层级是精细模型。如果只需要粗略模型可以只保留高层级。手动修模用Blender或3ds Max打开OSGB需要插件删除不需要的部分重新导出。适合小范围精细处理。轻量化是另一个重要话题。OSGB数据动辄几十G直接用于Web不现实。轻量化的手段包括减面用Decimation算法减少三角形数量但会损失细节。贴图压缩把大贴图缩小或者转成更高效的格式。LOD重构重新生成更合理的LOD层级减少总瓦片数。我一般会先转3DTiles然后在3DTiles基础上做轻量化因为3DTiles的瓦片结构更适合做按需加载和简化。5. 常见问题与排查技巧实录5.1 模型加载后位置不对怎么办这是最高频的问题。模型位置不对99%是坐标系问题。排查思路如下第一步确认源坐标系。打开metadata.xml找SRS标签。如果没有问数据提供方。如果提供方也不清楚看坐标值范围如果东坐标在6-7位数、北坐标在7-8位数大概率是高斯投影如果经纬度在几十到一百多那是地理坐标。第二步确认转换参数。如果源坐标系和目标坐标系之间需要转换参数比如地方坐标系转CGCS2000确认参数是否正确。四参数用于平面七参数用于三维。第三步验证。找一个已知点比如某个明显地标的角点在模型里量它的坐标和实际坐标对比。如果偏差是固定值说明是平移问题如果偏差随位置变化说明是旋转或尺度问题。我整理了一个速查表现象可能原因解决方法模型整体偏移固定距离坐标系定义错误或缺少转换参数核对EPSG补充四参数/七参数模型位置随机漂移投影参数错误检查中央经线、带号模型高度异常高程基准不一致确认是椭球高还是正常高模型旋转坐标轴方向定义不同检查是东北天还是北东地5.2 贴图发黑或丢失的排查贴图问题也很常见表现是模型灰暗、发黑或者某些面没有贴图。原因通常有这几个贴图路径错误OSGB如果外链贴图路径变了就找不到。解决方法是把贴图内嵌或者修复路径。贴图格式不支持某些工具不支持DDS格式转成JPEG即可。光照设置问题有些查看器默认没有环境光模型看起来就是黑的。加一个环境光或者调整材质。贴图坐标丢失转换过程中UV丢失需要重新映射。我的经验是转3DTiles时贴图格式统一转成JPEG质量80基本能解决大部分问题。5.3 性能优化让大场景流畅加载OSGB转3DTiles后如果加载还是卡可以从这几个方面优化减少瓦片数量合并小瓦片或者提高几何误差阈值。压缩贴图用工具批量压缩或者降低分辨率。使用Draco压缩3DTiles支持Draco几何压缩能显著减小文件体积。按需加载确保tileset.json的LOD结构合理不要一次性加载所有瓦片。服务端优化如果用Cesium ion或者自建服务开启gzip压缩和缓存。我实测过一个20GB的OSGB经过轻量化和Draco压缩后转成3DTiles只有3GB左右Web端加载流畅很多。5.4 数据下载与使用的合规提醒最后说一个容易被忽视的点数据合规。倾斜摄影数据可能涉及地理信息使用和传播要遵守相关规定。下载免费数据时注意看授权协议不要用于商业用途或者公开传播。自己采集的数据也要注意飞行区域的限制。提示涉及地理信息的数据建议在合规框架内使用避免不必要的麻烦。6. 我个人的一些实操体会做倾斜摄影这些年最大的感受是工具在变但底层逻辑没变。坐标系、数据组织、LOD这些概念从OSGB到3DTiles到未来的新格式本质都是一样的。把原理搞懂了换什么工具都能快速上手。另一个体会是别追求一步到位。很多人想一次就把整个城市的数据处理好结果卡在某个环节就放弃了。我的做法是先拿一小块数据跑通全流程从下载到转换到展示走一遍。流程通了再处理大数据只是时间问题。还有多动手验证。坐标系对不对量一下就知道贴图好不好看一眼就知道。别光看文档文档和实际总有差距。最后分享一个小技巧如果你经常处理OSGB可以写一个脚本自动检查metadata、统计文件数、验证坐标系。我自己的脚本跑了三年帮我省了无数时间。这个后续可以展开讲先把基础流程走通最重要。