计算公制区域中的所有纬度和经度

时间:2012-05-03 09:37:09

标签: sql google-maps google-maps-api-3 geolocation distance

我知道有许多关于从lat / long到公制系统计算的线索。这解决了我问题的第一部分。

我的问题的第二个(主要部分)是:

  • 我有谷歌地图作为地图应用。
  • 我有一对拉长对点
  • 我有一个公制距离,比方说30米。
  • 我需要点一点 sql查询

为什么?

我有很多POI记录,可以使用这个lat& long对来定位。我不想得到所有结果(原因:更好的表现)。

有没有办法做类似的事情:

select * from myTable where lat> .... and lat < ... and long > ... and long < ...?

这可能吗?如果是,我如何在...

中获取这些值

问候!

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

这是一个示例查询,它返回供应商lat / lng与lat / lng对数据库之间的距离:

DECLARE
@Latitude float,
@Longitude float

SET @Latitude = 46.51257000000000
SET @Longitude = -84.33660900000000

DECLARE @SampleData TABLE
(
Name varchar(100),
Lat float,
Lng float
)

INSERT INTO @SampleData
(Name, Lat, Lng)
SELECT 'Point1', 46.52450048415351,-84.35223018530274
UNION
SELECT 'Point2', 46.51835838382206,-84.30279170874024
UNION
SELECT 'Point3', 46.522138220045285,-84.2622796237793
UNION
SELECT 'Point4', 46.54056115608927,-84.223140829834

SELECT 
    Name,
    Lat,
    Lng,
    -- using spherical law of cosines, where 6371 is the earth's radius in km. Returns km.
    Distance = ACOS(SIN(RADIANS(@Latitude))*SIN(RADIANS(Lat))+COS(RADIANS(@Latitude))*COS(RADIANS(Lat))*COS(RADIANS(Lng-@Longitude)))*6371  
FROM 
    @SampleData