鉴于这种情景:如何有效地确定圆圈内的n个位置?
- 我们有世界各地1,000,000点数据,通过经度和纬度指定的顺序;
- 我们有基于点的电脑一圆C和半径RC
- 我们要有效地确定哪个点都在圈内
我开发(通过经度和纬度指定)在C#和存储在SQL Server 2008中
这样的位置,因为我看到它,我有这3个选项:
存储位置为经纬度花车和PE用C#进行计算。
存储位置为地理数据类型和执行SQL Server 2008中的计算是这样的:
CREATE TABLE UserLocations [UserId] [bigint] NOT NULL, [CurrentLocation] [geography] NOT NULL ALTER PROCEDURE sp_GetCurrentUsersInRange @userPoint geography, @RangeInMeters int AS BEGIN select UserId from UserLocations where @userPoint.STDistance(CurrentLocation) <= @RangeInMeters and UserId <> @userId END
缺点:使用带有LinqToSQL和LinqToEntities地理数据的问题。
优点:对大数据使用dbms处理能力,以及使用SQL Server空间索引。
3.使用一些网络服务,如谷歌的地理位置和计算服务。 到目前为止,我没有找到这样的网络服务。
您认为哪种效率最高?请证明您的答案。
谢谢
[测试点是否在圆内的方程](http://stackoverflow.com/questions/481144/equation-for-testing-if-a-point-is-inside-a-circle) – Magnus 2012-04-18 14:33:59
@马格努斯我们在这里的球体表面,而不是在飞机上 – AakashM 2012-04-18 15:30:12