"使用Vincenty公式在Python中进行大圆计算"
项目描述
pygc 
使用Vincenty公式为Python 2/3进行大圆计算
安装
pip pip install pygc
conda conda install -c conda-forge pygc
开发 pip install git+https://github.com/axiom-data-science/pygc.git
大圆
from pygc import great_circle
从初始点、距离和方位角生成新点
great_circle(distance=111000, azimuth=65, latitude=30, longitude=-74)
{'latitude': 30.41900364921926,
'longitude': -72.952930949727573,
'reverse_azimuth': 245.52686122611451}
从初始点以三个不同的角度生成三个新点
great_circle(distance=[100000, 200000, 300000], azimuth=[90, 180, -90], latitude=30, longitude=-74)
{'latitude': array([29.99592067, 28.1955554, 29.96329797]),
'longitude': array([-72.96361148, -74., -77.10848799]),
'reverse_azimuth': array([270.51817296, 360., 88.44633085])}
在三个初始点南方的三个点(经度变化不应很大)
great_circle(distance=[100000, 200000, 300000], azimuth=180, latitude=30, longitude=[-74, -75, -76])
{'latitude': array([29.09783841, 28.1955554, 27.29315337]),
'longitude': array([-74., -75., -76.]),
'reverse_azimuth': array([360., 360., 360.])}
在三个初始点西方的三个点(纬度变化不应很大)
great_circle(distance=[100000, 200000, 300000], azimuth=270, latitude=[30, 31, 32], longitude=-74)
{'latitude': array([ 29.99592067, 30.98302388, 31.96029484]),
'longitude': array([-75.03638852, -76.09390011, -77.17392199]),
'reverse_azimuth': array([ 89.48182704, 88.92173899, 88.31869938])}
围绕一点的星爆图案
great_circle(distance=100000, azimuth=[0, 60, 120, 180, 240, 300], latitude=30, longitude=-74)
{'latitude': array([ 30.90203788, 30.44794729, 29.54590235, 29.09783841, 29.54590235, 30.44794729]),
'longitude': array([-74., -73.09835956, -73.10647702, -74., -74.89352298, -74.90164044]),
'reverse_azimuth': array([ 180., 240.45387965, 300.44370186, 360., 59.55629814, 119.54612035])}
大距离
每对点之间的距离以米为单位返回。
from pygc import great_distance
两点之间的距离和角度
great_distance(start_latitude=30, start_longitude=-74, end_latitude=40, end_longitude=-74)
{'azimuth': 0.0, 'distance': array(1109415.6324018822), 'reverse_azimuth': 180.0}
两组点之间的距离和角度
great_distance(start_latitude=[30, 35], start_longitude=[-74, -79], end_latitude=[40, 45], end_longitude=[-74, -79])
{'azimuth': array([0., 0.]),
'distance': array([1109415.63240188, 1110351.47627673]),
'reverse_azimuth': array([180., 180.])}
初始点和三个端点之间的距离和角度
great_distance(start_latitude=30, start_longitude=-74, end_latitude=[40, 45, 50], end_longitude=[-74, -74, -74])
{'azimuth': array([0., 0., 0.]),
'distance': array([1109415.63240188, 1664830.98002662, 2220733.64373152]),
'reverse_azimuth': array([180., 180., 180.])}
来源
澳大利亚地心坐标系算法技术手册
https://www.icsm.gov.au/sites/default/files/2017-09/gda-v_2.4_0.pdf 椭球体计算
有多个公式可用于计算椭球体上的精确大地测量位置、方位角和距离。
Vincenty 公式(Vincenty,1975)可用于长度从几厘米到近20000公里的线,精度为毫米级。这些公式已经通过与其他公式(Rainsford,1955 & Sodano,1965)的结果进行比较,在澳大利亚地区进行了广泛测试。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
pygc-1.3.0.tar.gz (21.4 kB 查看哈希值)
构建分发
pygc-1.3.0-py3-none-any.whl (21.1 kB 查看哈希值)