不需要用到redis作经纬度查询,当然你做缓存除外。实际上我们在黑客马拉松就做过一个类似的项目,它的核心思想就是取出当前用户所在地点附近的用户。

但是我注意到你使用的是mysql,虽然MongoDB能够很方便的实现这一目标,但如果你不想迁移数据库的话,也还是有方法来实现的,当然你得有思想准备,此方法可能比较曲折。我以下要说的大部分内容都来自Mysql AB介绍实现geo search的文章。

首先我们要解决的是把经纬度之差换算成距离之差,这里面涉及到一些角度转换公式,它就是

其中d是距离(distance),R是地球半径。这个公式很复杂,但是我们的最终目标是把d求出来,我们来看这个求值过程,以下是伪代码R = 地球半径

Δlat = lat2 − lat1 //纬度之差

Δlong = long2 − long1 //经度之差

a = sin2(Δlat/2) + cos(lat1) * cos(lat2) * sin2(Δlong/2)

c = 2*atan2(√a, √(1−a))

d = R*c

来把它转换为SQL代码,看着会有点晕,其中3956是地球半径3956 * 2 * ASIN ( SQRT (

POWER(SIN((orig.lat - dest.lat)*pi()/180 / 2), 2) + COS(orig.lat * pi()/180) * COS(dest.lat * pi()/180) * POWER(SIN((orig.lon - dest.lon) * pi()/180 / 2), 2) ) ) as distance

OK,求值代码已经出来了,来写个SQL测试下(hotels表有三个字段hotel_name,lat,lon)# 设置当前位置的经纬度

set @orig_lat=122.4058;

set @orig_lon=37.7907;

# 设置最大搜索距离

set @dist=10;

SELECT *, 3956 * 2 * ASIN(SQRT(

POWER(SIN((@orig_lat - abs(dest.lat)) * pi()/180 / 2), 2) + COS(@orig_lat * pi()/180 ) * COS(abs(dest.lat) * pi()/180) * POWER(SIN((@orig_lon – dest.lon) *

pi()/180 / 2), 2) )) as distance FROM hotels dest

having distance < @dist ORDER BY distance limit 10;

这样你就可以把距离当前位置10以内的的hotels全部搜索出来了。你可以用存储过程来优化这一代码,让它更加快速。

python读取dat文件经纬度_如何为实时性应用存取经纬度?相关推荐

  1. 什么是.dat? python读取.dat文件并转换为png图像——超简单实现

    相信大家和我一样,对于.dat文件是感到十分陌生的.因此在刚接触到这个小任务的时候我实在花了一些时间来了解到底什么是.dat文件.这里我将我自己的认识分享给大家: 总体而言,对于.dat文件的定义,我 ...

  2. python读取大文件性能_强悍的Python读取大文件的解决方案

    Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...

  3. python读取dat文件

    读取dat文件本想像这样 df_train=pd.read_table(r'C:\Users\admin\Desktop\game_test\game\apptype_train.dat', name ...

  4. python读取dat文件写入表格_在python中从.dat文件读取和执行计算

    我需要用python读取一个.dat文件,它总共有12列,数百万行.我需要把第2.3和4栏和第1栏分开计算.所以在加载.dat文件之前,是否需要删除所有其他不需要的列?如果没有,如何有选择地声明列并要 ...

  5. python读取dat文件写入表格_Pandas:外部文件数据导入/ 读取 (如 :csv、txt、tsv、dat、excel文件)、文件存储(to_csv、to_excel)...

    一.文本文件读取 文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件. csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数 ...

  6. 用python读取dat文件,wifi数据采集工具csi tool数据文件(.dat文件)解析

    项目地址: https://github.com/hongshixian/CSI_reader 前言 数据采集工具csi_tool采集数据并保存为后缀.dat的数据文件,在csi_tool中提供一个c ...

  7. python读取数据文件夹_使用python依次读取文件中的所有csv格式的数据

    使用python依次读取文件中的所有csv格式的数据: #coding=gbk import pandas as pd import os path = r'D:\ml_datasets\PHM\c6 ...

  8. python读取plt文件吗_如何读取连续的.plt文件并存储它们

    我有1000个文件要用python读取.以前,我有74个,我只是一个一个地读,但现在有太多的事情要做.在data_1 = np.genfromtxt('test4-1.000001.plt', del ...

  9. 怎么python把dat文件生成_如何在Python中编辑*.txt或*.dat文件信息?

    我是Python的初学者,有下一个"问题".如果你能帮助我,我会很高兴的) 我有一个*.dat文件(我们把它命名为file-1,第一行只是一个标题,我只在这里用来标记列),它看起来 ...

最新文章

  1. 深入剖析ISAServer 网页缓存及配置
  2. swift开发记录 - MARK,TODO,FIXME
  3. java JFrame修改左上角的图片
  4. python爬虫,爬取糗事百科并保存到文件中
  5. 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
  6. SSL *** 安全解决方案
  7. 《黑书》hdu1271递推习题:整数对
  8. 首席架构师徐海峰眼中的架构和出色的架构师
  9. java ocr linux_linux系统如何使用tess4j(java)进行ocr图片文字识别
  10. udhcpc 后台运行的方法【总结】
  11. asp.net如何隐藏服务器控件TEXTBOX
  12. Tomcat启动Maven项目异常:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
  13. 拓端tecdat|R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
  14. 后台审批功能 销售发货单 生成 销售出库单 java NC633 接口开发
  15. 强化学习之Q-learning简介
  16. Excel永远不会消亡!
  17. 期权定价_强化学习的期权定价
  18. DOC文档转换成WPS格式要怎样操作
  19. 教程 | 用安卓手机搭建 web 服务器(三)—— 内网穿透
  20. Nginx 服务器配置域名证书

热门文章

  1. 【Android系统更新--- Android10-getDeviceId返回null---DeviceId---AndroidID】
  2. DSAPI显示PNG异形窗体
  3. mysql数据库64免安装_【文】MySQL-8.0.18-winx64免安装配置
  4. mac电脑屏幕护眼颜色_如何在Mac屏幕上查找任何颜色值
  5. 黑苹果hidp显示不清楚_macOS开启HiDPI外接2K显示器(解决字体发虚问题)
  6. MySql安装手册(二进制安装)
  7. 神经网络算法识别图像,图像识别神经网络算法
  8. Linux 音频设备驱动(宋宝华书)
  9. Android仿超级课程表开源控件
  10. 【高等数值分析】Krylov子空间方法