鑑於這種情景:如何有效地確定圓圈內的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