解决直接和反地球曲率问题。
项目描述
karney简介
karney
库提供了C++库GeographicLib的一部分原生Python实现。目前实现以下操作:
-
计算两个地理位置之间的地表距离。
-
给定起点、方位角/航向和距离,找到目的地点。
所有函数都是矢量化,当在数组上操作时,提供与编译的C++代码相当的速度。
这些函数的一些常见特性
角度(纬度、经度、方位角)以度或弧度为单位测量。距离以米为单位测量。椭球体指定为[a, f],其中a = 赤道半径,f = 扁率。保持|f| <= 1/50以获得完全的双精度精度。
安装
$ pip install karney
用法
以下给出两个地球曲率问题的解决方案。
地表距离
找到两个位置A和B之间的地表距离sAB(即大圆距离)。忽略A和B的高度,即如果它们不为零高度,则我们寻求位于地球表面的点之间的距离,直接位于A和B上方/下方。使用地球半径6371e3 m。将结果与WGS-84椭球体的精确计算进行比较。
在地球测量学中,这被称为“第二地球测量问题”或“球体/椭球体的反地球测量问题”。
球体的解决方案
>>> import numpy as np
>>> from karney.geodesic import rad, sphere_distance_rad, distance
>>> latlon_a = (88, 0)
>>> latlon_b = (89, -170)
>>> latlons = latlon_a + latlon_b
>>> r_Earth = 6371e3 # m, mean Earth radius
>>> s_AB = sphere_distance_rad(*rad(latlons))[0]*r_Earth
>>> s_AB = distance(*latlons, a=r_Earth, f=0, degrees=True)[0] # or alternatively
>>> 'Ex5: Great circle = {:5.2f} km'.format(s_AB / 1000)
'Ex5: Great circle = 332.46 km'
WGS84椭球体的精确解决方案
>>> s_12, azi1, azi2 = distance(*latlons, degrees=True)
>>> 'Ellipsoidal distance = {:5.2f} km'.format(s_12 / 1000)
'Ellipsoidal distance = 333.95 km'
另请参阅 www.navlab.net上的示例5
A和到B的方位角/距离
我们有初始位置A,以相对于北方的方位角(航向)给出的行进方向,以及沿大圆给定的行进距离sAB。使用地球半径6371e3 m找到目的地点B。
在地球测量学中,这被称为“第一地球测量问题”或“球体的直接地球测量问题”。
>>> import numpy as np
>>> from karney.geodesic import reckon
>>> lat, lon = 80, -90
>>> msg = 'Ex8, Destination: lat, lon = {:4.4f} deg, {:4.4f} deg'
大圆解决方案
>>> lat2, lon2, azi_b = reckon(lat, lon, distance=1000, azimuth=200, a=6371e3, f=0, degrees=True)
>>> msg.format(lat2, lon2)
'Ex8, Destination: lat, lon = 79.9915 deg, -90.0177 deg'
>>> np.allclose(azi_b, -160.0174292682187)
True
精确解决方案
>>> lat_b, lon_b, azi_b = reckon(lat, lon, distance=1000, azimuth=200, degrees=True)
>>> msg.format(lat_b, lon_b)
'Ex8, Destination: lat, lon = 79.9916 deg, -90.0176 deg'
>>> np.allclose(azi_b, -160.01742926820506)
True
贡献
有兴趣贡献吗?请查看贡献指南。请注意,本项目遵循行为准则。通过贡献本项目,您同意遵守其条款。
许可
karney
由Per A. Brodtkorb创建,并采用MIT/X11许可证条款。
致谢
karney
包为Python编写,由Per A. Brodtkorb在FFI(挪威国防研究机构)基于Charles Karney为Matlab和GNU Octave编写的地理工具箱编写。karney.geodesic模块是Matlab/Octave GeographicLib工具箱的矢量化重实现。
内容基于Karney, 2013的文章。因此,使用本软件的出版物应引用该文章。
使用cookiecutter
和py-pkgs-cookiecutter
模板创建了karney
包结构。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分布
karney-1.0.10.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e178e24d0941231b1ca062bf677becdd5632b1878bf4369a65b6f88cc3f85f3d |
|
MD5 | 55614e10cabf77eb0ae2f8dbca2785b0 |
|
BLAKE2b-256 | 192b14ad086fa0caf46a31990d74214b3122c94577040ca2498094009ceddf0b |
karney-1.0.10-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0d7379b06295a3ffc9b9204e0d426e659057f3e5ab997c463f5b2132502c9826 |
|
MD5 | 3f6c9e774af795f173711dddfcd56965 |
|
BLAKE2b-256 | 1a2fd7f83ea2edf3b39ffefb9072e7082c8947f0c17bf4891e6ad9b1dee6ddae |