Mysql数据库中计算两GPS坐标的距离有两种方式:

1、直接使用SQL语句:#lat为纬度, lng为经度, 一定不要弄错

declare @lng1 float;

declare @lat1 float;

declare @lng2 float;

declare @lat2 float;

set @lng1=116.3899;

set @lat1=39.91578;

set @lng2=116.3904;

set @lat2=39.91576;

select (2*ATAN2(SQRT(SIN((@lat1-@lat2)*PI()/180/2)

*SIN((@lat1-@lat2)*PI()/180/2)+

COS(@lat2*PI()/180)*COS(@lat1*PI()/180)

*SIN((@lng1-@lng2)*PI()/180/2)

*SIN((@lng1-@lng2)*PI()/180/2)),

SQRT(1-SIN((@lat1-@lat2)*PI()/180/2)

*SIN((@lat1-@lat2)*PI()/180/2)

+COS(@lat2*PI()/180)*COS(@lat1*PI()/180)

*SIN((@lng1-@lng2)*PI()/180/2)

*SIN((@lng1-@lng2)*PI()/180/2))))*6378140;

#返回结果: 42.7484246368099

2、定义函数后再调用(适合批量计算):# use aiezu;

drop function getDistance;

DELIMITER $$

CREATE DEFINER=`root`@`localhost` FUNCTION `getDistance`(

lng1 float(10,7)

,lat1 float(10,7)

,lng2 float(10,7)

,lat2 float(10,7)

) RETURNS double

begin

declare d double;

declare radius int;

set radius = 6378140; #假设地球为正球形,直径为6378140米

set d = (2*ATAN2(SQRT(SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)+

COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lng1-lng2)*PI()/180/2)

*SIN((lng1-lng2)*PI()/180/2)),

SQRT(1-SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)

+COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lng1-lng2)*PI()/180/2)

*SIN((lng1-lng2)*PI()/180/2))))*radius;

return d;

end

$$

DELIMITER ;

select getDistance(116.3899,39.91578,116.3904,39.91576); #调用函数

#返回结果:43.045058294389

常见问题及解决方法:

常见问题:

在创建函数前报如下错误:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)解决方法:

在创建函数前执行下面SQL语句:set global log_bin_trust_function_creators=1;或者修改my.cnf文件并重启mysqld服务:log_bin_trust_function_creators=1

PHP计算两个GPS坐标点之间的距离: http://aiezu.com/article/18.html

Javascript计算两个GPS坐标的距离: http://aiezu.com/article/17.html

更多关于GPS计算请参考:http://www.movable-type.co.uk/scripts/latlong.html(被墙)

mysql gps数据查询_Mysql数据库中计算两GPS坐标的距离相关推荐

  1. mysql 脏数据查询_MySQL数据库02

    MySQL数据库 前言: 前面我们了解了什么是数据库,什么是MySQL数据库以及如何运用,接下来我们接着深入学习MySQL. (提前声明,以下所提供的事例不标准,仅供参考) 数据库的备份与还原: 备份 ...

  2. mysql 查看数据库函数_MySQL数据库中常用查询函数简介

    MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...

  3. NodeJS同步MySQL上游数据到ElasticSearch数据库中

    NodeJS同步MySQL上游数据到ElasticSearch数据库中 项目地址: https://github.com/Miazzy/xdata-elasticsearchs-service.git ...

  4. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  5. Android 高德地图根据地址获取经纬度,计算两个坐标的距离

    1.到高德开放平台申请,获取key 高德开放平台:https://lbs.amap.com/ 2.下载高德定位及地址搜索SDK:https://download.csdn.net/download/m ...

  6. mysql 查找数据过程_mysql数据库查询过程探究和优化建议

    查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...

  7. mysql 从库数据损坏_MySQL数据库中数据损坏恢复全过程

    MySQL数据库中数据损坏恢复全过程 前几天因为MySQL数据库部分数据损坏原因,我尝试了下恢复数据,之后整理以下文档,供各位参考,以备各位同事以后如有类似问题,可以少走些弯路,尽快解决问题. 环境: ...

  8. mysql double保留两位小数_mysql数据库中计算时如何保留两位小数呢?

    摘要: 下文讲述mysql数据库中数值计算时保留两位小数的方法分享,如下所示: 例: mysql > select convert(9521,decimal(12,2)); +--------- ...

  9. mysql 性能 数据 指标_MySQL数据库:三个关键性能指标

    今天主要介绍MySQL数据库,或者说所有数据库的三个关键性能指标: qps 每秒处理的查询数 tps 每秒处理的事务数 IOPS 每秒磁盘进行的I/O操作次数 一.TPS(适用innodb) 1. 概 ...

最新文章

  1. 北大成功研发 “忘情水” ,可精准删除特定记忆,有望今年进行人体测试
  2. mSystem:西农韦革宏组细菌-真菌互作影响微生物多样性-土壤养分循环关系
  3. db2关闭下一句sql的日志_MySQL 用户和权限管理,日志体系简介
  4. error: No resource identifier found for attribute ‘backIcon’ in package
  5. ElasticSearch中distinct,count和group by的实现
  6. ES6 new syntax of Default Function Parameters
  7. apicloud使用指南
  8. sizeof和strlen的区别(其中涉及NUL的讲解)
  9. android 获取栈顶activity,Android : 如何得到Activities栈顶的Activity名称
  10. 明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype...
  11. C语言学习之插入排序
  12. vscode同时打开多个文档方法,简直了
  13. aop实现原理_Spring学习之AOP
  14. Python常用快捷键整理
  15. python文件操作快速入门
  16. 一个屌丝程序猿的人生(十五)
  17. 关于opencv fitLine直线拟合得斜率及截距
  18. 解决Maven打包报错:Failed to clean project: Failed to delete
  19. 笛卡尔坐标系中八个卦限对应的位置
  20. HTML转义字符表,JavaScript常用转义符

热门文章

  1. 买了淘宝TeamViewer盗版账号才知道安全没保障,大家别再上当了
  2. 互联网公司招聘--去哪儿--产品运营--2014年笔试题
  3. 计算机组成原理~计算机系统简介①
  4. AR/VR训练营(无锡站)签约挂牌仪式成功举行
  5. 如何调整PDF的页面布局
  6. 将秒换成 小时,分钟,秒
  7. nargin 和 nargout
  8. linux卸载mysql(完全卸载)
  9. JdbcTemplate 查询数据库 + 具名参数 NamedParameterJdbcTemplate
  10. 量子计算(5)基础知识3:量子逻辑门(下)