ArcGIS空间插值示例

标签: Arcgis 分类: Gis 创建时间:2019-11-08 06:49:27 更新时间:2025-01-17 10:39:21

空间插值,是GIS空间分析中较为重要的一种空间分析功能。先来一波科普:空间插值常用于将离散点的测量数据转换为连续的数据曲面,以便与其它空间现象的分布模式进行比较,它包括了空间内插和外推两种算法。 空间内插算法:通过已知点的数据推求同一区域未知点数据。 空间外推算法:通过已知区域的数据,推求其它区域数据。空间插值方法分为两类:一类是确定性方法,另一类是地质统计学方法。确定性插值方法是基于信息点之间的相似程度或者整个曲面的光滑性来创建一个拟合曲面,比如反距离加权平均插值法(IDW)、趋势面法、样条函数法等;地质统计学插值方法是利用样本点的统计规律,使样本点之间的空间自相关性定量化,从而在待预测的点周围构建样本点的空间结构模型,比如克立格(Kriging)插值法。确定性插值方法的特点是在样本点处的插值结果和原样本点实际值基本一致,若是利用非确定性插值方法的话,在样本处的插值结果与样本实测值就不一定一致了,有的相差甚远。
先上一张图:

其实使用ArcMap进行空间插值,非常简单。

1.准备数据

准备一些点图层

2.打开ArcToolBox

打开ArcToolBox->Spatial Analyst Tools->Interpolation,下面有好几种插值方法,每种方法适用于不同的情境下,具体根据自己需要采用。

3.输入参数

这里我选择了IDW(反距离权重插值方法),选择一个点图层,选择要插值的属性值,然后选择输出的位置,点击确定就好了。

4.生成结果

生成的结果,是栅格图形,会自动加入到当前视图中的。

参考文章:
1.空间分析之插值分析 (这篇文章有有对各种插值算法的简要分析,什么情况适合什么样的插值运算)
2.arcgis空间内插值教程
3.ArcGIS绘图—空气质量站点数据插值绘制等值线图
4.ArcGIS里做空间插值分析

小技巧:
我在执行地理处理操作的时候,始终看不到运行的结果,也看不到正在进行中的提示框,如果你也出现这种情况,就将后台运行地理处理关闭。打开菜单->地理处理(Geoprocessing)—>地理处理选项(Geoprocessing Options)—>关掉后台处理(Background Processing下的Enable前的钩号去掉)

5.前端插值算法

使用ArcMap可以很方便的实现idw插值,但是要在浏览器端显示该如何做呢?使用js计算插值,当然会很慢,但是使用后端计算,生成的栅格图片的传输也需要一定的带宽和时间,如何使用后台服务进行空间插值的计算,也是一个很大的问题,如何平衡js的worker多线程以及后台GP服务,比如像arcgis server的GP服务等的复杂度,找到一个合理的解决方案,需要进一步的探讨。
有人用d3是实现了idw插值计算,使用D3-contour基于idw插值算法前端实现等值线色斑图(参考文章5),先研究一下。

6.Matplotlib

还有一些其他的技术方案,比如Python端,nodejs端的,有人(公瑾)用nodejs实现了插值然后生成了geojson传到了前端,通过前端进行了渲染和绘制,没有找到相关的文章。还有一种技术是使用matplotlib,这个也需要好好的参考一下。

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。

7.最终方案

今天继续探索插值运算的前后端合适的方法。最后终于根据 Liquid泉 的文章和github ,经过自己的改造,实现了前端插值的展示。效果如图:

这个单独出一篇文章吧。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。