【python学习笔记】Python对经纬度处理
来源:互联网 发布:python 交易策略 模拟 编辑:程序博客网 时间:2024/06/14 04:26
说明
因为地球是球面,所以地球平面间的距离也得根据球面来计算。
连个问题:
- 两经纬度点之间的距离
- 根据一个给定经纬度的点,进行附近若干距离地点查询
两点之间的距离
# 根据经纬度计算距离def __distance(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数) """ 根据经纬度计算距离 :param lon1: 点1经度 :param lat1: 点1纬度 :param lon2: 点2经度 :param lat2: 点2纬度 :return:distance """ # 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [float(lon1), float(lat1), float(lon2), float(lat2)]) dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2 c = 2 * asin(sqrt(a)) r = 6371.137 # 地球平均半径,单位为公里 return float('%.2f' % (c * r))
Mysql-根据一个给定经纬度的点,进行附近若干距离地点查询
需求:已知当前位置,查找附近10km内的所有站点
效果应该是地图上有一个圆形的范围,但是这种思路只想到对每条记录,去进行遍历,跟数据库中的每一个点进行距离计算,当距离小于500米时,认为匹配。这样做确实能够得到结果,但是效率极其低下,因为每条记录都要去循环匹配n条数据,其消耗的时间可想而知。
看到网上有个思路:利用我们想要得到圆的外接正方形,然后拿正方形的经纬度范围去搜索数据库。
# 确定查询经纬度范围def __get_area(latitude, longitude, dis): """ 确定查询经纬度范围 :param latitude:中心纬度 :param longitude:中心经度 :param dis:半径 :return:(minlat, maxlat, minlng, maxlng) """ r = 6371.137 dlng = 2 * math.asin(math.sin(dis / (2 * r)) / math.cos(latitude * math.pi / 180)) dlng = dlng * 180 / math.pi dlat = dis / r dlat = dlat * 180 / math.pi minlat = latitude - dlat maxlat = latitude + dlat minlng = longitude - dlng maxlng = longitude + dlng return minlat, maxlat, minlng, maxlng
leason | 博客
阅读全文
0 0
- 【python学习笔记】Python对经纬度处理
- Data Analysis学习笔记 --- Python数据清洗对字符串处理
- Python学习笔记--异常处理
- python学习笔记-字符串处理
- python字符串处理学习笔记
- Python学习笔记--异常处理
- Python学习笔记--异常处理
- 【Python学习笔记】错误处理
- python学习笔记 错误处理
- Python学习笔记 异常处理
- Python文件处理学习笔记
- Python异常处理学习笔记
- Python 学习笔记 -处理excel
- 3.python学习笔记:python对文件的操作
- python(异常处理机制,学习笔记摘要)
- Python学习笔记(4)--异常处理
- python学习笔记-------参数的处理
- Python字符串处理(版本2.7)-学习笔记
- 前端性能优化
- 洛谷 P1007 独木桥
- MariaDB 编译安装
- 魅族自动化测试架构之路地址
- lombok 基础入门
- 【python学习笔记】Python对经纬度处理
- 图像卷积、相关以及在MATLAB中的操作 2016年7月11日 20:34:35, By ChrisZZ 区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作。空间滤波操作有时候也被叫做卷积滤
- Generic Views
- mysql使用like查询使用
- JavaEE上传和下载
- 51nod-1140-矩阵相乘结果的判断
- CAD批量转pdf的教程
- 【反序表+树状数组】Codeforces Round #441(Div.2)D[Sorting the Coins]题解
- 深度学习人工智能/大数据/云计算-书籍整理