ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SuperMap iDesktop 9D倾斜摄影数据处理全流程:从OSGB到S3M的实用指南

SuperMap iDesktop 9D倾斜摄影数据处理全流程:从OSGB到S3M的实用指南 1. 为什么倾斜摄影数据不能直接拿来用先搞懂这层逻辑接触过三维GIS的人应该都有体会无人机倾斜摄影出来的OSGB数据体积动辄几十GB甚至上百GB直接拖进SuperMap iDesktop 9D里要么卡成幻灯片要么模型发白、位置漂移、层叠错乱。很多人第一反应是“软件不行”但实际上是没搞懂倾斜摄影数据从采集到落地的完整链路。倾斜摄影的本质是从五个方向一个垂直加四个倾斜对地物连续拍照然后通过三维重建算法生成带真实纹理的三角网模型。这个过程中每张照片都有独立的相机参数和外方位元素重建软件如ContextCapture、Smart3D、大疆智图输出的OSGB是分块Tile存储的每个Tile包含一个LOD多层次细节结构和对应的纹理贴图。换句话说OSGB天然是为“可视化”设计的不是为“GIS分析”设计的。SuperMap iDesktop 9D处理倾斜摄影数据核心就做四件事格式转换、坐标归一、模型修复、单体化。这也是我本文要展开的四条主线。9D这个版本在倾斜摄影支持上的一个重要改进是底层接入了原生S3M格式的支持不再像8C那样需要先转成模型数据集再生成缓存而是可以直接将OSGB批量转换成S3M在性能和效果上都上了一个台阶。如果你手里的数据只是拿来做展示、汇报、大屏漫游那处理流程可以简化但如果后续要做量测、查询、空间分析、与业务系统挂接那每一步都不能省。我下面讲的内容基本覆盖了从数据落地到可用的全流程适合测绘地理信息行业的作业人员、三维GIS开发者的前处理环节以及正在选型或刚接触SuperMap的团队参考。2. 数据准备工作坐标系检查和目录结构规范2.1 拿到OSGB数据后先别急着导先查三样东西我见过太多人拿到数据直接拖进场景然后跑来问“为什么模型是歪的”“为什么模型和矢量对不上”。其实90%的问题出在数据本身的坐标系和范围信息上。第一样是metadata.xml。ContextCapture等软件在输出OSGB时会生成一个metadata.xml文件里面记录了坐标系统、原点坐标、分块尺寸等信息。用记事本打开就能看到SRSEPSG:32650/SRS Origin500000.000, 3400000.000, 0.000/Origin GTiff.../GTiff这里EPSG:32650是WGS 84 / UTM zone 50NOrigin是整个模型的原点坐标。这个文件是SuperMap iDesktop 9D自动生成配置文件时的主要依据如果它丢了或者被人为改动过后面所有操作都会出问题。所以拿到数据第一步先备份这份文件。第二样是数据范围。把OSGB数据所在文件夹里随便一个Tile的模型范围框出来看看经纬度或者平面坐标的量级。如果是经纬度坐标数值大概在100多到120多东经、30多到40多北纬这个区间如果是投影坐标数值通常是6位或8位数比如500000表示500公里。搞清楚这个是为了后面判断需不需要做坐标转换以及怎么做。第三样是Level层级的数量。打开OSGB目录正常情况下会有Tile_0、Tile_1、Tile_2这样的文件夹层级每个层级细分程度不同。层级多的数据建模时细节丰富但数据处理时对硬件的要求也高。2.2 目录结构规范一个项目一个根目录不要跨盘散放这是一个容易被忽略但实际影响很大的细节。SuperMap iDesktop 9D在处理OSGB时配置文件里写的是相对路径还是绝对路径取决于你生成配置文件时的操作方式。如果数据分散在多个目录或者跨盘符后续移动项目目录时配置就会失效需要重新生成。建议是建立一个规范化的工作目录大致长这样D:\Project_Photogrammetry\ ├── 01_Original_Data\ # 存放无人机原始OSGB ├── 02_Config\ # 存放生成的配置文件 ├── 03_S3M_Cache\ # 存放生成的S3M缓存 ├── 04_Merged_Model\ # 存放合并后的模型或单体化结果 ├── 05_Output\ # 最终成果输出 └── Logs\ # 处理日志这么做的好处是所有处理过程中的中间产物都有固定位置坐标系、范围、层级出了问题回溯起来非常方便而且在团队协作时交接数据只需要拷贝整个项目目录配置文件里的相对路径依然有效。2.3 坐标系的坑为什么模型和矢量老是“差一点点”这是倾斜摄影数据处理里最常见也最让人头疼的问题。OSGB数据来自无人机无人机用的GPS/RTK定位基准通常是WGS84或CGCS2000但不同采集设备输出的坐标类型五花八门有的是经纬度地理坐标系有的是投影平面坐标UTM、高斯-克吕格还有的是地方独立坐标系。SuperMap iDesktop 9D里有一个很隐蔽的坑场景的坐标系和数据的坐标系是两套体系。新建场景默认是GCS_WGS_1984经纬度如果直接把投影坐标系的OSGB拖进去SuperMap会尝试动态投影显示但倾斜模型的数据量太大时动态投影经常导致显示异常或者加载极慢。我的做法是先确认数据坐标系再设置场景坐标系。具体在9D里的操作路径是“场景”选项卡 → “场景属性”面板 → “坐标系”设置。设置成与数据一致的坐标系后再加载倾斜摄影数据避免不必要的动态投影计算。另外要特别提醒不要用“修改数据集坐标系”的方式去改OSGB。OSGB是分块存储的模型数据不是矢量数据你改了它记录的坐标系参数实际几何位置并没有变化只是“贴了一个错误的标签”后面做量测和空间分析全是错的。正确做法是通过投影转换功能去转坐标后面第4节详细讲。3. 生成配置文件与快速加载理解S3M缓存机制3.1 为什么SuperMap iDesktop 9D不直接吃OSGBSuperMap iDesktop 9D在“三维数据”选项卡下有一个“倾斜摄影数据”分组里面提供了“生成配置文件”“快速加载”“合并根节点”等功能。第一次用的人可能会困惑既然OSGB已经是三维模型了为什么还要生成配置文件原因是OSGB的LOD分块结构和SuperMap的S3M格式不完全兼容。S3M是SuperMap定义的一种面向WebGL和移动端的流式传输三维模型格式它把LOD、纹理、属性组织成适合网络传输的二进制流。SuperMap iDesktop 9D通过“生成配置文件”这个动作把OSGB的目录结构、LOD层级、范围、坐标系等信息写进一个.sxdl文件SuperMap数据列表然后再由加载引擎按需把OSGB转成S3M缓存。这里有两条路线路线A推荐生成配置文件 → 以“倾斜摄影数据”图层的方式加载OSGB → 右键“生成S3M缓存”。这种方式生成的S3M是经过SuperMap引擎优化的Web端加载效率最高。路线B临时直接生成配置文件后用“添加数据”把OSGB文件作为模型数据集加载。这种方式适合快速预览但不建议用于最终发布因为性能比S3M差很多。3.2 配置文件生成实操自动扫描还是手动组装在SuperMap iDesktop 9D里点“生成配置文件”后会弹出一个对话框。你可以选择“扫描整个文件夹”自动识别也可以手动指定数据源和数据集的名称。大多数情况下自动扫描就够了但有两个参数需要特别注意。第一个是“原点坐标”。配置文件里要求填写的原点坐标是模型坐标的平移基准。如果metadata.xml里已经写明了Origin一般会自动读取。但有的时候metadata.xml缺失或者不完整就需要手动填写。填错了最直接的症状是模型加载后位置在天上或者地下跟地形完全合不上。第二个是“格式”选项——在9D里通常有“OSGB”“OSGBLocaSpace”“Smart3D”等选项。选择错误的格式会导致配置文件生成失败。我的经验是如果是ContextCaptureSmart3D出的数据选“Smart3D”或“OSGBSmart3D”如果是大疆智图出来的多数是标准OSGB选“OSGB”就行。3.3 快速加载与根节点合并什么时候用哪个配置文件生成之后拖到场景里就能看到模型了。这时候如果发现加载特别慢大概率是根节点数量太多了。每个OSGB文件夹下的一个Tile就是一个根节点一个城市的倾斜摄影数据可能有几百上千个Tile。场景加载时引擎要逐个读取根节点信息自然就慢。“合并根节点”功能就是干这个的。它把多个OSGB根节点合并成一个减少了引擎初始化时的请求次数。我一般是在生成S3M缓存之前先合并根节点合并系数选2~4也就是4到16个Tile合成一个根节点。合并太多会导致单次加载数据量过大反而卡顿合并太少又起不到优化效果。经验值一个区域的OSGB如果有500个Tile合并系数设为3即27个Tile一组处理后根节点数量约20个左右加载速度能有明显提升。但注意合并根节点会生成一个新的OSGB数据集磁盘占用会增加处理时间也比较长建议在配置较好的工作站上执行。4. 坐标转换与数据归位把倾斜模型挪到正确的位置4.1 为什么倾斜模型位置总是不对从模型坐标到地理坐标倾斜摄影建模软件输出的OSGB很多是局部坐标原点通常设在测区中心或者某个控制点上坐标值通常是几百米到几千米的量级不是真实的地理坐标。这种数据直接加载模型本身没问题但当你叠加地形、影像、矢量时对不上。SuperMap iDesktop 9D处理这种情况用的是“投影设置”功能。操作路径是加载倾斜摄影数据图层 → 右键点击图层 → “投影设置” → 手动指定模型的目标坐标系和投影方式。这里最常见的场景有两种场景一数据本身是WGS84经纬度但加载到场景里显示不出来或者显示在错误位置。这种情况一般不是数据的问题而是场景坐标系和图层坐标系设置不一致。把场景坐标系也改成WGS84就解决了。场景二数据是地方独立坐标系或者图形坐标需要转换成CGCS2000国家坐标系。这时要用“投影设置”里的“坐标系转换功能”输入源坐标系参数和目标坐标系参数SuperMap会基于七参数或四参数做转换。4.2 七参数怎么填别瞎填先找测绘部门要坐标转换不是简单的偏移。不同的坐标系之间椭球体不同转换需要用到七参数三个平移、三个旋转、一个尺度。很多人不知道七参数从哪来就随便在网上下个参数填进去结果模型偏得离谱。正确的获取姿势是找当地测绘主管部门或者原始航飞单位要控制点成果和转换参数。一般无人机航测项目在成果交付时都会附带坐标转换参数说明。如果你手头只有控制点坐标比如三个以上已知WGS84和CGCS2000的公共点可以在SuperMap iDesktop 9D里用“坐标转换工具”里的“计算七参数”功能来算。操作流程大致是准备公共点数据至少三个分布尽量覆盖测区范围不要集中在一个小角落。打开“数据”选项卡 → 坐标转换 → 计算七参数。输入源坐标点和目标坐标点软件会计算七参数并给出残差。保存参数文件之后在投影设置或批量转换时调用。注意七参数的精度取决于公共点的精度和分布。公共点里如果有粗差比如某个点的坐标抄错了计算结果会偏差很大。所以我每次算完七参数都会先单独转一个已知点验证一下确认无误后再批量作业。4.3 批量转换多层数据一起归位一个完整的倾斜摄影项目往往不止有OSGB模型还有DOM数字正射影像、DSM数字表面模型、三维矢量白模、控制点成果等。如果只转OSGB不转其他数据后续叠加还是对不上。SuperMap iDesktop 9D的“批量坐标转换”支持拖入多个数据集一次性转换。这里我推荐的顺序是先转矢量数据集控制点、建筑物轮廓、道路中线这些数据量小转换快适合用来验证七参数的正确性。再转影像数据DOM在场景里叠加确认位置吻合。最后转倾斜摄影OSGB数据生成S3M缓存。这个顺序的核心逻辑是先用轻量级数据验证坐标转换的准确性再对重量级数据执行转换避免转换参数错误导致大批量数据返工。5. 模型修复与纹理优化让三维场景更“能打”5.1 模型底面悬空和破洞问题合并根结点后的康威操作倾斜摄影模型因为重建算法的原因经常会有底面悬空、侧面扭曲、水面破洞等问题。在SuperMap iDesktop 9D里处理这些问题的常用工具是“模型修复”和“模型平滑”。以最常见的“模型悬空”为例——就是模型底部和地面之间有一条缝隙。原因通常是重建时剔除了地面以下的三角网而地面本身是起伏的导致模型底面和地形不贴合。处理办法有两种如果缝隙不大可以直接在场景里用“模型平移”功能把模型向下微调几厘米到几十厘米。优点是快缺点是治标不治本。如果缝隙明显需要重做模型底面。在SuperMap里可以先用“绘制三维面”工具在模型底部画一个贴合地形的面然后和模型做“布尔运算”把底面补上。破洞的处理思路也一样。找到破洞位置用“模型补洞”工具选中破洞边缘线软件会自动生成三角网补齐。不过要注意补洞生成的纹理是默认的灰色和周围真实纹理有色差需要再用材质编辑工具修补。5.2 纹理发白和模糊别忽略光照设置经常有人在社区问“为什么我的倾斜模型在SuperMap里是黑白的或者颜色很暗”这个问题要分两种情况。第一种情况是模型本身纹理正常但在场景里显示得暗。这通常是光照设置的问题。SuperMap iDesktop 9D默认场景有光照但倾斜模型在建模时已经烘焙了光照信息场景里再打一次光模型就变得发暗甚至失真。解决办法是在场景属性里找到“光照”设置把“太阳光”关掉或者把环境光照调到合适亮度。这一点网上教程很少提到但实际效果差异非常大。第二种情况是纹理本身模糊。这通常是OSGB原始数据的问题。倾斜摄影建模时如果照片分辨率不够或者重叠度不足生成的纹理就是模糊的。这种情况下软件层面能做的有限只能通过“纹理替换”功能用高清正射影像贴图来替换部分区域的模糊纹理。5.3 模型修饰编辑顶点与三维体操作SuperMap iDesktop 9D在三维模型编辑方面做得比较完善。“三维体操作”里有“拉伸”“旋转”“缩放”可以修改模型局部的几何形状。对于倾斜摄影场景中常见的“电线杆”“树木”“车辆”等噪点模型可以先用“对象选择”把它们选中再直接删除。这里有个细节倾斜摄影生成的OSGB是“一张连续的网”没有对象的概念SuperMap把它当做一个整体。所以选中的对象可能是一个Tile里的一部分三角网删除后那个区域会留下空洞。我的做法是删除噪点前先记录它所在的Tile编号删除后用附近同名纹理的模型区域做“纹理填充”修复。但说实话如果噪点很多逐个删除效率太低。更高效的做法是回到原始建模软件里在重建前通过“水面约束”“地面约束”等方式把这些地物过滤掉重新生成模型。这也是我在项目启动时反复和航飞团队强调的一点后期处理能解决的问题是有限的前期航拍设计和重建参数才是决定模型质量的关键。6. 单体化把倾斜模型变成可点击、可查询的GIS要素6.1 为什么必须做单体化倾斜模型只是一张“大饼”倾斜摄影模型漫游效果确实炫酷但做GIS的人很快会发现一个问题你点一下模型它什么都没有返回——没有ID、没有属性、没有楼层数因为倾斜模型本质是一张连续的三角网软件不知道你点的是“这栋楼”还是“那栋楼”。这就是单体化的价值。单体化本质上是叠加一层“看不见的矢量面”在模型上每个面代表一个独立的建筑或地物面上挂接属性数据。点击模型时SuperMap通过命中检测找到对应的矢量面再返回面的属性信息。SuperMap iDesktop 9D里的单体化工具分三类面单体化用闭合的面对象来切分模型适合建筑群的外轮廓提取。对象单体化在模型上直接绘制或导入三维对象适合精细到每一栋建筑的独立管理。建筑基底单体化利用建筑的基底矢量面数据快速生成单体化结果适合已有房产测绘数据的场景。日常项目里用得最多的是第三种——因为很多单位手上本来就有建筑基底矢量数据直接套上去就能用。6.2 通过“要素编辑”进行面单体化操作如果你没有现成的建筑基底数据那就得自己在SuperMap里画。操作路径是“三维数据”选项卡 → 要素编辑 → 新建“面”图层 → 在倾斜模型上方绘制建筑轮廓。绘制时有几个实用技巧开启二维半捕捉在编辑器的捕捉设置里打开“捕捉到三维模型”这样鼠标可以捕捉到模型的顶点和边线画出来的面和模型轮廓更贴合。使用“透视”模式辅助绘制切换到透视视角从上往下看模型画建筑轮廓时不会被侧面遮挡。每栋建筑一个面不要为了省事把一排门面房画成一个面。单体化的意义在于独立管理画到一起等于没画。属性表录入画完之后在属性表里录入楼栋号、楼层数、面积、用途等属性。这些属性后续用来做三维查询、统计分析和与业务系统挂接。6.3 属性挂接与模型关联从“看”到“用”的升级单体化完成之后倾斜模型就从“一张大饼”变成了“一栋栋独立的楼”每栋楼都带属性。这一步做完才能做真正的GIS分析比如按楼层数筛选建筑、按面积统计片区容积率、点击楼栋查看产权信息等。SuperMap iDesktop 9D里关联属性的方式有两种直接把属性写到单体化矢量面的属性表里。这种方式简单直接适合快速查询。通过外键关联外部数据库。比如矢量面里存了建筑物唯一编码用这个编码关联到SQL Server或PostgreSQL里的业务表。这种方式适合做业务系统集成因为属性更新不需要重新生成模型。我强烈建议在大项目里使用第二种方式。原因很简单单体化矢量面一旦生成更新它的几何是重活但更新业务属性是轻活。如果属性内嵌每次改数据都要动矢量面如果外挂关联业务系统只需更新数据库就行。7. 常见问题排查我在实践中踩过的坑7.1 模型加载后花屏或闪烁怎么办这是SuperMap iDesktop 9D处理倾斜摄影数据时高发问题尤其在显卡驱动较老或者显存不足的机器上更明显。花屏和闪烁的根本原因是LOD层级切换时的三角网重叠或纹理撕裂处理办法从软到硬有四个梯度更新显卡驱动推荐使用NVIDIA Studio驱动或AMD Pro驱动不要用Game Ready驱动跑GIS软件。在场景属性里调整“LOD切换距离”和“模型缩放比例”让LOD切换更平缓。检查是否开了“深度测试”和“背面剔除”如果设置冲突会导致三角网闪烁。降低S3M缓存纹理压缩质量。高质量纹理虽然好看但在性能不足的机器上会频繁触发LOD切换。7.2 坐标转换后模型跑到海里怎么办这个问题的英文描述是“Model goes to the ocean”在国际GIS社区里也是一个经典笑谈。现象是转换后模型不在原地而是出现在一个看起来完全随机的位置——通常是海里。原因通常是七参数填反了方向。比如你拿到的是“WGS84转CGCS2000”的七参数但在SuperMap里配置的是“CGCS2000转WGS84”方向导致转换结果完全错误。解决方法是检查参数设置把方向反过来。还有一种情况是“椭球转换方法”选错了。SuperMap提供了“布尔莎七参数”“莫洛金斯基”等转换模型不同模型的基准面处理方式不同。如果你的测区不在参数适用范围比如参数是某个省算出来的但你处理的是另一个省的数据结果也会偏。个人经验每次做坐标转换务必保留转换前的数据副本。转换完成后用控制点在场景里验证位置误差超过0.5米的说明参数或方法不对立即停下来检查不要带着错误参数继续往下批量处理。7.3 S3M缓存生成到一半报错中断怎么办S3M缓存生成是倾斜摄影数据处理里最耗时的一步动辄跑几个小时。如果中途报错中断处理起来要有条理。常见的报错原因有三类磁盘空间不足。S3M缓存文件体积是原始OSGB的1.2到1.5倍生成过程中还需要临时空间。建议预留至少OSGB体积3倍的磁盘空间。原始OSGB文件损坏。存储介质损坏或者拷贝中断会导致某些Tile的OSGB文件损坏。这时把报错信息里提示的Tile路径找出来重新从原始数据源拷贝那个文件。软件内存溢出。9D是32位还是64位程序9D版本有32位和64位之分处理大规模倾斜摄影数据务必使用64位版本并且在系统层面开启大内存支持。我一般会在生成S3M缓存前先运行一遍“数据检查”工具把有问题的Tile提前筛出来处理尽量避免中途中断。7.4 模型是彩色的但发布到Web端后变灰这个问题出现在使用SuperMap iServer发布S3M缓存之后。原因是S3M缓存默认包含纹理但发布服务时3D服务配置里“纹理压缩”选项可能被设置成了“无纹理”。解决办法是在SuperMap iServer的管理页面里找到已发布的3D服务编辑其缓存配置把纹理压缩改为“DXT”或“WebP”保存后重启服务。这个问题不影响桌面端显示只影响Web端很多人忽视了这个配置项。8. 性能优化建议大场景倾斜摄影数据处理的硬件与软件调优8.1 硬件配置什么机器才能“扛得住”倾斜摄影数据处理绝对是硬的电脑配置需求。以城市级倾斜数据比如100GB以上OSGB覆盖5平方公里为例我给三个档位的配置建议配置项入门档推荐档高性能档CPUi7 十代以上Xeon W / i9 十三代双路Xeon / Threadripper内存32GB64GB128GB及以上显卡GTX 1660 / 6GBRTX 3060 / 12GBRTX 4090 / 24GB硬盘固态512GB机械2TB固态1TB机械4TB全固态2TBNVMe阵列系统Win10/11 64位Win10/11 64位专业版Server版或Win11工作站版显卡的重要性在这里被很多人低估。SuperMap iDesktop 9D对GPU要求高尤其在做实时漫游、模型编辑、LOD切换时GPU性能直接影响操作流畅度。6GB显存是及格线12GB以上才能说得上顺畅。8.2 软件层面的优化分块处理与分批生成除了硬件软件层面的策略也很关键。我处理超大场景倾斜数据时坚决不用“一次性全量生成S3M”的方式。做法是把测区按网格分成4到8个区块每块单独生成S3M缓存然后再合并。这种做法的优点有三个失败影响面小某一块失败只需要重新处理那一块不用整套推倒重来。调优方便不同区块可以尝试不同的参数配置对比效果后选最优参数再全量跑。内存占用平稳全量跑的时候内存峰值经常把机器干崩分块处理内存曲线平缓得多。8.3 与SuperMap iServer联动桌面端处理服务端发布最终成果总要发布出去给Web端或移动端用。我推荐的流程是SuperMap iDesktop 9D里处理好的数据集和S3M缓存直接通过“数据”选项卡下的“发布服务”功能一键发布到本机iServer。这样一个工作流下来桌面端和Web端显示完全一致不存在二次转换的偏差。对于Web端同时在线人数多的场景建议在iServer里开启“分布式缓存切片”并配合“服务实例多进程”部署能有效分担并发压力。倾斜摄影数据的特点是模型大、请求多、缓存命中率高Web端用S3M的流式传输方式加载比直接拖模型数据集要高效得多这也是我坚持在桌面端就生成好S3M缓存的原因。9. 写在最后从“能显示”到“能用好”的进阶之路我见过不少项目倾斜摄影数据在SuperMap iDesktop 9D里加载出来一片高楼大厦甲方看了很满意觉得项目已经完成了一大半。但实际上从“显示好看”到“真正能用”之间还有很长的路——坐标是否和现有GIS数据严丝合缝模型能否支撑“点击查询楼栋信息”底层的S3M缓存是否够流畅地支撑Web端并发访问这些都是真正体现技术含金量的地方。做了这么多年倾斜摄影数据处理我最深的体会是倾斜摄影数据处理的每一道工序都是在为最终的应用场景做铺垫。航飞时多规划一条航线建模时多勾选一个约束条件处理时多花半小时检查坐标系后面就能省下几天的返工时间。这套工作流跑顺了SuperMap iDesktop 9D不仅是一个数据处理工具完全可以成为整个三维GIS项目的数据中枢。希望这篇分享能给正在跟倾斜摄影数据较劲的朋友们一些参考。后续有时间我会再拆解S3M缓存参数调优和iServer发布配置的具体细节这两个方向也都是实践里踩坑比较多的环节。
返回列表