2014-07-15 39 views
-2

我有一個晶格和晶格的表格。從給定的緯度長度在2英里半徑內找出晶格和晶格

我需要找到所有的latitute和longitute,距離給定lat-long半徑2英里。

我使用jquery ajax從sqlserver數據庫中使用C#獲取數據。

我需要這個在sqlserver查詢。

例如: -

如果我給37.774546和-122.433523,比我更需要從列表中得到所有LAT-久, 是2成方圓。

+0

我們需要更多信息來幫助你。您希望在哪裏進行過濾?在數據庫中,在C#層,還是在JavaScript? – flup

+2

你的「問題」與它的標籤有什麼關係?這聽起來更像是一個數學問題。 – Teemu

+0

你應該問問hitesh gupta ..... – Pawan

回答

0

這樣做。

var bounds = map.getBounds(); 
var ne = bounds.getNorthEast(); 
var sw = bounds.getSouthWest(); 
var nw = new google.maps.LatLng(ne.lat(), sw.lng()) 
var x = google.maps.geometry.spherical.computeDistanceBetween(ne, nw); 
var y = google.maps.geometry.spherical.computeDistanceBetween(sw, nw); 
1

你可以試試這個查詢數據庫:

Declare @Miles int=10; 

Declare @Latitude varchar(15); 
Declare @Longitude varchar(15); 
Set @Latitude = 'set input lat here' 
Set @Longitude = 'set input long here' 

Select Round(((DEGREES(ACOS(SIN(RADIANS(Latitude)) * SIN(RADIANS(@Latitude)) + COS(RADIANS(Latitude)) * COS(RADIANS(@Latitude)) * COS(RADIANS(Longitude - @Longitude))))) * 69.09),0) As Distance, 
Latitude as lat, 
Longitude as longi  
From tablename      
     Where @Miles > ((DEGREES(ACOS(SIN(RADIANS(Latitude)) * SIN(RADIANS(@Latitude)) + COS(RADIANS(Latitude)) * COS(RADIANS(@Latitude)) * COS(RADIANS(Longitude - @Longitude))))) * 69.09) 

希望這會幫助你。

+0

謝謝Hitesh,它工作正常。 – AnandMeena

1

由於您使用的是SQL 2008,因此您可以利用本地地理空間查詢功能。例如:

declare @distance_in_meters int = 2000; 
declare @point geography = geography::Point(37.774546, -122.433523, 4326); 
declare @buffer geography = @point.STBuffer(@distance_in_meters); 

select * 
from dbo.yourtable 
where @buffer.STContains(t.Point); 

注意dbo.yourtable.Point必須有地理數據類型與實際數據必須具有相同的SRID作爲參考點。但它非常簡單。

相關問題