微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库 – 有效存储和查询GPS坐标

我想创建一个GPS坐标的大型数据库,可以通过说“返回[此坐标]的’n’米范围内的所有坐标”来查询.

我需要它尽可能高效,因此循环遍历数据库中的所有坐标并计算坐标是否在’n’米内并不是一个理想的解决方案.

有更简单的解决方案吗?

谢谢

解决方法

我通常使用lat / lon进行这种查询.使用球面几何体,可以在特定点周围放置边界框.例如,假设您有一个点(X,Y),您希望1英里内的所有坐标(转换为米,我将作为练习留给读者).您可以确定(X-1,Y-1),(X 1,Y 1)的边界框.然后使用BETWEEN运算符查询数据库(SELECT foo FROM bar在X-1和X 1之间的位置和在Y-1和Y 1之间的LON).然后,您将详细距离计算到边界框的“圆角”.

需要注意的是,经度线在球体的顶部更靠近在一起,因此距离赤道越远,你就会得到偏斜的结果.但它仍可用于快速筛选结果集.

谷歌“Great Circle distance”的计算方法.

编辑:每英里有0.167469度经度(实际范围从0.167469到0.014564),每英里有0.014483度纬度.所以你的边界框是(lat – (英里* 0.014483),lon – (英里* 0.167469)),(lat(英里* 0.014483),lon(英里* 0.167469))

原文地址:https://www.jb51.cc/mssql/78574.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