2016-06-21 3 views
0

У меня есть место хранения реляционных db в формате lat и long. Основываясь на текущей заданной точке, я должен найти местоположения из db, которые находятся в пределах «x» км от данного местоположения. С чего начать? API мест?Поиск вблизи lat long из базы данных

+0

Wich DBMS вы используете? По крайней мере, на Microsoft SQL Server у вас есть географические функции: https://msdn.microsoft.com/en-us/library/cc280766.aspx – Shago

ответ

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 ;