我知道有许多关于从lat / long到公制系统计算的线索。这解决了我问题的第一部分。
我的问题的第二个(主要部分)是:
为什么?
我有很多POI记录,可以使用这个lat& long对来定位。我不想得到所有结果(原因:更好的表现)。
有没有办法做类似的事情:
select * from myTable where lat> .... and lat < ... and long > ... and long < ...?
这可能吗?如果是,我如何在...
?
问候!
答案 0 :(得分:2)
查看文章:Selecting points within a bounding circle
和SO问题:SQL Query for Performing Radius Search based on Latitude Longitude
这些应该可以帮到你。
答案 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