数据库 – 有效存储和查询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))

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...