python实现两个经纬度点之间的距离和方位角
from:http://blog.csdn.net/zhuqiuhui/article/details/53180395
1. 求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好,这里总结一下)
- def getDegree(latA, lonA, latB, lonB):
- """
- Args:
- point p1(latA, lonA)
- point p2(latB, lonB)
- Returns:
- bearing between the two GPS points,
- default: the basis of heading direction is north
- """
- radLatA = radians(latA)
- radLonA = radians(lonA)
- radLatB = radians(latB)
- radLonB = radians(lonB)
- dLon = radLonB - radLonA
- y = sin(dLon) * cos(radLatB)
- x = cos(radLatA) * sin(radLatB) - sin(radLatA) * cos(radLatB) * cos(dLon)
- brng = degrees(atan2(y, x))
- brng = (brng + 360) % 360
- return brng
2. 求两个经纬点的距离函数:P0(latA, lonA), P1(latB, lonB)
- def haversine(a, b): # 经度1,纬度1,经度2,纬度2 (十进制度数)
- """
- Calculate the great circle distance between two points
- on the earth (specified in decimal degrees)
- """
- lat1 = a[0][0]
- lon1 = a[1][0]
- lat2 = b[0][0]
- lon2 = b[1][0]
- # 将十进制度数转化为弧度
- lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
- # haversine公式
- 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 # 地球平均半径,单位为公里
- return c * r * 1000
python实现两个经纬度点之间的距离和方位角的更多相关文章
- PHP计算两组经纬度坐标之间的距离
定义π define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); 计算两组经纬度坐标 之间的距离 /** * 计算两组经纬度坐标 之 ...
- php计算两个经纬度地点之间的距离(转)
php计算两个指定的经纬度地点之间的距离,这个在做计算给定某个地点的经纬度,计算其附近的商业区,以及给定地点与附近各商业区之间的距离的时候,还是用的到的.下面是具体的函数代码以及用法示例. 关于如何获 ...
- PHP计算两个经纬度地点之间的距离
/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距 ...
- sql 计算两个经纬度点之间的距离
这里用到的算法和地球半径等数据均来自网络,此文只作整理记录. 地球半径值采用赤道半径 6378137.0米,这是1980年的国际标准数据. //存储过程 CREATE FUNCTION [f_GetD ...
- HTML5地理定位(已知经纬度,计算两个坐标点之间的距离)
事实上,地球上任意两个坐标点在地平线上的距离并不是直线,而是球面的弧线. 下面介绍如何利用正矢公式计算已知经纬度数据的两个坐标点之间的距离.半正矢公式也成为Haversine公式,它最早时航海学中的重 ...
- 微信lbs---返回两个经纬度坐标点的距离
微信开发:lbs附近的商家,在数据库里记录商家的坐标,lbs设置里管理搜索半径,查询的时候,查询 客户当前坐标的半径内的所有商家列表.个人喜欢不一样,我选择了执行sql ,毕竟效果高点.微信开发必须得 ...
- 计算两个latitude-longitude点之间的距离? (Haversine公式)
问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Hav ...
- python实现两台不同主机之间进行通信(客户端和服务端)——Socket
大家好,我是辰哥~ 今天教大家通过Python进行Socket网络编程 (做一个聊天程序) 可以实现在不同的主机(电脑)之间进行通话. 具体效果如何,接着往下看 可以看到客户端(上方)向服务器端(下方 ...
- java通过经纬度计算两个点的之间的距离的算法
通过两个点的经纬度计算距离 从google maps的脚本里扒了段代码,没准啥时会用上.大家一块看看是怎么算的. private const double EARTH_RADIUS = 6378.13 ...
随机推荐
- 《Linux内核分析与实现》 第四周 读书笔记
第五章 系统调用 20135307 张嘉琪 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层,该层主要作用有三个: 它为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳 ...
- c# dataGridView 表头格式设置不管用
解决办法: EnableHeaderVisualStyles设为false
- Linux下使用NTFS格式移动硬盘
https://zhidao.baidu.com/question/66517344.html https://zhidao.baidu.com/question/586036510.html htt ...
- FuelPHP 系列(一) ------ Oil 命令
之前用过 Laravel,框架自带的 artisan 命令,用得爽到爆.现在工作需要,要学习 FuelPHP,首先看到框架目录结构,有 coposer.json 框架可以用 composer 管理,一 ...
- 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!
- 【codevs1690】开关灯 (线段树 区间修改+区间求和 (标记))
[codevs1690]开关灯 2014年2月15日4930 题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这些路灯全是关着的 ...
- 【题解】 bzoj4033: [HAOI2015]树上染色* (动态规划)
bzoj4033,懒得复制,戳我戳我 Solution: 定义状态\(dp[i][j]\)表示\(i\)号节点为根节点的子树里面有\(j\)个黑色节点时最大的贡献值 然后我们要知道的就是子节点到根节点 ...
- 【题解】 [ZJOI2007]矩阵游戏 (二分图匹配)
原题目戳我 Solution: 这个二分图藏还是挺深的,重点在哪里呢?首先我们分析下,交换影响的会是哪里. 每一次交换只会影响某一行上的排列或者某一列上的排列,如果有矩阵是下面这样,就一定不会互相影响 ...
- HGOI 20181028 题解
HGOI 20181028(复赛备考) /* 真是暴力的一天,最后一题MLE?由于数组开得太大了!!! 270滚粗 考场上好像智商高了很多?!(假的) */ sol:暴力求解,然后没有数据范围吐槽一下 ...
- STM32配置GPIO前须先打开其时钟,否则配置失败
@2018-5-9 17:11:38 STM32配置GPIO前须先打开其时钟,否则配置失败