热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL计算影响某地的台风

已爬取了十几年来的全国台风数据,现要获取影响某地的台风,想法比较粗糙,就是以某地的中心点为半径和台风路径中心点距离的求解,一

已爬取了十几年来的全国台风数据,现要获取影响某地的台风,想法比较粗糙,就是以某地的中心点为半径和台风路径中心点距离的求解,一般某地区是以点带面的有个地区半径,台风一般取七级台风风圈半径。

4e4deceba081dc6117255326b52756b9.png

现在的问题点转换为了,两点之间求距离。

Postgresql有两种办法可实现,一种是自定义函数,一种是利用Postgresql扩展包

第一种自定义函数的方式,参见代码:

create or replace function getdistance
(ilngbegin real,ilatbegin real,ilngend real,ilatend real
)
returns float
as
$body$declarevdistance real;vearthradius real;vradlatbegin real;vradlatend real;vradlatdiff real;vradlngdiff real;
begin--地球半径vearthradius:=6378.137;-经纬度转换vradlatbegin := ilatbegin * pi()/180.0;vradlatend := ilatend * pi()/180.0;vradlatdiff := vradlatbegin - vradlatend;vradlngdiff := ilngbegin * pi()/180.0 - ilngend * pi()/180.0;--求距离vdistance := 2 * asin(sqrt(power(sin(vradlatdiff / 2), 2) + cos(vradlatbegin) * cos(vradlatend) * power(sin(vradlngdiff/2),2)));vdistance := vdistance * vearthradius*1000;return vdistance;
end;
$body$
language 'plpgsql' volatile;

Postgresql内置了地理计算的一些功能,需要在应用时赋权即可。

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;

这两种方法的调用如下:

select a.tfid,a.pointlat,pointlng,getdistance(a.pointlat,a.pointlng,19.137154,109.876876) as distance,a.* from typhoon_his_point_info awhere getdistance(a.pointlat,pointlng,19.137154,109.876876)<&#61;480000  order  by a.tfid,a.pointtime;select a.tfid,a.pointlat,pointlng,earth_distance(ll_to_earth (109.876876, 19.137154),ll_to_earth(a.pointlng, a.pointlat)) as distance,a.*from typhoon_his_point_info awhere getdistance(a.pointlat,pointlng,19.137154,109.876876)<&#61;480000  order  by a.tfid,a.pointtime;

结论&#xff1a;两种计算方法的误差在十万分之一&#xff0c;当然直接使用Postgresql的会更精准一些。

欢迎关注python与大数据分析

9454ea82d1899d4fde0bbe5523a69aae.jpeg


推荐阅读
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 标题: ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 总结一下C中string的操作,来自〈CPrimer〉第四版。1.string对象的定义和初始化:strings1;空串strings2(s1);将s2初始 ... [详细]
author-avatar
手机用户2602932547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有