小编典典

使用SQL地理学获取特定点半径内的位置

sql

我有一个地理类型的SQL表列:

create table dbo.Events
(
  Id int identity not null 
    constraint PK_Events_Id primary key clustered (Id),
  Localization geography not null
);

如何获得半径40公里范围内的所有事件?这可能吗?

谢谢你,米格尔


阅读 141

收藏
2021-04-17

共1个答案

小编典典

假设您具有要搜索的点的经度和纬度:

DECLARE @Origin GEOGRAPHY,
        -- distance defined in meters
        @Distance INTEGER = 40000;

-- center point
SET @Origin = GEOGRAPHY::STGeomFromText('POINT(-122.084039 37.42227)', 4326);

-- return all rows from events in 40km radius
SELECT * FROM dbo.Events WHERE @Origin.STDistance(Localizaton) <= @Distance;
2021-04-17