c# - 计算半径内的 100 英里

标签 c# sql sql-server

鉴于我有一个包含机场列表及其相关纬度和经度坐标的表格,我将如何获取另一个坐标 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/

相关文章:

sql-server - 在 SQL Server 中批量插入部分引用的 CSV 文件

SQL Server 2005 如何创建唯一约束?

c# - 如何使用 MigraDoc 定义 PDF 大纲

c# - C# 中的任务 - 使用 Random 的结果不明确

sql - 选择具有满足某些约束的多个子关系的所有行

sql - 在 SQL 中使用特殊字符作为字符串

sql-server - 数据库和 UI 开发的最佳方法?

c# - 命名空间和类名指南

c# - 如何将 Linq 查询序列化到数据库?

c# - 如何在离线模式下提供唯一 ID?