文章转载地址 http://blog.sina.com.cn/s/blog_7bbfd5fd01017d1e.html 感谢作者。

在原文的基础上,我新增了sql语句,方便大家理解

mysql距离计算,单位m,以及排序
lon 经度 lat 纬度
一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180)
首先新建一张表,里面包含经纬度
  1. SET FOREIGN_KEY_CHECKS=0;
  2.  
  3. -- ----------------------------
  4. -- Table structure for customer
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `customer`;
  7. CREATE TABLE `customer` (
  8. `id` int(11) unsigned NOT NULL auto_increment COMMENT '自增主键',
  9. `name` varchar(50) NOT NULL COMMENT '名称',
  10. `lon` double(9,6) NOT NULL COMMENT '经度',
  11. `lat` double(8,6) NOT NULL COMMENT '纬度',
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='商户表';
  14.  
  15. -- ----------------------------
  16. -- Records of customer
  17. -- ----------------------------
  18. INSERT INTO `customer` VALUES ('1', '天津市区', '117.315575', '39.133462');
  19. INSERT INTO `customer` VALUES ('2', '北京市区', '116.407999', '39.894073');
  20. INSERT INTO `customer` VALUES ('3', '保定', '115.557124', '38.853490');
  21. INSERT INTO `customer` VALUES ('4', '石家庄', '114.646458', '38.072369');
  22. INSERT INTO `customer` VALUES ('5', '昌平区1', '116.367180', '40.009561');
  23. INSERT INTO `customer` VALUES ('6', '海淀区2', '116.313425', '39.973078');
  24. INSERT INTO `customer` VALUES ('7', '海淀区1', '116.329236', '39.987231');

  然后我们开始用mysql自带的函数,计算customer表中,每个地方具体。

  1. 传入参数 纬度 40.0497810000 经度 116.3424590000
  1. /*传入的参数为 纬度 纬度 经度 ASC升序由近至远 DESC 降序 由远到近 */
  2. SELECT
  3. *,
  4. ROUND(
  5. 6378.138 * 2 * ASIN(
  6. SQRT(
  7. POW(
  8. SIN(
  9. (
  10. 40.0497810000 * PI() / 180 - lat * PI() / 180
  11. ) / 2
  12. ),
  13. 2
  14. ) + COS(40.0497810000 * PI() / 180) * COS(lat * PI() / 180) * POW(
  15. SIN(
  16. (
  17. 116.3424590000 * PI() / 180 - lon * PI() / 180
  18. ) / 2
  19. ),
  20. 2
  21. )
  22. )
  23. ) * 1000
  24. ) AS juli
  25. FROM
  26. customer
  27. ORDER BY
  28. juli ASC

  至此,我们就能清楚的查看到纬度 40.0497810000 经度 116.3424590000 距离customer表中的每个地区的距离(单位 m)

PS 用到的经纬度查询工具 http://www.gpsspg.com/maps.htm

mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句的更多相关文章

  1. mysql 计算两点经纬度之间的距离含具体sql语句

    mysql距离计算,单位m,以及排序 lon 经度 lat 纬度 一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180) 首先新建一张表,里面包含经纬度 SET F ...

  2. mysql 下 计算 两点 经纬度 之间的距离(转)

    公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...

  3. mysql 下 计算 两点 经纬度 之间的距离

    公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...

  4. mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

    根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...

  5. mysql 计算两点经纬度之间的直线距离(具体sql语句)

    文章转载地址 http://blog.sina.com.cn/s/blog_7bbfd5fd01017d1e.html 新增sql语句具体实现 计算距离(单位 m)并排序 longitude 经度 l ...

  6. js计算两经纬度之间的距离

    js如下: // 方法定义 lat,lng function GetDistance( lat1, lng1, lat2, lng2){    var radLat1 = lat1*Math.PI / ...

  7. IOS 计算两个经纬度之间的距离

    IOS 计算两个经纬度之间的距离 一 丶 -(double)distanceBetweenOrderBy:(double) lat1 :(double) lat2 :(double) lng1 :(d ...

  8. PHP计算两个已知经纬度之间的距离

    /** *求两个已知经纬度之间的距离,单位为千米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位千米 **/ privat ...

  9. PHP计算经纬度之间的距离

    <?php /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return floa ...

随机推荐

  1. ubuntu tomcat的安装与配置

    一.下载jdk 大概是tomat大部分是由java写的, 所以一开始安装tomcat必须得配置好jdk http://www.oracle.com/technetwork/java/javase/do ...

  2. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  3. HDU-5351

    MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. hihocoder 1177 : 顺子

    #1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的 ...

  5. [PAT] 1143 Lowest Common Ancestor(30 分)1145 Hashing - Average Search Time(25 分)

    1145 Hashing - Average Search Time(25 分)The task of this problem is simple: insert a sequence of dis ...

  6. Django 批量导入文件

    1. 按照xlrd软件 pip3 install xlrd 2. POST提交文件获取数据 方法一:写入硬盘,xlrd读取xlsx文件获取文件数据 def batch_view(self,reques ...

  7. Mysql 中的Text字段的范围

    mysql中text 最大长度为65,535(2的16次方–1)字符的TEXT列.如果你觉得text长度不够,可以选择 MEDIUMTEXT最大长度为16,777,215. LONGTEXT最大长度为 ...

  8. Centos7 Elasticsearch部署

    (1)ELKStack简介 1.elk介绍 ELK Stack包含:ElasticSearch.Logstash.Kibana ElasticSearch是一个搜索引擎,用来搜索.分析.存储日志.它是 ...

  9. LintCode 13. Implement strStr()

    LintCode 13. Implement strStr() 题目描述 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出 ...

  10. ubuntu右上角红色三角警告

    问题:ubuntu右上角红色三角感叹号警告,显示更新信息已过期The update information is outdated. 解决方案: 首先在“系统设置(system settings)”- ...