加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何在Mysql中有效利用经度/纬度值?

发布时间:2021-01-21 02:41:13 所属栏目:MySql教程 来源:网络整理
导读:多亏了Wikileaks,在英国的英国我们现在可以访问每个邮政编码wikileaks postcodes uk重要信息的经度和纬度坐标.请勿在公共应用程序中使用此数据-担心数据已被故意破坏,您可能会被视为违反版权法.尝试使用来自Postcode UK site这样的开源网站的数据 现在,可以

多亏了Wikileaks,在英国的英国我们现在可以访问每个邮政编码wikileaks postcodes uk重要信息的经度和纬度坐标.请勿在公共应用程序中使用此数据-担心数据已被故意破坏,您可能会被视为违反版权法.尝试使用来自Postcode UK site这样的开源网站的数据

现在,可以使用以下计算来计算每个点之间的距离(最初来自精美的Pro Mysql书):

The distance d between two points (x1,y1) and (x2,y2) can be calculated from the following equation (so long as x values are latitude and y values are longitude in radians,r is the radius of the sphere which is 3956 in miles):

d= acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y2-y1)) * r

现在这已经足够好了,还是应该使用新的GIS数据类型和功能,如果可以,如何将经度和纬度引用转换为Point数据类型?我意识到,由于地球不是一个完美的球体,因此我在上面引用的距离计算并不完美.但是对于我的目的来说已经足够了.使用新的GIS功能是否会a)使距离的计算更快b)使距离的计算更精确? 最佳答案 专注于(a):

过去,我已经预先计算了部分,存储了lat,long,xaxis,yaxis和zxais,其中x,y& z定义为:

xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))

然后可以使用SQL宽松地计算距离(例如,acos(xaxis * $xaxis yaxis * $yaxis zaxis * $zaxis)* 6367.0 / 1.852)(其中以$开头的那些对象以相同的方式针对相关起点进行了预先计算如上)

以这种方式进行的预计算将相对昂贵的触发推向一次事件,并简化了查询.

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读