WebGIS中前端JS生成等值面方法探讨

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/1.背景        在之前的博文《WebGIS中等值面展示的相关方案简析》中我提到了两种生成等值面的方法:       a.使用GP服务发布等值面生成服务,前端调用该服务生成等值面图片然后叠加至地图上。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

        在之前的博文《WebGIS中等值面展示的相关方案简析》中我提到了两种生成等值面的方法:

       a.使用GP服务发布等值面生成服务,前端调用该服务生成等值面图片然后叠加至地图上。

       b.使用AE开发等值面生成工具,将等值面图片瓦片化后叠加至地图上。

   

       从实现方式上来说,这两种方案均是通过后台生成等值面图片,前端进行图片叠加展示。

       如果项目中我们的观察值频繁变化,比如五分钟变化一次,那么我们的等值面应该及时同步变化。但是如果利用后台服务来实现,则更新频次对后台服务存在一定压力,主要体现在插值图片频繁切图等。并且由于前端展示的仅仅是图片,无法在前端实现与等值面的交互。

       这里,我们探讨一种真正的在前端实现插值等值面的方法。

2.插值探讨

        等值面生成的核心原理是插值。我们常用的插值算法有反距离加权法(IDW)、样条插值法、克里金法、离散平滑插值、趋势面光滑插值等。这里我们采用克里金插值。

       克里金方法最早是由法国地理学家Matheron和南非矿山工程师Krige提出的,用于矿山勘探。这种方法认为在空间连续变化的属性是非常不规则的,用简单的平滑函数进行模拟将出现误差,用随机表面函数给予描述会比较恰当 (克里金中包括几个因子:变化图模型、漂移类型和矿块效应) 。

       克里金方法的关键在于权重系数的确定,该方法在插值过程中根据某种优化准则函数来动态地决定变量的数值,从而使内插函数处于最佳状态。克里金方法考虑了观测的点和被估计点的位置关系,并且也考虑各观测点之间的相对位置关系,在点稀少时插值效果比反距离权重等方法要好。所以利用克里金方法进行空间数据插值往往取得理想的效果。

在地质统计学中,根据应用目标的区别,发展了多种克里格方法如:

       a.简单克里格(Simple-Kriging)

       b.普通克里格(Ordinary-Kriging)

       c.泛克里格(Universal-Kriging)

       d.对数正态克里格(Log-Normal Kriging)

       e.协同克里格(Cokriging)

       f.拟协克里格(Pseudo-Kriging)

       g.指示克里格(Indicator-Kriging)

       h.离析克里格(Disjunctive-Kriging)

       在三维地质建模过程中,克里格被作为插值方法,能过最大的程度的保证地质界面与原始数据的吻合,且不依赖于网络。

3.格网化插值的实现

       a.我们首先需要将待插值的范围划分成若干格网,格网的数目会影响插值的效果。

       b.针对每个格网进行插值计算。

       c.所有格网基于插值数值进行配色渲染。

   

4.获取真正的等值面

       格网化插值展示结果已经是趋于等值面展示了,并且随着格网粒度进一步变小,展示结果将更趋于平滑,但是随之的性能开销将越来越大,而且无法规避渐变处的锯齿情况。

       所以我们还得研究如何根据已有插值格网获取等值面。

       这个研究类似与栅格数据转矢量数据的研究,该类型算法网上有比较多的介绍,这里我直接给出优化后的结果:

  

 

                

                          -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                               如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                    

目录
相关文章
|
10月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
491 69
|
9月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
941 0
|
9月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
1064 80
|
11月前
|
JavaScript 前端开发 API
|
10月前
|
JSON 前端开发 JavaScript
前端工具方法整理
前端工具方法整理
228 8
|
11月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
419 8
|
11月前
|
JavaScript 前端开发 容器
|
11月前
|
JavaScript 前端开发
|
11月前
|
存储 JavaScript 前端开发
|
11月前
|
移动开发 JavaScript 前端开发

热门文章

最新文章