有效存储和查询GPS坐标

use*_*996 9 database gps coordinates

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

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

有更简单的解决方案吗?

谢谢

And*_*ett 6

我通常使用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之间的距离).然后,您将详细距离计算到边界框的"圆角".

需要注意的是,经度线在球体的顶部更靠近在一起,所以你会得到偏离的结果,离赤道越远.但它仍然可以快速过滤掉您的结果集.

谷歌"Great Circle Distance"的计算方法.

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


Ron*_*erg 2

SQL Server 2008 支持存储空间数据。我自己从未使用过它,但我确实知道您可以创建所需类型的查询。