mysql经纬度查范围内_sql语句查询经纬度范围
最近在做查询指定经纬度范围的数据;问题不知如何下手,于是网上找了点资料,其中有些不懂的地方希望大家能给点想法!
问题是这样的:
sql语句查询经纬度范围
指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。
经度:113.914619
纬度:22.50128
范围:2km
longitude为数据表经度字段
latitude为数据表纬度字段
SQL在mysql下测试通过,其他数据库可能需要修改
SQL语句如下:
select * from location where sqrt( ( ((113.914619-longitude)*PI()*12656*cos(((22.50128+latitude)/2)*PI()/180)/180) * ((113.914619-longitude)*PI()*12656*cos (((22.50128+latitude)/2)*PI()/180)/180) ) + ( ((22.50128-latitude)*PI()*12656/180) * ((22.50128-latitude)*PI()*12656/180) ) )<2
其中的12656是啥意思啊,怎么来的呀?如果有大神整体解释下那就更好了!!
可以参考一下geohash,效率应该更高
http://www.cnblogs.com/LBSer/p/3310455.html
算一下球面两点距离就知道了,就是一个公式
d(x1,y1,x2,y2)=r*arccos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))
加上距离的换算单位,自己就能知道那个值了
从语义来看应该是
1经度(纬度)= 12656米
。不过这只是近似值,尤其对经度来说,纬度越高的地方这个值越小,极端情况就是在极点为0。
这条sql的效率极低,需要扫描整张表。可以考虑使用空间索引,MySQL的话,可以了解下
MySQL Spatial
。MongoDB对空间数据的支持比较好,内置了
GeoHash
功能。
当初看了这篇文章,问题就解决了 http://tech.meituan.com/lucene-distance….
mysql经纬度查范围内_sql语句查询经纬度范围相关推荐
- MySQL备份恢复之mysqldump备份_SQL语句模式
mysqldump备份_SQL语句模式 mysql备份类型 1.分为冷备和热备 冷备就是在数据库shutdown以后进行备份 热备就是在数据库open进行备份 2.又可以分为物理备份和逻辑备份 (1 ...
- MySQL怎么查游戏内邮件附件_怎么查询游戏mysql账号密码
怎么查看mysql数据库的用户名和密码? 如何查看mysql数据库的登录名和密码: 通过Windows的服务管理器查看.首先安装Maki5.服务端 "开始"-"运行&qu ...
- mysql如何查询前几天_sql语句查询mysql怎么取前几天的数据
满意答案 hong1992416 2015.03.24 采纳率:54% 等级:12 已帮助:12747人 一.当天或当日插入的数据: 1.传统对比判断:SELECT * FROM `t` WHE ...
- mysql 年龄段分组_SQL语句查询年龄分段分组查询
此情况用于数据库中没有"年龄"这个字段,只有"出生日期"这个字段.先计算出"年龄",在分组查询. 1.SELECT *, ROUND(DAT ...
- MySQL查询被选修的课程_sql语句查询没有被学生选修过的课程(即课程号没有在sc表中出现过)的名称....
展开全部 1.创建学生及课程表, create table test_student(stu_id number, class_id number); create table test_class( ...
- mysql如何查询成绩前5名_sql 语句查询 前5名后5名的成绩
蝴蝶不菲 两种办法:分别求最大和最小,然后union allselect * from(select * from table order by 成绩) where rownum<=5union ...
- sql语句查询经纬度范围
指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude ...
- mysql 时差查了13小时_MySQL查询检查如何获取时差
让我们首先创建一个表-mysql> create table DemoTable1570 -> ( -> ArrivalTime datetime -> ); 使用插入命令在表 ...
- 阿里云 mysql 强制查主库_mysql数据库权限查询
mysql数据库权限查询 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servi ...
- sql语句查询经纬度范围 Oracle
指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:23.33 纬度:34.66 范围:2000km SA_LONGITUDE为数据表经度字段 SA_LA ...
最新文章
- 网络推广外包专员浅析为什么说企业网站都需要网络推广外包?
- 学python能赚什么外卖-python实现外卖信息管理系统
- linux桌面文件夹改图标,Linux 给桌面程序设置个性化图标
- 神策数据王琛:用户画像实践之神策标签生产引擎架构
- linux数据同步技术比较,linux下实现web数据同步的四种方式(性能比较)教程.docx
- java不朽神迹,不朽的神迹 Eternal Legacy HD v1.0.8
- php安装文档,PHP - Manual: 安装 (官方文档)
- 深度学习的实用层面 —— 1.4 正则化
- grails安装部署_grails中文版
- linux rpm安装zabbix,CentOS 7上安装Zabbix Server 3.0 图文详解
- 南邮ctf mysql_南邮ctf知识点汇总 - Crypto篇
- matlab的区域操作,matlab的操作()
- linux删除进程文件,Linux如何查找或删除正在使用某文件的进程
- MMDetection2.XX-Necks之FPN源码解析
- 区块链在图书馆中应用
- 任何辨别你的计算机中了威金病毒
- [视频]AI 机器学习 深度学习 视频教程汇总
- 高级着色语言HLSL入门
- ps图层混合模式的含义
- Paypal支付/回调/退款