2016-06-21 5 views
0

위도와 경도로 저장되는 관계형 데이터베이스가 있습니다. 현재 주어진 지점을 기반으로, 나는 주어진 위치에서 "x"킬로미터 안에있는 db로부터 위치를 찾아야한다. 어떤 포인터로 시작하는 방법? Places API?데이터베이스에서 lat long으로 찾기 가깝습니다.

+0

다른 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 ;