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

前端之家收集整理的这篇文章主要介绍了数据库 – 有效存储和查询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))

猜你在找的MsSQL相关文章