查找位置距离小于或等于动态值的帖子

时间:2011-12-06 20:35:38

标签: sql map sql-server-2008-r2

我需要帮助处理与之合作的架构问题。用户输入位置和半径(例如距离)。该软件在(巨型=几十个帖子)数据库表中搜索用户位置和彼此的“帖子”距离小于输入距离的帖子。

这对我来说很难解释,但想象一下有两个帖子的表,点a和点c,点U是用户位置。用户已输入位置和半径,a和c的位置和半径是预定义的(存储在数据库中)。

Crossmatching areas

在这种情况下,我只对A点感兴趣,因为这两个区域相互交叉。我应该如何将其转化为在数据库中以有效的方式进行数十万个帖子?在数据库中,我将存储经度,纬度和半径。

1 个答案:

答案 0 :(得分:2)

取决于您正在使用的数据库服务器,但请查看可能包含的GIS功能。例如,MS SQL Server 2008具有内置几何类型,PostgreSQL具有PostGIS。 Oracle也有类似的东西。无论如何 - 这些本地GIS格式带有空间查询功能,可以执行您正在讨论的事情 - 在给定距离内搜索匹配等等......完成一次切换到正确的数据类型非常简单。

修改

由于您使用的是SQL 2008,并且您的数据是纬度/经度,因此我建议使用“地理”而不是“几何”数据类型。看看这里:http://msdn.microsoft.com/en-us/library/cc280766.aspx