ARTICLE DETAIL

资讯详情

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

ArcGIS克里金插值:数学建模空间分析必备实操指南

ArcGIS克里金插值:数学建模空间分析必备实操指南 每年数学建模竞赛出题只要题目里出现“监测点”“采样点”“空间分布”这几个字最后基本都绕不开插值。真实比赛里我见过太多队伍拿反距离权重一顿操作交差结果审稿人评委一问误差分析就哑火。如果你也想在比赛里把空间插值这块做得体面一点用ArcGIS做克里金Kriging插值可以说是最稳的一条路——理论有底、操作不复杂、出图还专业。这篇内容我会从软件安装后的第一步开始讲包括原理、数据准备、实操流程、参数调优、论文配图一个不落适用各类数学建模竞赛也适用课程设计、科研打杂。1. 为什么比赛里一提到空间插值评委就默认你会克里金1.1 空间插值到底在解决什么问题先捋一下问题本身。我们在竞赛里遇到的很多数据本质上都是“点数据”比如某条河的若干个水质采样点、某个区域几十个气象站的降水量、若干土壤采样点的重金属含量。但最终要的评价对象往往是一整片区域比如整个流域、整座城市、整块农田。这时候问题就变成我只有几十个点上的实测值怎么推断整个面上每一点的值这就是空间插值。它干的事情就是根据已知采样点的数值按照某种空间规律推算未知位置的数值最后生成一张连续分布的栅格图。这个栅格图可以继续做后续分析也可以直接作为论文里的结果图。竞赛里如果遇到这类问题插值方法基本都是定死的考点你不仅要给出结果还得说清楚为什么用这种方法、结果可不可靠。这时候克里金就比反距离权重、样条函数友好得多——它自带一套误差评估体系能在结果旁边理直气壮地附上“预测误差分布图”这是评委非常吃的一套东西。1.2 克里金凭什么压过反距离权重和样条反距离权重IDW的逻辑很简单离得越近影响越大所以权重就取距离的倒数。它的问题在于算法本身不提供任何关于预测不确定性的信息而且插值结果里会出现明显的“牛眼”现象——以每个采样点为中心往外一圈圈扩散很不自然。样条函数的问题则相反它在追求曲面平滑时经常会把数值推得超过实际观测范围比如污染浓度插出来一个负值评委看到这种图印象分基本就没了。克里金不一样它的核心思路其实分两步第一步是回归把区域内数值的相对趋势拟合出来第二步是加权用半变异函数刻画剩余部分的空间相关性再按最优线性无偏估计去算待插点的值。好处是克里金能给出每个预测位置的方差也就是置信度这是别的插值方法做不到的。在数学建模竞赛场景里这个“方差面”就是你的加分项。评委看你不仅插出了结果还能给预测质量打个分至少说明你理解这个方法而不是纯套工具。1.3 数学建模竞赛中选ArcGIS而不是Python自写的理由我知道现在很多参赛队喜欢用Pythonsklearn里也有插值相关功能还有pykrige这种专门的克里金库。但说实话在比赛的高度紧张状态下用ArcGIS做克里金有几个实打实的好处第一是地统计分析模块里已经内置了完整的克里金算法包括普通克里金、简单克里金、泛克里金、指示克里金等不需要你自己调参实现矩阵求解省下的时间非常可观。第二是ArcGIS的交叉验证是自动完成的而且可视化做得很好——预测误差图、QQ图、半变异函数云图都直接展示评委看的不是代码是你的结果分析和图表。第三是出图专业度。论文最终评的是排版和图表质量ArcGIS布局视图里加图例、比例尺、指北针几步就能出一张规范的空间分布图比用matplotlib调半天坐标轴效率高多了。当然Python在重复计算和批量处理上有优势但那是进阶玩法。数学建模比赛里先把ArcGIS这条路跑通比什么都实在。2. 上手前必须想明白的克里金原理2.1 距离不是唯一空间自相关与半变异函数如果你完全不了解克里金我给你一个生活化的类比。假设你在一个小镇上估计房价你知道有几套房子的成交价一个在地铁站旁边一个在公园附近一个在老破小集中区。现在有套房子位置在中间偏地铁站一点你怎么估它值多少钱直觉告诉你地铁站旁边那套房的价格应该对它有较大参考价值老破小那套参考价值就稍弱。这种“距离越近影响越大”的特性在空间统计里就叫空间自相关。克里金做的事情就是把这种相关性用数学函数定量刻画出来。这个定量刻画用的工具叫半变异函数Semivariogram。给定一个距离h半变异函数的值γ(h)刻画的是所有距离为h的点对之间的值差异程度的平均水平。点对距离越近γ(h)通常越小说明空间上相近的事物确实更像。实际操作中ArcGIS会自动计算所有点对的距离和半方差并画出一张散点图然后拟合一条理论曲线。这个过程你看不懂细节没关系只要知道ArcGIS给你拟合的这个模型是后面计算权重的地基就行。最常用的理论模型做到心中有数。2.2 克里金的几个变体普通、简单、泛克里金区别克里金家族名字很多但竞赛里你只需真正搞懂普通克里金Ordinary Kriging最多再看看泛克里金Universal Kriging就行。它们的区别在于对区域变量均值的假设方式简单克里金Simple Kriging假设全场均值已知是一个固定常数。这个假设在真实数据里几乎不成立所以用得少。普通克里金Ordinary Kriging假设均值未知但恒定。这个最常用因为多数采样数据在大尺度上没有明显趋势可以看作一个未知恒定均值加上空间相关波动。泛克里金Universal Kriging允许均值随空间位置变化比如有整体的坡向趋势。如果数据有明显的总体趋势比如从西北向东南递增用泛克里金会更合适。ArcGIS地统计向导里会让你选类型我的建议是先看数据的趋势。在ArcGIS里用“趋势分析”工具快速看一眼如果趋势不明显直接用普通克里金。如果明显先用泛克里金或者对数据做一阶趋势移除具体操作我后面会展开。2.3 关键参数解读块金、基台、变程、搜索半径半变异函数理论模型里有几个参数是ArcGIS界面里会直接出现的理解了它们你才算真正懂克里金块金值Nugget是距离为0时的半方差。理论上距离为0时事物的值应该完全一样但在实际中由于测量误差或者小于采样尺度的空间变异距离为0的点之间也可能有差异这个差异就是块金。块金越大说明数据里随机噪声占比越高。基台值Sill是半变异函数随着距离增大而稳定下来的那个平台值它代表区域内全部方差。块金到基台之间的差距叫偏基台值Partial Sill代表空间结构引起的方差。变程Range是半方差达到基台时对应的距离。超过这个距离点与点之间就不再相关。变程之外的点对插值基本没有帮助。这个参数非常关键它直接决定了你有多少个点真正参与某个位置的预测。搜索半径则与变程密切相关。ArcGIS默认会在变程范围内找邻居点但你也可以手动设置搜索半径、最多邻居数、最少邻居数。这块在实操里要调我后面有专门说明。3. 数据准备50%的坑都在这一步3.1 采样点数据的标准格式很多参赛队拿到Excel数据就往ArcGIS里拖结果要么点导不出来要么字段全是乱码要么插值结果是个“孤岛”。这些问题的根源几乎都在数据准备阶段。ArcGIS做克里金输入数据最推荐的方式是Excel表格然后通过“添加XY数据”转成点要素。Excel表里必须有至少三列X坐标经度或投影坐标X、Y坐标纬度或投影坐标Y、Z值你要插值的属性值。比如你做土壤铅含量插值Z值列就是Pb含量这一列。有几点硬性要求字段名尽量用英文或者拼音不要用中文。ArcGIS对中文属性的兼容性这些年有所改善但还是不省心。Z值列必须是数值类型不能有文本。Excel里如果某一行是文本字符导入后字段会变成字符串克里金直接报错。数据不能有大量空值。个别空值可以处理但如果某列有一半是空的建议换指标或者填充。不要有完全重复的坐标点即两个样点完全重合。这会导致半变异函数计算时出现0距离点对某些版本会直接报“Duplicate observations”警告。3.2 添加XY数据与坐标定义在ArcMap里操作路径是这样的打开ArcMap菜单栏点“文件”→“添加数据”→“添加XY数据”。在弹出的对话框里选择那张Excel表指定X字段和Y字段然后在“坐标系”一栏里选好坐标系统。这里我先提一个最常见的错误很多人的X、Y字段填反了把纬度填到X经度位置上结果所有点跑到海里去或者完全乱掉。关于坐标系要记住经纬度数据用的是地理坐标系比如WGS84单位是度。如果你的Excel里存的是经纬度就选WGS84、CGCS2000等地理坐标系如果你的数据已经是投影坐标比如UTM坐标那就选对应的投影坐标系。还有个细节不是所有坐标都叫X、Y。有些数据表里叫Easting和Northing或者叫经度、纬度。经纬度对应关系是经度 X纬度 Y。我在比赛现场真的见过有人把这两行写反最后图全乱。添加完成后ArcMap会在图层列表里出现一个“事件”图层。记得右键把它“数据”→“导出数据”成shp文件或者要素类。如果不导出后面很多工具可能识别不了这个临时图层这是新手的经典卡点。3.3 投影坐标转换为什么要从“度”换到“米”这是克里金操作里非常关键但容易被忽略的一步。克里金计算的核心是“距离”而距离必须要有真实的单位才有意义。如果你的数据还停留在经纬度地理坐标系坐标单位是度那你计算出来的“距离”是度与度之间的间隔不是实际的距离。两个点之间的弧长会因为纬度位置不同而变化这会让克里金的变程、邻居搜索全部失真。解决办法是在ArcToolbox里做投影转换数据管理工具 → 投影和变换 → 要素 → 投影Project。选择一个适合你数据范围的投影坐标系比如WGS 1984 UTM Zone 49N适合中国中东部或者Gauss-Kruger相关投影带。这里额外解释一个高频困惑“定义投影”和“投影”到底什么区别。定义投影是给一个没有坐标信息的图层声明它的坐标系不会改变坐标数值投影转换是把坐标值从一套坐标系换算到另一套坐标系点数会变地图形状会变。做克里金之前先检查数据是否已经正确投影了没有投影的要做投影有投影但单位是度的仍要做投影转换。3.4 采样点分布快速检查数据导入、投影完成之后别急着插值。先花两分钟检查采样点的空间分布情况。打开图层属性→符号系统选“分级符号”用Z值字段做一下分级显示。这样你能直观看到监测数值的空间高低分布。如果高值点都挤在一个角落低值点挤在另一个角落那插值很容易出现“局部极端”的情况后面要多留意搜索邻域的设置。还要检查采样点的数量。个人经验是少于20个点做克里金基本没有说服力评委很容易质疑结果的稳健性。30个以上相对靠谱50个以上最好。如果点太少考虑用数据变换或者换用反距离权重做对比至少让结果看起来更谨慎。再检查一下空间分布是否均匀。如果所有点都集中在研究区中央边界几乎没有控制点那么边界区域的插值结果几乎全凭外推误差极大出图时边界部分很可能失真。这种情况下要么补充数据要么在论文里明确说明插值有效范围是内核区域。4. ArcGIS克里金插值完整实操地统计分析向导全流程4.1 第一步启用地统计分析模块现在的ArcGIS 10.x系列地统计分析模块默认可能在安装时没有完全激活。打开ArcMap之后先检查一下菜单栏“自定义”→“扩展模块”很多汉化版本里叫“扩展模块”或者“Extensions”在弹出的列表里找到“Geostatistical Analyst”把勾打上。如果不勾选这个后面打开地统计向导时会显示灰色不可用这一条我见过太多人卡住。勾选之后再在“自定义”→“工具条”里勾选“地统计分析”界面上会出现一条地统计工具条有“地统计向导”、“半变异函数/协方差建模”等按钮这就是我们要用的工具。另外提一句如果你用的是ArcGIS Pro操作逻辑不太一样是在“分析”选项卡里找到“地统计”或“插值”等工具。本文以经典的ArcMap 10.8为准Pro用户可以参考原理操作上大同小异。4.2 第二步打开地统计向导与参数配置准备工作搞定之后右键点击已经投影好的点图层选择“地统计分析”→“地统计向导”。或者也可以直接点地统计工具条上的第一个按钮“地统计向导”。弹出的向导第一页会让你选择输入数据图层和属性字段。数据图层选你那个点shp属性字段选你要插值的指标列指标体系里如果有单位后面出图时注意保留。这一页上面的“插值方法”列表里往下拉找到“克里金法”点选它。注意ArcGIS的克里金在向导里会再让你细化克里金类型普通克里金、简单克里金、泛克里金数据变换无、对数、Box-Cox等趋势移除无、一阶、二阶如果你的数据分布比较偏态比如污染物浓度经常出现个别异常高值建议在“数据变换”里选“对数Log”这会压低极值的影响。判断数据是否偏态可以先在ArcGIS里用“探索数据”→“直方图”功能看一眼如果直方图严重右偏就选对数变换否则选“无”。趋势移除方面如果数据从整体上看有方向性递增或递减的趋势可以选一阶趋势移除。判断方法是“探索数据”→“趋势分析”如果三维视角里能看到明显的倾斜面就处理如果数据点杂乱无章趋势移除选无就行。到这里点击“下一步”进入半变异函数相关设置界面。4.3 第三步半变异函数模型的拟合进入这个界面后你会看到左侧是半变异函数云图右侧是模型拟合曲线。这是克里金里最有技术含量的一步也是最容易产生困惑的地方。界面上有一个“模型类型”下拉框里面有球面Spherical、指数Exponential、高斯Gaussian、稳定Stable等常见模型。理论公式我就不一一列了直接说我的选型经验大多数竞赛数据用球面模型或者指数模型都能得到不错的结果。球面模型的变程效应更明显指数模型在短距离上更加平滑高斯模型适合空间连续性很强的数据比如高程。判断模型拟合得好不好在ArcGIS这个界面里主要看两个东西一是对应曲线是否贴合散点云图的大致趋势二是“预测误差”面板里的几个指标这是跨模型的比较标准。预测误差指标里重点关注“标准均方根预测误差”Root-Mean-Square Standardized Error是否接近1以及“平均标准化预测误差”Mean Standardized Error是否接近0。如果标准均方根远大于1说明模型的预测方差被低估了数据里变异性比预期大如果明显小于1说明方差被高估。还有一个官方叫法“平均预测误差”Mean Error应该接近0这是无偏性的体现。实际操作中我通常会把球面、指数、高斯三个模型各跑一遍对比“均方根误差”RMS Error最小的那个再用“标准均方根”最接近1的那个做最终选择。两个指标出现矛盾时以空间分布合理性为准。关于“步长”Lag SizeArcGIS默认会根据数据范围自动计算但你可以手动改。经验上步长取研究区最大跨距的十分之一到五分之一比较合适步长太小会导致拟合曲线波动大太大则会丢失细节特征。我一般保留默认值先看一下拟合效果再微调。4.4 第四步搜索邻域设置点击下一步进入“搜索邻域”设置页面。这个页面解决的问题是计算某个位置的预测值时周围哪些点可以参与、各给多大权重。界面里有几个核心参数“邻居数”最大邻居数和最小邻居数。默认一般是最大10、最小4。“扇区类型”可以选1个扇区、4个扇区、8个扇区。如果采样点分布不均匀建议选4个或8个扇区让邻居点更均匀地分布在不同方向避免某个方向的点被全部排除或过度集中。“搜索半径”可选“可变”或“固定”。一个月固定半径会把这个范围之外的点全部排除适合研究区范围明确且点均匀的情况可变半径是保证取到指定数量的邻居点适合点密度不均的情况。我个人通常选“可变”。如果你发现插值结果里出现异常的突起或凹陷也就是所谓的“牛眼”多半是邻居点数量太少参与计算的样本太少导致局部权重失衡。这时候把最大邻居数往上调比如调到16、24效果通常会明显改善。扇区数增加也有助于提升方向上的稳定性但会让运算变慢比赛数据量小问题不大。4.5 第五步交叉验证与结果判断向导走完之后ArcGIS会弹出一个“交叉验证”结果窗口。这是最应该截图保存进论文的地方。交叉验证的原理很简单每次拿出一个采样点用剩下的所有点去预测这个点的值然后把预测值和实测值放在一起比较遍历完所有点后得到一套误差评估指标。这个窗口里有几个图表值得注意一个是“预测值 vs 实测值”散点图理想情况下散点应该围绕1:1对角线分布。如果散点明显偏离对角线说明存在系统性偏差比如低值被高估、高值被低估。另一个是“误差正态QQ图”看误差是否满足正态分布假设。克里金有一个隐含假设是误差正态性虽然对结果敏感性不强但如果你看到QQ图严重偏离直线可以考虑用对数变换重新建模。还有一个草地表格展示的核心统计指标也就是前面提过的“平均预测误差” “均方根误差” “平均标准误差” “平均标准化预测误差”“标准均方根预测误差”等。我需要单独强调标准均方根预测误差越接近1说明预测不确定性估计越靠谱。均方根误差越小说明整体预测偏差越小但它和数据单位挂钩不要脱离数据本身去比大小。如果交叉验证结果不理想比如标准化均方根误差变成1.5以上或者0.5以下建议返回上一步调整半变异函数模型或者搜索邻域参数重新执行直到指标进入较为合理的范围。4.6 第六步输出栅格与出图交叉验证确认没问题之后向导会提示输出栅格图层。在这里可以设置输出像元大小默认按数据范围自动计算如果你有别的栅格做参考可以用“与环境保持一致”的方式匹配像元大小。这里有个常见问题插值结果默认是一个覆盖所有采样点外接矩形的完整矩形如果你研究的区域不是矩形比如是一个流域、一个行政边界这个矩形里会包含大量无数据区域。解决办法是后续用“按掩膜提取”工具把研究区边界作为掩膜把矩形栅格裁剪成研究区范围的形状。具体操作ArcToolbox → 空间分析工具 → 提取分析 → 按掩膜提取。输入栅格选克里金输出栅格输入掩膜数据选研究区面要素shp输出路径设置好点确定即可。如果研究区边界数据缺失也可以用采样点的最小凸包来近似但这个属于将就最好还是准备一个准确的研究区shp。这在竞赛题目里一般会给没给的话可以自己用ArcMap的“最小边界几何”工具生成。出图这一步我会在下一节详细说如何把克里金结果做得像论文插图这里先保证栅格文件正确生成。5. 把插值结果整理成竞赛论文里能直接用的图5.1 栅格重分类与分级设色刚从克里金向导出来的栅格默认是连续渐变渲染颜色过渡很光滑但论文里很多时候需要分级显示色阶变化更清晰也更便于读者解读。在图层属性 → 符号系统 → 分类里选“分类”或者“分级着色”。分类方法我推荐“自然间断点分级法”Jenks它能自动在数据分布的自然间隔位置设置断点比等距分级更能体现空间差异。如果你想自己控制分类阈值比如污染评价标准有明确限值也可以手动设置断点值。类别数量我建议取57级太少看不出空间分异太多图例太乱。颜色方案上低值用浅色高值用深色或者从绿到黄到红。尽量不要用那种五颜六色的色带显得很不专业。Classic的渐变配色在论文里最常见、最稳妥。5.2 等值线图层与三维展示辅助分析有时候克里金栅格图看二维平面不过瘾竞赛论文里还可以搭配等值线图或者三维曲面图让评委一眼看出空间变化趋势。等值线生成很简单空间分析工具 → 表面分析 → 等值线。输入栅格选克里金输出结果等值线间距根据数据量级自己定间距太大体现不出细节太小则图面杂乱。生成后的等值线要素建议裁剪到研究区范围内再叠加到栅格图上半透明显示效果很好。三维曲面展示可以交给ArcScene。直接把克里金栅格拖进ArcScene在图层属性里设置垂直夸张系数旋转视角导出图片非常唬人。如果你的论文整套图以二维为主三维图只做辅助不要喧宾夺主。5.3 论文配图要点图例、比例尺、指北针一个都不能少到了论文绘制地图这一步很多队伍会忽略地图元素结果一张图下来光秃秃只有色块评委根本不知道这张图表示什么区域、什么量纲。按学术规范一张完整的地图至少要有图名、图例、比例尺、指北针、坐标系说明、数据来源说明。ArcMap的布局视图里可以快速添加这些元素图例插入 → 图例选择你要显示的图层。比例尺插入 → 比例尺选“交替比例尺”之类注意勾选“调整宽度”模式下显示比例与比例尺同步。指北针插入 → 指北针选一个简单的样式不要选太花哨的。坐标格网右键数据框属性 → 格网 → 新建格网可以用经纬网或者公里网。这个在学术图中很常见能快速传达地理位置。地图上建议把染色栅格设成半透明或者叠加研究区界线这样能看到底图如果有要素空间定位更清晰。如果没有底图也要保证研究区边界的可见性不要让插值区范围无限外延。导图时文件 → 导出地图格式选TIFF或者PNG分辨率设到300dpi以上大小适合作者A4页面的半页插图。建议导出前先在布局视图中调整好页边距和图片比例避免导出后出现大片留白。6. 常见问题速查表我从比赛现场捡回来的坑最后必须分享一堆实战里踩过、辅导时见过无数次的坑。这条速查表建议直接收藏关键时刻能救火。现象可能原因解决办法添加XY数据后点显示不出来X、Y字段选错或坐标系错误检查经度对应X、纬度对应Y确认地理坐标系选择正确插值结果范围是整个大矩形而非研究区没有用掩膜提取空间分析工具→提取分析→按掩膜提取输入研究区边界结果栅格全是黑色符号化渲染方式不对打开图层属性→符号系统勾选“拉伸”改配色方案提示无法运行克里金工具地统计分析模块没启用自定义→扩展模块→勾选Geostatistical Analyst输出“Duplicate observations”警告存在完全重合的采样点用“删除相同项”工具去除重复点或检查坐标精度插值结果出现明显负值模型过度拟合或数据存在偏态对数变换改用球面模型检查是否有异常高值点标准均方根误差远大于1半变异模型低估了不确定性换模型球面→指数试试调整步长检查数据变换某角区域预测值异常高或低控制点太少外推严重增加扇区数调整搜索半径考虑缩减有效研究区导出等值线失败提示无法连接数据库输出到数据库元素时路径不支持输出文件夹下的shp文件不要放到默认gdb里图层名/字段名是乱码数据路径或表头含中文路径全部改为英文字段名改成英文用ASCII字符命名数据点太少结果图极不平滑样本量本身就不足尝试改用反距离权重做对比论文里限定有效区域栅格和采样点对不上位置坐标系不一致用“投影”做投影转换确保所有图层处于同一坐标系除了表格里的问题我再说两个我自己的实操心得第一个是数据的坐标系检查一定要做两遍一遍是在数据导入后一遍是在插值前。用“图层的属性 → 源”看一下当前坐标系是不是你预期的那个。很多人数据是投影坐标系却选了地理坐标系结果所有点在图上挤成一团怎么画都不对。这类问题在比赛现场特别常见排查耗时又容易让人心态崩。第二个是如果做出来的插值图太“丝滑”平滑得像渲染图一样反而要警惕。真实世界的污染浓度往往没有这么连续如果克里金表面几乎毫无噪声多半是搜索邻域里邻居数太少结果被极少数点主导了。对比一下交叉验证里的均方根误差如果这个值比数据的标准差还小很多基本可以判断过拟合了。这套流程我在国赛、美赛和平时练手时反复用了好多次刚开始完整跑一遍可能得花半天把每一个参数都摸一遍后熟练了半个多小时就能从数据到出图全套走完。你要是备赛时间紧张建议拿一份比赛旧题的数据按这个流程练两三遍把“普通克里金对数变换球面模型交叉验证截图”整套动作变成肌肉记忆比赛时才不会在软件操作上浪费一秒钟。真到交卷那一刻你会发现克里金插值这件事反而是全篇最有底气的部分。
返回列表