ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

SuperMap iDesktopX水深变化分布图制作全流程:从数据清洗到分级出图

SuperMap iDesktopX水深变化分布图制作全流程:从数据清洗到分级出图 用SuperMap iDesktopX制作水深变化分布图这件事听起来就是“两个时相数据相减”那么简单真正动手才发现决定成图质量的环节全在数据准备和参数选择上。这篇文章把我从需求整理、数据清洗、插值计算到分级出图的完整流程写出来特别适合刚开始接触冲淤分析、航道维护、水库泥沙研究的朋友参考。我会把容易踩的坑、容易想反的逻辑、以及实际项目中验证过的参数选择思路都放进来希望能帮你少走一段弯路。1. 水深变化分布图到底在算什么先别急着点工具很多朋友拿到两个时期的水深数据第一反应就是直接打开栅格计算器做减法。这个思路本身没问题但有一个隐藏的“符号陷阱”会让人做完整张图才发现结果完全是反的。1.1 测深数据有两种存储习惯差值的含义截然相反海洋测绘和水利行业里水深数据的存储方式并不统一。我实际接触过的项目里常见两种模式正深度模式属性字段里记录的是“水深”即从水面到河床/海底的垂直距离数值通常为正。比如“水深5m”就是水面往下5米到底。负高程模式属性字段里记录的是“水下地形高程”即某个高程基准面以下的负值。比如某点高程为-25.5m表示它在基准面以下25.5m。这两种模式在做差值时的语义正好相反计算方式差值表达式差值 0 的含义差值 0 的含义正深度模式ΔD D新 − D旧水深增加表示冲刷/加深水深减小表示淤积/变浅负高程模式ΔH H新 − H旧高程抬升表示淤积/变浅高程下降表示冲刷/加深我在第一个水深变化项目里就吃过这个亏。当时拿到的是某水库两期库区测深数据原始表格里水深值都是“深度正值”但我在整理时为了做水下地形三维显示手动把深度转换成了负高程后来做差值时没有统一语义直接用高程差去解释冲淤结果把淤积区全部标成了冲刷区。整张图做完之后水库管理方的人一看就说“不对坝前明明是淤积你这图怎么显示冲刷”我才意识到是符号定义出了问题。所以拿到数据后的第一件事不是急着导入SuperMap iDesktopX而是打开属性表看清楚这个字段代表的是“正深度”还是“负高程”。如果两期数据来源不同比如一期来自单波束测深系统导出的深度值另一期来自多波束后处理软件生成的水下DEM很可能符号逻辑不一致。遇到这种情况我建议在预处理阶段就把所有时相统一为同一种语义再加一个字段标注清楚比如“depth_positive”或者“elevation_negative”后续所有计算都在这个统一字段上做。1.2 为什么必须走“散点→栅格→栅格相减”这条路有人可能会问既然两次测深都有散点坐标能不能直接找同名点做差理论上可以但实际几乎不可能。两次测量的点位不会重合不同年份的测线布置、船速、采样间隔都不一致根本无法做到点对点匹配。就算用了最近邻匹配点间距不同也会导致极大的随机误差。所以标准做法是先把两个时相的散点分别插值成连续栅格再在同一个格网坐标体系下做像元级相减。这个“栅格化”过程相当于把两期稀疏、不齐的观测数据统一到同一张规则网格上每个像元都有明确的深度估计值差值自然就能算出来。这也是整个工作流的核心逻辑一切操作都是为了“让两期栅格可比”。后续的插值参数、输出范围、像元大小全部围绕这个目标展开。2. 数据准备测深散点清洗、坐标与基准统一水深变化分析的精度上限在数据进入SuperMap之前就已经决定了。插值、计算、出图都是执行层面的活儿真正决定成果可信度的是原始数据质量。2.1 测深散点的常见来源与格式我先说下我实际接触过的数据来源这样你在拿到类似资料时心里有数单波束测深仪沿测线逐点采集点密度受测线间距限制通常横向间距几十到上百米纵向沿航线方向点很密。多波束测深系统一条测带覆盖一定宽度点密度高数据量大但边缘波束噪声也多。机载激光雷达测深适合浅水区点分布均匀但受水体浑浊度影响大。这些数据被整理成Excel、CSV或SHP文件交过来是家常便饭甚至有直接拿CAD地形图带高程注记的。导入SuperMap iDesktopX时无论哪种格式最终都要整理成“点坐标深度字段”的结构。如果是CAD注记你得先转出文字属性再关联高程值这部分工作量往往比想象中大建议前期就和数据提供方确认好交付格式能省下大量时间。2.2 重复点、异常值、陆地点三步清洗清洗这一步不能省。我见过太多“看起来能用一统计全是问题”的数据。第一步是查重复点。同一坐标出现多条记录可能是不同测次、不同设备或者后处理软件重复输出导致的。处理方法看场景如果是同一时刻的重复观测取深度平均值更稳妥如果是不同年份的数据被误合到一个文件里就要靠时间字段区分或者重新向数据方索取原始分件。2019年我处理某航道数据时发现一个SHP文件里有两万多对坐标完全相同的点排查后才知道是拼接数据时把旧测线和补测线叠在了一起如果不清理插值结果会在这些位置出现明显的“台阶”。第二步是查异常值。做法很朴素在SuperMap里把点云符号化显示用透明度着色肉眼扫一遍是否有孤立的、不合群的点。更定量一点的方法是把深度字段排序统计最小值和最大值和测区已知水深范围做对照。比如一个内河航道测区历史最大水深不超过15m结果关于成果里出现了个-78m的点那基本可以确定是数据错误或者坐标搞错了直接删掉比留着插值安全得多。第三步是剔除陆地点。这个容易被忽略。很多测深成果的范围会略超出水边线把部分岸上的点也包进来或者CAD地形数据里混合了陆上高程点。这些点如果不剔除在插值阶段会把岸上地形拉进河道里导致靠岸处的水深出现假性的“陡变”。我的做法是用岸线或干出线做范围裁剪先在SuperMap里加载岸线面数据用“按多边形裁剪”功能把散点约束在有效水域内。2.3 水平坐标与垂直基准最容易翻车的地方这是数据准备阶段最重要的两个检查项。水平坐标系统一。不同年份的测量项目可能使用了不同的坐标系有的是经纬度有的是高斯-克吕格投影有的甚至用了当地独立坐标系。如果两期数据坐标系不一致直接插值会导致两期栅格在空间上错位差值图边缘会出现一整条夸张的“冲刷带”或“淤积带”看不出真实地形变化。在SuperMap iDesktopX里处理时我通常先把所有数据统一到同一个投影坐标系比如高斯-克吕格3度带或UTM做法是用“数据”菜单下的投影转换工具给SHP源文件定义目标坐标系后执行转换。为什么建议用投影坐标系而不是经纬度因为插值算法需要计算平面距离经纬度在不同纬度上的尺度不一样直接拿来算会导致插值结果畸变。垂直基准统一。这个更隐蔽。水深测量的高程基准可能有好几种国家高程基准、理论深度基准面、当地平均海面等。理论上不同年份的测深成果只要都做了潮位改正且归算到同一基准面差值才是真实地形变化。但实际项目中经常出现两期数据一个用1985国家高程基准、一个用当地理论深度基准面的情况两者之间可能差一个固定的常数表现在差值图上就是一个覆盖全区的“整体冲淤偏移”。我遇到这种情况时会先查项目报告中的基准说明再对比两期数据在深水区的差值分布——如果整体均值不是接近0而是稳定偏向某一侧就要警惕基准不一致。不过必须提醒做基准改正要有依据不能凭感觉加减一个常数最好让数据提供方给出明确转换公式。2.4 两期范围与点密度的评估进入插值之前还需要做一次“范围体检”。做法很简单在SuperMap里把两个时相的点数据叠加显示看一下重叠区域占比。若重叠区过小比如只有测区面积的50%那差值成果就只能解释这50%范围内的变化其余区域的结果不要强行出图否则容易误导决策。点密度差异也是个需要提前心里有数的问题。我处理过一个案例2020年一期用的是单波束测线间距大约60m2023年一期换成了多波束点密度极高。理论上多波束数据精度更高但插值后两期栅格的分辨率如果都按最密的测区来设置单波束那一期就会因为局部点太少插值出很多不可信的“假地形”。这种情况下建议像元大小按较疏的一期中位点间距来确定让两期处于同一信息密度水平线上再做差值才公平。3. 散点到栅格插值方法选型与像元大小确定数据整理干净之后就进入核心环节插值。这一步直接决定差值栅格的质量。3.1 插值方法怎么选IDW、克里金、张力样条对比SuperMap iDesktopX的空间分析模块里提供了多种插值方法实际项目中我常用的有反距离加权IDW、克里金和张力样条三者的特点差异非常大方法原理优势劣势适用场景IDW以距离平方倒数加权平均计算快、参数少、容易解释会在数据点周围形成“牛眼”点密度较均匀的常规测区克里金基于变异函数拟合空间自相关能估计误差表面平滑自然参数多新手容易跑出不可靠结果数据质量较好、测区地形连续张力样条按张力系数生成平滑曲面保留细节适合等深线趋势外推不可靠对异常值敏感水深梯度大、需要细节保留我的选型经验是常规航道冲淤分析IDW和克里金都够用重点不是选哪种而是保证两期数据用同一种方法、同一套参数。因为插值方法的不同会带来系统性的表面差异——比如IDW倾向于在点周围形成局部高值克里金则会稍微平滑掉局部起伏如果两期用了不同方法差值图里会混入“方法差异”而不是纯粹的“地形变化”。如果拿不准选哪种我建议先从IDW入手。它最直观也最好解释。等跑通一遍流程、确认结果方向无误之后再试克里金对照看差异。SuperMap中的操作位置在“分析”模块的“栅格分析”下选择插值功能设置好输入点数据集、深度字段、像元大小和搜索半径就可以执行。张力样条我一般在处理等深线散点数据时才会用比如数据本身来源于旧海图数字化、点间距很不规则的情况它能更贴近原始等深线的走向。但张力样条绝对不能外推输出范围稍微超出数据覆盖区边缘就会产生无法解释的大幅波动这点务必注意。3.2 像元大小怎么定不能随心所欲像元大小栅格分辨率是插值环节最关键的参数之一。太小插值会在稀疏区产生大量不可信的假凹凸太大又会磨掉真实的水深变化细节。我的经验公式是像元大小取平均测点间距的1/3到1/2。如果测线间距约60m像元设20m左右比较合适如果点间距只有20m像元设5-10m更合理。更定量一点的做法是利用SuperMap或第三方统计工具做一次最邻近点距离分析取所有点到最近邻点的距离中位数作为基准间距再用这个基准间距除以2到3。为什么不能直接按最密的数据来设像元我曾做过一个对比实验同一组单波束数据一个用5m像元一个用20m像元两期差值结果差异非常大。5m像元的差值图在稀疏区域出现了大量“颗粒状冲淤”看起来变化剧烈实际上那些位置连原始测点都没有完全是插值外推出来的结果。20m像元的图反而干净得多。所以在做水深变化这种需要两期对比的分析时宁可牺牲一些分辨率也要保证每一期栅格都有足够的数据支撑。3.3 插值范围必须让两期栅格完全对齐这里有一个很多人容易忽略的细节插值输出范围一定要手动指定为“两期测区的公共范围”而不是让软件默认按各自测区范围输出。如果一期测区A范围大、另一期测区B范围小两期栅格的范围和行列数不一致后续做差值时要么系统报错要么边缘产生大范围的NoData或无值区。我的做法是先在SuperMap里用两个点数据集的公共外接矩形或自己画一个覆盖重叠测区的多边形作为统一的输出范围两期插值都用这个范围。同时保证像元大小一致这样两期栅格的行列数和像元原点完全对齐栅格计算器可以直接做减法不会出现因网格错位产生的条带噪声。3.4 插值结果怎么质检插值完成后不要直接进入下一步先看两个栅格的统计信息最小值、最大值、均值。和原始散点深度统计做对比如果插值后的最小、最大值超出了原始数据的合理范围说明插值过程出现了外推异常需要回查搜索半径或张力系数等参数。我还会在SuperMap里给插值栅格叠加一个山体阴影效果快速目视检查表面是否有沿测线方向的条带状伪影。如果看到明显的“排骨纹”很可能是原始测线间距过大、插值搜索半径不够造成的需要加大搜索半径或改用克里金重新插值。4. 差值计算与异常值过滤栅格计算器里的关键细节当两期插值栅格就绪就可以做差值计算了。4.1 表达式与输出类型在SuperMap iDesktopX的栅格计算器栅格代数里表达式很直接。以正深度模式为例Delta Raster_2023 - Raster_2020需要注意的一点是不要把上标搞反。我习惯在计算前先在属性表或栅格信息里确认两个栅格的名字用“新时相减旧时相”的语义定义来写表达式这样得到的Delta正负含义就是“最新一期相对早期”的变化。输出数据类型务必选浮点型float别选整型。水深变化量往往是小数值比如-0.3m、0.8m如果输出为整型所有小数都被取整变化量小于0.5m的区域会被直接抹成0整张图会丢失大量细节。4.2 差值栅格里的NoData和“假冲淤”差值完成后图面上经常会出现两类问题一类是NoData区另一类是明显违背常理的“假冲淤”。NoData区的来源大多数是两期栅格范围不完全对齐。这就是前面强调统一输出范围的原因。如果此时已经生成了带NoData的差值栅格处理方法有两种一是回到插值步骤重做用统一范围重新插值二是用公共测区多边形裁剪差值栅格直接把范围外的NoData切掉。我推荐第一种因为直接在差值结果上裁剪虽然可以去掉NoData但裁剪边界处会受到边缘效应影响出现一圈虚假的大幅变化值。“假冲淤”的典型表现是在测区边缘或测点稀疏区差值瞬间跳到几米甚至几十米。这种区域不是真实的地形变化而是插值外推在两次计算中的误差叠加。比如一期数据在某个角落有测点另一期在那里没有测点两期插值在角落上的估计值都可能非常不可靠差值自然就失控了。对于这类区域我的处理习惯是用一个“有效数据覆盖缓冲区”来约束成果范围。也就是说把两期测点的公共覆盖区域向外缓冲一定宽度比如一个像元大小然后裁剪差值栅格缓冲区之外的结果一律不作为有效结果。这样虽然会损失一小部分边缘信息但保留下来的区域可信度明显提高。4.3 差值噪声是否要滤波差值栅格跑完噪声是难免的。尤其当原始点云本身有随机测量误差时差值图上会出现密密麻麻的小幅正负跳变视觉上很“花”。要不要做滤波我的建议是先用图层属性里的直方图工具看一下差值分布。如果高频噪声主要集中在±0.2m这种小量级范围内而管理者关心的阈值是0.5m以上的冲淤变化那么不需要特意滤波靠分级符号化就能把噪声压下去。如果噪声已经很夸张比如出现了大量±2m的碎斑那问题不在于滤波而在于原始数据或插值参数可能有误——这时候优先回到原始数据质检而不是尝试用滤波掩盖问题。如果确实需要做平滑我通常使用栅格分析里的低通滤波功能核大小选3×3或5×5即可。注意滤波幅度不要太大否则真实存在的窄条状冲刷带会被磨掉冲淤形态失真。4.4 顺带算一下总冲淤量很多项目出图只是第一步报告里还要求“总冲刷量”“总淤积量”之类的统计数值。这部分在SuperMap里也能直接算出来对差值栅格做分区统计或者把Delta大于0的像元和小于0的像元分别提取出来统计各自的面积和体积。体积的计算思路是像元面积乘以深度变化量再对全区求和。我在某航道项目里就是用这个方法算出两个年度之间总淤积量约12.6万立方米这个数字后来直接写进了维护疏浚的招标文件里比单纯一张图有说服力得多。5. 分级配色与制图整饰让冲淤变化一眼可辨差值栅格算好之后“图”还没完成接下来是符号化和制图整饰。这一部分直接决定了图件能不能被业务人员和管理者看懂。做水深变化分布图最忌讳的就是把连续色带往图上一铺就交差。5.1 为什么分级渲染比连续色带更实用连续色带在视觉上很炫但如果差值数据里有噪声连续色带会把微小波动放大成密集的杂色读者很难抓到主趋势。我见过一张用连续蓝黑渐变渲染的冲淤图打印出来之后底色几乎全花领导和业务人员都看不出重点在哪最后不得不重做。所以水深变化分布图的基本策略应该是分级渲染把连续的变化量划分成若干区间每个区间用一种颜色或者色阶段的色块表示。分级的好处有两个一是压制小幅噪声让主要冲淤区清晰呈现二是方便图例判读读者可以直接按色块对着图例读出“这个区域冲刷了0.5到1米”。5.2 分级方法怎么选对称分级是核心分级的方法有等间距、分位数、自然间断点Jenks等。实际做水深变化图时我强烈推荐以0为中心做对称分级。原因很简单水深变化有正有负0是冲刷和淤积的分界线。如果按默认的等间距或分位数自动分级0值不一定落在分级边界上同一个颜色区间里可能既包含了轻微冲刷又包含了轻微淤积图面语义就乱了。对称分级就是把分级阈值设为-3、-1.5、-0.5、0、0.5、1.5、3这类围绕0对称的断点这样正负两侧的级数、颜色深浅都是一一对应的看图的人不会产生误解。如果差值数据的分布严重偏态比如全区大部分是轻微淤积只有局部强冲刷那么等间距对称分级会导致“淤积一侧颜色挤在一起冲刷一侧却只有一两个像元”。这种情况下可以用分位数分级法先看看数据分布再手工调整分级阈值必要时把变化较大的区间拆细一点变化小的区间合并一些。下面是我在某航道项目里用过的分级示例可作参考水深变化量m语义推荐配色 -3.0显著冲刷大幅变深深蓝色-3.0 ~ -1.0中等冲刷蓝色-1.0 ~ -0.5轻微冲刷浅蓝色-0.5 ~ 0.5基本稳定浅灰/白0.5 ~ 1.0轻微淤积浅黄1.0 ~ 3.0中等淤积棕色 3.0显著淤积大幅变浅深棕红色5.3 配色逻辑不要用红绿对比传统地理制图习惯里红色和绿色是常用的对比色但在水深变化图上我不建议直接用纯红配纯绿。原因有两个一是红绿色盲人群无法区分二是绿色在河流地形图上常被联想为陆地或植被和水深语义容易冲突。我更推荐“蓝-棕”体系蓝色系代表冲刷加深棕红色系代表淤积变浅灰白色代表基本稳定。这套配色在水深类图件里接受度很高打印成黑白灰度图时也能区分出深浅梯度。在SuperMap iDesktopX里做栅格分段专题图时选好分段方式和颜色方案即可注意把“NoData”单独设置成透明或淡色避免大片黑色块干扰判读。5.4 制图整饰与导出设置完成符号化后把成果送进布局窗口做整饰。必须要有这几种要素图名、图例含单位“m”、比例尺、指北针、经纬网或公里网、坐标系和基准说明、数据来源与制图日期。水深变化图经常作为工程报告的附图这类信息一旦缺失图件的权威性会大打折扣。特别提醒图例设置不要把每个分级的色块做得太小打印出来容易糊。图例标题建议写成“水深变化量m”并加一行小字说明“正值表示淤积变浅负值表示冲刷加深”。别看这一行字不起眼很多看图人就是靠它理解整张图的。导出时如果用于打印或插入报告分辨率不要低于300dpi建议导出TIFF或PDF格式如果是放到PPT里汇报导出PNG即可。但无论哪种格式都要在导出前预览一遍整体效果重点检查图例是否有遮挡、色块是否过细、边界线是否清晰。6. 实测中我踩过的坑与几条保命经验最后这部分我把自己做水深变化图过程中真实踩过的坑写出来每一条都是花了不少时间才解决的希望能帮你提前避开。6.1 坑一符号反转却到出图才被发现这是最典型、也最容易犯的错。具体表现是图出来后明明应该是淤积区的航道主槽显示成了冲刷色明明应该是下游冲刷区却显示成了淤积。我后来排查才发现原始水深数据一个时期是“正深度”另一个时期是“负高程”两者相减的语义完全反了。这种错误之所以隐蔽是因为计算过程完全不报错软件也不会自动判断正负号语义。唯一的防线就是在插值前把两个时相字段的符号逻辑写出来核对一遍甚至做一个手动抽查选几个已知冲淤趋势的控制点手工算一下差值确认和预期方向一致后再继续。6.2 坑二两期坐标系不一致差值图边缘出现整片“假冲刷”某个项目里两期SHP数据在SuperMap里叠加显示时肉眼几乎看不出偏移但差值图边缘出现了一条宽度几十米的“冲刷带”。我一开始以为是插值边缘效应裁剪后还是存在。后来检查各期SHP的元数据才发现两期数据一个定义的是CGCS2000_3_Degree_GK_CM_111E另一个是WGS_1984_UTM_Zone_49N。虽然两者在局部区域的坐标值差异可能只有几十米但插值以后这种系统偏移就直接转化成了边缘大面积的值跳变。这个坑的教训是任何两期数据参与对比计算前必须核对坐标系和投影参数是否一致不要只看视觉上“叠得差不多”。6.3 坑三两期插值参数不一致差值图出现“波纹”还有一次出图差值栅格表面出现了一圈一圈的同心圆状波纹看起来像某种系统性误差。排查后发现两期插值虽然都用了IDW但一期搜索半径设了300m另一期设了500m表面光滑度完全不同两期相减后这种平滑程度的差异被放大成了类似波纹的图案。从此之后我给自己定了一条规矩参与对比的所有时相数据必须使用同一套插值模板包括插值方法、搜索半径、像元大小、输出范围。在SuperMap里可以先把参数记下来或者通过脚本批量处理避免手误导致参数漂移。6.4 几条保命经验第一正式出图前先圈一个小范围试算。选一个已知冲淤趋势明显的区域比如航道弯道或坝前淤积区先用小范围数据跑一遍完整流程确认符号、量级、空间分布都和实际认知一致再扩大到全区。这样可以避免拿着全区错误结果返工。第二给每次插值和计算留一份参数记录。我用最简单的办法在工程文件夹里放一个“处理记录.txt”写下像元大小、插值方法、搜索半径、坐标系统、数值转换规则这些关键信息。三个月后或者下一年再做一期数据时照着记录执行就能保证所有期次成果风格统一、指标可比对后续趋势分析帮助非常大。第三成果栅格一定要带坐标系和NoData设置一起保存。SuperMap中可以把栅格保存为通用格式同时导出时勾选写入坐标信息。我见过太多人只保存了栅格文件、丢了坐标文件等下次换软件或者换电脑打开整张图位置全乱又要重新配准。第四保留一份可编辑的工作空间。制图整饰完成后除了导出的成图JPG/PDF工作空间一定要另存一份。因为大概率过两天会被要求“把某个区域的色带调一调”“把某条等深线叠加上去看看”如果没有保留可编辑环境就得从插值开始重来一遍。做完以上这些一张可以交给业务用户直接用、经得起复核的水深变化分布图才算真正落地。个人习惯上我会在每次完成一个新期的水深变化图后把上一期和这一期的阈值、色带、图例存成同一套模板。下一期只要套用模板出图速度会快很多不同年份的图件放在一起对比也更直观。做这种多期对比分析稳定统一比追求每版的“花哨”重要得多。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表