C#根据经纬度计算两点距离(单位是千米)

2023-11-07

SQL:

CREATE function [dbo].[fnGetDistance]  
(  
    @LatBegin REAL  
    , @LngBegin REAL  
    , @LatEnd REAL  
    , @LngEnd REAL  
)  
RETURNS FLOAT 
AS  
BEGIN  
    DECLARE @Distance REAL  
    DECLARE @EARTH_RADIUS REAL  
    SET @EARTH_RADIUS = 6378.137  
      
    DECLARE @RadLatBegin REAL, @RadLatEnd REAL, @RadLatDiff REAL, @RadLngDiff REAL  
    SET @RadLatBegin = @LatBegin * PI() / 180.0  
    SET @RadLatEnd = @LatEnd * PI() / 180.0  
    SET @RadLatDiff = @RadLatBegin - @RadLatEnd  
    SET @RadLngDiff = @LngBegin * PI() / 180.0 - @LngEnd * PI() / 180.0  
      
    SET @Distance = 2 * ASIN(SQRT(POWER(Sin(@RadLatDiff / 2), 2) + COS(@RadLatBegin) * COS(@RadLatEnd) * POWER(SIN(@RadLngDiff/2),2)))  
    SET @Distance = @Distance * @EARTH_RADIUS  
    --SET @Distance = Round(@Distance * 10000) / 10000  
      
    RETURN @Distance  
END

 

C#:

private const double EARTH_RADIUS = 6378.137;
private static double rad(double d)
{
   return d * Math.PI / 180.0;
}

public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
   double radLat1 = rad(lat1);
   double radLat2 = rad(lat2);
   double a = radLat1 - radLat2;
   double b = rad(lng1) - rad(lng2);

   double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +
    Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
   s = s * EARTH_RADIUS;
   s = Math.Round(s * 10000) / 10000;
   return s;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#根据经纬度计算两点距离(单位是千米) 的相关文章

