从数据库中查找lat很近

时间:2016-06-21 15:04:15

标签: nearest-neighbor

我有一个以lat和long格式存储位置的关系数据库。根据当前给定的点,我必须从db中找到位于给定位置“x”kms范围内的位置。任何指针如何开始? Places API?

1 个答案:

答案 0 :(得分:0)

在Microsoft SQL Server上,您有geographic functions。您可以使用这样的T-SQL脚本:

DECLARE @givenLatitude float
      , @givenLongitude float
      , @givenLocation geography
      , @maximumDistance float ;

SET @givenLatitude = ... ;
SET @givenLongitude = ... ;

SET @givenLocation = geography::STGeomFromText('POINT(' + CAST(@givenLongitude AS VARCHAR(20)) + ' ' + 
                                                          CAST(@givenLatitude AS VARCHAR(20)) + ')', 4326) ;

SELECT *
FROM Locations
WHERE geography::STGeomFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + 
                                           CAST([Latitude] AS VARCHAR(20)) + ')', 4326)
                .STDistance(@givenLocation) <= @maximumDistance ;