sql-server-2008 - 根据计算的坐标之间的距离选择数据

标签 sql-server-2008 coordinates

数据库存储 4 个点,坐标如下:

名称 |纬度 |长

第 1 点 | 11.111 | 11.111 22.222

第 2 点 | 22.222 | 22.222 33.333

第 3 点 | 44.444 | 44.444 55.555

第 4 点 | 66.666 | 77.777


技术:

MS SQL Server


Web 应用程序通过 HTML5 获取当前用户的纬度和经度,然后它应该计算这 4 个点中哪些点距离小于 0.5 公里。 如何?

它应该根据下图显示点 1 和点 2:

enter image description here

最佳答案

使用 SQL Server:

您可以使用以下函数查找两个坐标之间的距离(以千米为单位)

CREATE FUNCTION dbo.fnCalcDistanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
    RETURNS FLOAT 
    AS
    BEGIN

        RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
    END

示例用法:

select [dbo].[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916)

Reference

使用 Entity Framework (dot net):

Entity Framework 5.0允许你像这样编写LINQ表达式

private Facility GetNearestFacilityToJobsite(DbGeography jobsite)
{   
    var q1 = from f in context.Facilities            
             let distance = f.Geocode.Distance(jobsite)
             where distance < 500 * 1609.344     
             orderby distance 
             select f;   
    return q1.FirstOrDefault();
}

Reference

我希望这足以让您开始。

关于sql-server-2008 - 根据计算的坐标之间的距离选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076164/

相关文章:

javascript - 使用经度/纬度坐标显示位置 - Google map

Wpf 视口(viewport)坐标

java - 计算沿相对对角线的点偏移

python - 为什么纬度和经度在netcdf文件中是二维数组?

SQL - 数据透视表和组不工作

sql - 消息 8115,级别 16,状态 2,第 2 行算术溢出错误将表达式转换为数据类型 int

sql-server - SSRS 报告表达式中的注释

sql - 获取季度中的天数

sql-server - SQL Server备份无法恢复: The media set has 2 families but only 1 provided.必须提供所有成员

java - 如何将图片放在屏幕的左上角?