mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句
文章转载地址 http://blog.sina.com.cn/s/blog_7bbfd5fd01017d1e.html 感谢作者。
在原文的基础上,我新增了sql语句,方便大家理解
- SET FOREIGN_KEY_CHECKS=0;
- -- ----------------------------
- -- Table structure for customer
- -- ----------------------------
- DROP TABLE IF EXISTS `customer`;
- CREATE TABLE `customer` (
- `id` int(11) unsigned NOT NULL auto_increment COMMENT '自增主键',
- `name` varchar(50) NOT NULL COMMENT '名称',
- `lon` double(9,6) NOT NULL COMMENT '经度',
- `lat` double(8,6) NOT NULL COMMENT '纬度',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='商户表';
- -- ----------------------------
- -- Records of customer
- -- ----------------------------
- INSERT INTO `customer` VALUES ('1', '天津市区', '117.315575', '39.133462');
- INSERT INTO `customer` VALUES ('2', '北京市区', '116.407999', '39.894073');
- INSERT INTO `customer` VALUES ('3', '保定', '115.557124', '38.853490');
- INSERT INTO `customer` VALUES ('4', '石家庄', '114.646458', '38.072369');
- INSERT INTO `customer` VALUES ('5', '昌平区1', '116.367180', '40.009561');
- INSERT INTO `customer` VALUES ('6', '海淀区2', '116.313425', '39.973078');
- INSERT INTO `customer` VALUES ('7', '海淀区1', '116.329236', '39.987231');
然后我们开始用mysql自带的函数,计算customer表中,每个地方具体。
- 传入参数 纬度 40.0497810000 经度 116.3424590000
- /*传入的参数为 纬度 纬度 经度 ASC升序由近至远 DESC 降序 由远到近 */
- SELECT
- *,
- ROUND(
- 6378.138 * 2 * ASIN(
- SQRT(
- POW(
- SIN(
- (
- 40.0497810000 * PI() / 180 - lat * PI() / 180
- ) / 2
- ),
- 2
- ) + COS(40.0497810000 * PI() / 180) * COS(lat * PI() / 180) * POW(
- SIN(
- (
- 116.3424590000 * PI() / 180 - lon * PI() / 180
- ) / 2
- ),
- 2
- )
- )
- ) * 1000
- ) AS juli
- FROM
- customer
- ORDER BY
- juli ASC
至此,我们就能清楚的查看到纬度 40.0497810000 经度 116.3424590000 距离customer表中的每个地区的距离(单位 m)
PS 用到的经纬度查询工具 http://www.gpsspg.com/maps.htm
mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句的更多相关文章
- mysql 计算两点经纬度之间的距离含具体sql语句
mysql距离计算,单位m,以及排序 lon 经度 lat 纬度 一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180) 首先新建一张表,里面包含经纬度 SET F ...
- mysql 下 计算 两点 经纬度 之间的距离(转)
公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...
- mysql 下 计算 两点 经纬度 之间的距离
公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...
- mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- mysql 计算两点经纬度之间的直线距离(具体sql语句)
文章转载地址 http://blog.sina.com.cn/s/blog_7bbfd5fd01017d1e.html 新增sql语句具体实现 计算距离(单位 m)并排序 longitude 经度 l ...
- js计算两经纬度之间的距离
js如下: // 方法定义 lat,lng function GetDistance( lat1, lng1, lat2, lng2){ var radLat1 = lat1*Math.PI / ...
- IOS 计算两个经纬度之间的距离
IOS 计算两个经纬度之间的距离 一 丶 -(double)distanceBetweenOrderBy:(double) lat1 :(double) lat2 :(double) lng1 :(d ...
- PHP计算两个已知经纬度之间的距离
/** *求两个已知经纬度之间的距离,单位为千米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位千米 **/ privat ...
- PHP计算经纬度之间的距离
<?php /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return floa ...
随机推荐
- ubuntu tomcat的安装与配置
一.下载jdk 大概是tomat大部分是由java写的, 所以一开始安装tomcat必须得配置好jdk http://www.oracle.com/technetwork/java/javase/do ...
- Python学习笔记 - day12 - Python操作NoSQL
NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...
- HDU-5351
MZL's Border Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- hihocoder 1177 : 顺子
#1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的 ...
- [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 ...
- Django 批量导入文件
1. 按照xlrd软件 pip3 install xlrd 2. POST提交文件获取数据 方法一:写入硬盘,xlrd读取xlsx文件获取文件数据 def batch_view(self,reques ...
- Mysql 中的Text字段的范围
mysql中text 最大长度为65,535(2的16次方–1)字符的TEXT列.如果你觉得text长度不够,可以选择 MEDIUMTEXT最大长度为16,777,215. LONGTEXT最大长度为 ...
- Centos7 Elasticsearch部署
(1)ELKStack简介 1.elk介绍 ELK Stack包含:ElasticSearch.Logstash.Kibana ElasticSearch是一个搜索引擎,用来搜索.分析.存储日志.它是 ...
- LintCode 13. Implement strStr()
LintCode 13. Implement strStr() 题目描述 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出 ...
- ubuntu右上角红色三角警告
问题:ubuntu右上角红色三角感叹号警告,显示更新信息已过期The update information is outdated. 解决方案: 首先在“系统设置(system settings)”- ...