鉴于我有一个包含机场列表及其相关纬度和经度坐标的表格,我将如何获取另一个坐标 100 英里以内的机场列表?我的最终目标是让用户按城市搜索并找到该城市经纬度 100 英里范围内的机场。我拥有所有数据,只是不知道从哪里开始。
我的数据在 SQL Server 中。
最佳答案
create function dbo.F_GREAT_CIRCLE_DISTANCE
(
@Latitude1 float,
@Longitude1 float,
@Latitude2 float,
@Longitude2 float
)
returns float as
begin
declare @radius float
declare @lon1 float
declare @lon2 float
declare @lat1 float
declare @lat2 float
declare @a float
declare @distance float
-- Sets average radius of Earth in Miles
set @radius = 3956
-- Convert degrees to radians
set @lon1 = radians( @Longitude1 )
set @lon2 = radians( @Longitude2 )
set @lat1 = radians( @Latitude1 )
set @lat2 = radians( @Latitude2 )
set @a = sqrt(square(sin((@lat2-@lat1)/2.0E)) + (cos(@lat1) * cos(@lat2) * square(sin((@lon2-@lon1)/2.0E))) )
set @distance = @radius * ( 2.0E *asin(case when 1.0E < @a then 1.0E else @a end ))
return @distance
end
关于c# - 计算半径内的 100 英里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044671/