雨量等值线图的实现

上一篇日志展示了我的成果,现在聊一聊我实现过程中涉及到的一些问题,至于具体实现方式这里就不细说了,实在有兴趣的朋友就留言吧。
先交代应用的场景,通常一个地区会分布一些气象自动站,记录气象信息,今天要讨论的是雨量信息,对于决策者来说,把一个个自动站记录下来的数值列在二维表上,摆在面前,几乎就只能回答一个问题:今天到底有没有下雨?至于这场雨的强度有多大,影响范围多广,雨量如何分布,趋势是什么,这些高级问题根本就无法从一张二维表里面得到,就算把这些零零散散的站点信息叠加在地图上,由于站点不可能无限多,顶多也就百来个,也无法得到比二维表更多的信息
怎样根据有限的数据来回答上面提到的问题呢?答案就是根据已知的数据,通过一定的关联关系推算出其他未知的数据,只要得到的数据够多,体现在地图上的时候,就能反映雨量的分布,强度等信息。
如果推算?答案:插值
这里附上数据样本,下面这些点点代表这个区域中的自动站,上面的数字代表雨量:

通过插值的方式,可以根据现有的站点信息来推算出其他区域的雨量信息,其原理呢,具体应该是要去翻看统计学的书籍了,我不懂,插值的方式有很多种,雨量插值中用得比较多的有克里金和反距离加权法,其中克里金法的算法较为先进,其结果也最贴近实际结果,但是其运算比较复杂,网上也鲜有克里金法的源码(java的很难找到,后来找着一个,我的一篇博客就是专门讲它的),反距离加权法的算法比较简单,很容易理解,就是认为事物之间的影响是跟距离正相关,事物之间距离越近,就越相似,越远就越不同,我就是使用反距离加权法来插值。
上面啰嗦了这么多就是讲怎样从有限的数据中发掘更多的数据,当经过上面的步骤之后,就能得到一张如下的图:

不好意思,图的效果看起来有些诡异,这样一张图其实已经可以表达一定的趋势信息了,不过数据的太多了,信息不够清晰,需要进行分类,比如0.1~1的为一类,1~5的为一类,5~10的为一类……这样可以让数据更有层次,更清晰,这就要用到另外一个技术,等值线绘制!
等值线绘制对我来说,算是比较难的一步了,不过还是解决了,哈哈,当然也可以不画等值线,直接在绘制栅格图的时候根据数值区间赋予颜色,但是等值线图会更加平滑更加细腻,表达方式也更丰富!
以下是效果,就是上面提到的不实用等值线的方式绘制的图:

这里附上等值线图,对比下效果吧:

转载于:https://my.oschina.net/LinBandit/blog/125121

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值