随机推荐

  • OpenCV与图像算法笔记

    本博客为 OpenCV算法精解 基于Python与C 一书 参阅源代码链接 的阅读笔记 根据理解对书中绝大多数算法做了总结和描述 对Numpy较为熟悉 Python方面仅对与C 不同的注意事项做了标注 书作者整体按照冈萨雷斯的经典教材 数字
  • CDN架构

    CDN公司在整个互联网中部署了数以百计的节点 Cache服务器集群 这些Cache服务器都分布在各个网络运营商的IDC机房中 位置尽量靠近用户网络 CDN系统将内容从源站复制到各个节点 在内容提供者更新内容时 CDN系统将更新后的内容重新分
  • 模板的全特化与偏特化

    模板为什么要特化 因为编译器认为 对于特定的类型 如果你能对某一功能更好的实现 那么就该听你的 模板分为类模板与函数模板 特化分为全特化与偏特化 全特化就是限定死模板实现的具体类型 偏特化就是如果这个模板有多个类型 那么只限定其中的一部分
  • 基于Verilog HDL 和FPGA的寻线小车设计代码

    刚进实验室的第一个项目 做一个寻线小车 我就用FPGA芯片尝试做了一个 用到的零件有 车模一个 一块L298N驱动模块 一块cyclone IV芯片 具体型号是EP4CE6E22C8N 四个电机 一个电源 一个四灰度寻迹模块 或者红外寻迹模
  • 使用ffmpeg将WebM文件转换为MP4文件的简单应用程序

    tiktok网上下载的short视频是webm格式的 有些程序无法处理该程序 比如roop程序 本文介绍了如何使用wxPython库创建一个简单的GUI应用程序 用于将WebM文件转换为MP4文件 这个应用程序使用Python编写 通过调用
  • 对eureka,ribbon,feign和负载均衡的理解

    以下是个人理解 仅供参考 eureka获取ip和端口的方法 GetMapping test public String Test String serverName List
  • 简单排序 插入排序详解 C语言入门

    欢迎关注笔者 你的支持是持续更博的最大动力 目录 问题描述 思路 代码 相关内容 其他 问题描述 给n个数按从小到大排序 插入排序 思路 插入排序 把无序部分元素插入有序部分 1 用无序部分的第1个元素 和前面有序部分每一个元素比较 2 如
  • C# WPF在xaml中的数据绑定

    在WPF的绑定中个人分为两种 非集合数据绑定和集合数据绑定 非集合数据绑定 指的是包含数据为单个de控件的数据绑定 而不是有很多子项 例如Button TextBox TextBlock等等的绑定 集合数据绑定 指的是包含很多子项的控件的数
  • 打印机怎么扫描到电脑_电脑连不上打印机怎么办,告诉你解决方法

    打印机的作用是非常强大的 在工作时经常会需要打印一些报表文件什么的 这时就离不开打印机的功能 而想要使用打印机 就必须要连接电脑 但有时电脑连不上打印机怎么办呢 是什么原因造成的呢 1 如果打印机是正常的情况下 就需要看下是否是连接的问题了
  • hexo部署:创建个人博客并部署到github

    前言 本文详细记录使用hexo搭建并部署个人博客的全过程 原文地址 https xuedongyun cn post 46487 创建hexo项目 在有node js环境的情况下 搭建项目 npm install hexo cli g he
  • 基于Android的中小学家校互动平台的设计与实现

    基于Android的中小学家校互动平台的设计与实现 摘 要 如今 互联网发展越来越快 手机应用开发技术日渐完善 随着社会信息化水平的提高 以及对新一代教育的日益关注 家校之间的沟通 家校互动的重要性日益凸显 这种需求也使得家校互动的市场受到
  • 秋招算法面经集合

    面试锦囊之面经分享系列 持续更新中 欢迎后台回复 面试 加入讨论组交流噢 写在前面 秋招告一段落 整理文件的时候发现之前记录的面经问题 主要是秋招前期的一些面试 后期由于实习比较忙没花时间整理 希望自己的面经可以帮助到有需要的人吧 由于个人
  • vite框架使用eslint+prettier配置,并且将错误信息显示在浏览器界面上

    在vscode编辑器当中使用vite框架 配置eslint 首先在vite项目中 安装eslint plugin vue依赖 npm install save dev eslint eslint config prettier eslint
  • 当你输入一个网址/点击一个链接,发生了什么?(以www.baidu.com为例)

    假设你用一个全新的浏览器 第一次启动的那种 访问百度 http www baidu com 在你敲入网址并按下回车之后 将会发生以下神奇的事情 浏览器先尝试从Host文件中获取http www baidu com 对应的IP地址 如果能取到
  • 常用字符设备驱动函数总结 ----- 记录总结tool

    打印等级 define KERN EMERG lt 0 gt system is unusable define KERN ALERT lt 1 gt action must be taken immediately define KERN
  • Java中的package(包)

    package类似一个文件夹 文件夹内有各种文件 package存在的意义是防止命名冲突造成使用不便 同一个文件夹内无法存在同名的文件 而不同名的文件夹里允许存在同名文件 因此不同文件夹 即不同package中允许出现相同class名 ja
  • Python中`__init__.py`详解

    在Python中 init py 是一个特殊的文件 用于标识一个包 Package 包是一个包含模块 Module 和其他子包的文件夹 它允许你将相关的模块组织在一起 方便管理和导入 以下是关于 init py 的详细解释 1 包的结构 在
  • windows下添加路由

    1 首先在 运行 窗口输入cmd 按WIN R打开运行窗口 然后回车进入命令行 2 在命令行下输入route命令 会有对应的提示信息 ROUTE f p 4 6 command destination MASK netmask gatewa
  • 【单目标优化算法】杂草优化算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 杂草算法代码简单 易于实现 具有较强的自适
  • C#根据经纬度计算两点距离(单位是千米)

    SQL CREATE function dbo fnGetDistance LatBegin REAL LngBegin REAL LatEnd REAL LngEnd REAL RETURNS FLOAT AS BEGIN DECLARE