我有一個晶格和晶格的表格。從給定的緯度長度在2英里半徑內找出晶格和晶格
我需要找到所有的latitute和longitute,距離給定lat-long半徑2英里。
我使用jquery ajax從sqlserver數據庫中使用C#獲取數據。
我需要這個在sqlserver查詢。
例如: -
如果我給37.774546和-122.433523,比我更需要從列表中得到所有LAT-久, 是2成方圓。
我有一個晶格和晶格的表格。從給定的緯度長度在2英里半徑內找出晶格和晶格
我需要找到所有的latitute和longitute,距離給定lat-long半徑2英里。
我使用jquery ajax從sqlserver數據庫中使用C#獲取數據。
我需要這個在sqlserver查詢。
例如: -
如果我給37.774546和-122.433523,比我更需要從列表中得到所有LAT-久, 是2成方圓。
這樣做。
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);
你可以試試這個查詢數據庫:
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)
希望這會幫助你。
謝謝Hitesh,它工作正常。 – AnandMeena
由於您使用的是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作爲參考點。但它非常簡單。
我們需要更多信息來幫助你。您希望在哪裏進行過濾?在數據庫中,在C#層,還是在JavaScript? – flup
你的「問題」與它的標籤有什麼關係?這聽起來更像是一個數學問題。 – Teemu
你應該問問hitesh gupta ..... – Pawan