两个地理坐标(经纬度)地表距离计算公式:

公式解释如下:

  1. Long1,Lat1表示A点经纬度,Long2,Lat2表示B点经纬度;
  2. a=Lat1–Lat2 为两点纬度之差,b=Long1-Long2为两点经度之差;
  3. 6378.137为地球半径,单位为千米;
  4. 计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米;
  5. 计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。

引用自https://segmentfault.com/a/1190000013922206

SQL语句实现如下:

-- A点坐标(#{longitude},#{latitude}),B点坐标(longitude,latitude),若有一个坐标值为空则距离默认为100万公里(一个不合理的值)
SELECT
IF((ISNULL(#{latitude}) || LENGTH(trim(#{latitude})) < 1 || ISNULL(latitude) || LENGTH(trim(latitude)) < 1), 1000000,
ROUND(
6378.137 * 2
* ASIN(
SQRT(
POW(SIN((#{latitude} * PI() / 180 - latitude * PI() / 180) / 2), 2)
+ COS(#{latitude} * PI() / 180)
* COS(latitude * PI() / 180)
* POW(SIN((#{longitude} * PI() / 180 - longitude * PI() / 180) / 2),2)
)
),
2)
) AS distance,
name,
photo_url photoUrl,
address,
telephone,
latitude latitude,
longitude longitude
FROM
store
WHERE
void_flag = 1
ORDER BY
distance,code ASC

:)

利用SQL计算两个地理坐标(经纬度)之间的地表距离的更多相关文章

  1. SQL 计算两个地理坐标相差的距离的函数

    Create function getGreatCircleDistance(@lat1 decimal(18,11),@lng1 decimal(18,11),@lat2 decimal(18,11 ...

  2. HTML5地理定位(已知经纬度,计算两个坐标点之间的距离)

    事实上,地球上任意两个坐标点在地平线上的距离并不是直线,而是球面的弧线. 下面介绍如何利用正矢公式计算已知经纬度数据的两个坐标点之间的距离.半正矢公式也成为Haversine公式,它最早时航海学中的重 ...

  3. 【HANA系列】SAP HANA SQL计算两个日期的差值

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL计算两个 ...

  4. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException { String a = ...

  5. Python datetime库计算两个时间点之间的分钟(秒、天)数

    计算两个时间点之间的分钟数 import datetime def minNums(startTime, endTime): '''计算两个时间点之间的分钟数''' # 处理格式,加上秒位 start ...

  6. 让上下两个DIV块之间有一定距离或没有距离

    1.若想上下DIV块之间距离,只需设定:在CSS里设置DIV标签各属性参数为0div{margin:0;border:0;padding:0;}这里就设置了DIV标签CSS属性相当于初始化了DIV标签 ...

  7. SQL SERVER数据库,按年、月、日、时、分、秒计算两个时间字段之间的间隔时间样例

    使用DATEDIFF(取值,时间字段1,时间字段2) 举例: SELECT DATEDIFF(YEAR,DRYSJ,DCYSJ),* FROM YXHIS2019..TBZYBR2019 --SQL ...

  8. 计算两个latitude-longitude点之间的距离? (Haversine公式)

    问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Hav ...

  9. sql 计算两个经纬度点之间的距离

    这里用到的算法和地球半径等数据均来自网络,此文只作整理记录. 地球半径值采用赤道半径 6378137.0米,这是1980年的国际标准数据. //存储过程 CREATE FUNCTION [f_GetD ...

随机推荐

  1. 解决U盘不能分配空间(windows下操作)

    亲测可行 1.WIN+R => cmd => diskpart命令进入工具. 2.使用LIST DISK查看所有磁盘,?提示所有命令. 3.SELECT DISK 1将磁盘聚焦到1号磁盘, ...

  2. Java foreach循环

    foreach循环:增强性的for循环应用: 在for语句中,需要使用索引来进行操作具体的数组或集合内容操作:而foreach可以取消索引的操作细节: for ( 类型 变量 : 数组 | 集合 ) ...

  3. 将流数据输出到Mysql中

    outputMysqlApp.scala import java.sql.DriverManager import org.apache.spark.SparkConf import org.apac ...

  4. PHP基础(谈一谈Session&Cookie)

    cookie和sessiond的主要区别 (1).保存位置稍有区别 cookie数据存放在客户的浏览器上,服务器端不用保存.session数据放在服务器上,本地内存也有一份. (2).安全性不同 co ...

  5. log4j每天生成一个文件配置

    log4j.rootLogger=INFO,CONSOLE,logDailyFile log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlo ...

  6. C语言杂

    atof——把字符串转化成浮点型 C语言标准库 头文件: #include <stdlib.h> 定义函数:double atof(const char *nptr); #include ...

  7. 07webpack--下载对应的css模块

    <!--本节 loader配置处理css样式 在src下新建css文件夹 在css下创建index.css 在main.js这个入口文件中 引入js模块 和 css杨思表是不同的 在main.j ...

  8. kali下ll命令无法使用

    重装了系统之后,使用ll命令竟然发现报错了. bash: ll:未找到命令   果断解决一波: vim ~/.bashrc   将alias ll=’ls -l‘前面的注释符号#删掉 运行   问题完 ...

  9. maven配置阿里云国内仓库

    <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http:/ ...

  10. uiautomator手动调试与快速高度设置

    创建java工程:Demo1包名:com.bing.cn类名:Test测试用例:testDemo android create uitest-project -n Demo1 -t 7 -p E:\e ...