纯 Python 大地测量工具
项目描述
大地测量工具的纯 Python 实现,用于各种椭圆体和球形地球模型,使用精确三角、基于矢量、精确、椭圆、迭代和近似方法的大地(纬度/经度)和地心(ECEF笛卡尔)坐标。
从Chris Veness (C) 2005-2022的JavaScript 原件和Charles FF Karney (C) 2008-2022的 几个C++ 类转码, 并在相同的MIT 许可证下发布。
椭球地球模型有四个模块,ellipsoidalExact, -Karney,-Vincenty和-Nvector ,球面模型有两个模块, sphericalTrigonometry和-Nvector。每个模块都提供了一个大地 纬度和一个地心笛卡尔类,这些类具有计算距离、表面积、周长、初始和最终方位、中间点和最近点、圆交点、路径交点、3 点切除、恒向线和恒向线的方法和功能,三边测量(通过交叉、重叠和 3d)、转换和展开等。有关更多信息和更多详细信息,请参阅文档, Latitude/Longitude , Vincenty和Vector-based geodesy 的描述, 原始 JavaScript 源或文档和Karney的 Python geolib和 C++ GeographicLib。
还包括用于与Cassini-Soldner、 ECEF(地球中心、地球固定笛卡尔)、UTM(通用横向墨卡托和精确)、UPS(通用极地立体)和Web Mercator (伪墨卡托)坐标的转换模块,MGRS(军用网格参考系统、UTM 和UPS)和OSGR(英国条例测量网格参考)网格参考、TRF(陆地参考框架)和用于编码和解码EPSG、Geohashes、Gerefs (WGRS)和Garefs (GARS)的模块.
其他模块提供Albers 等面积投影、等距和其他方位角投影、Lambert等角圆锥投影和位置、使用Cohen-Sutherland、Liang-Barsky和Sutherland-Hodgman 方法裁剪 LatLon点的路径或多边形的功能、功能简化或线性化 LatLon 点(或 numpy 数组)的路径,包括Ramer - Douglas -Peucker、Visvalingam-Whyatt和Reumann-Witkam的实现算法和前者的修改版本。其他类插入LatLon 点的高度和大地水准面模型或计算各种Frechet或Hausdorff距离。
安装
要安装 PyGeodesy,请在终端或命令窗口中键入pip install PyGeodesy或easy_install PyGeodesy 。
或者,从PyPI或GitHub下载PyGeodesy-yy.mdzip, 解压缩下载的文件,cd到目录PyGeodesy-yy.md 并键入python[3] setup.py install。
要运行所有 PyGeodesy 测试,请 在安装之前或之后键入python[3] setup.py test或键入 python[3] test/run.py或键入python[3] test/unitTestSuite.py 。
依赖项
安装Karney的 Python 包geolib是可选的,但需要使用模块ellipsoidalKarney和css、方位角 类EquidistantKarney和GnomonicKarney以及 HeightIDWkarney插值器。
大多数大地水准面和高度 插值器都必须安装numpy和scipy ,但GeoidKarney和HeigthIDW...除外。
函数和LatLon方法circin6,circin3,circ4_, soddy4,trilaterate3d2和trilaterate5需要numpy。
模块ellipsoidalGeodSolve和geodsolve和方位角 类EquidistantGeodSolve和GnomonicGeodSolve依赖于Karney的 C++ 实用程序GeodSolve是可执行的,并使用环境变量PYGEODESY_GEODSOLVE进行设置。
要将模块mgrs和testMgrs的MGRS结果与 Karney的 C++ 实用程序GeoConvert 进行比较,后者必须是可执行的并使用 env 变量PYGEODESY_GEOCONVERT进行设置。
模块rhumbsolve需要Karney的 C++ 实用程序RhumbSolve可执行并使用环境变量PYGEODESY_RHUMBSOLVE进行设置。
文档
除了pygeodesy包之外,PyGeodesy 分发文件还包含测试、测试结果(仅在 macOS 上)和Epydoc使用命令行 生成的完整文档: epydoc --html --no-private --no-source --名称=PyGeodesy --url=... -v pygeodesy。
测试
测试使用 Python 3.11.0rc1(使用 geolib 2.0)、Python 3.10.7(使用geolib 2.0、numpy 1.22.4、scipy 1.8.1、GeoConvert 1.51、GeodSolve 1.51 和RhumbSolve 1.51)、Python 3.9.6、Python 3.8 .10(使用geolib 1.52、GeodSolve 1.51、numpy 1.19.2 和scipy 1.5.2)和 Python 2.7.18(使用geolib 1.50、numpy 1.16.6、scipy 1.2.2、 GeoConvert 1.51、GeodSolve 1.51 和RhumbSolve1.51),全部在 macOS 12.6 Monterey 上并且仅在 64 位中。
对于 Python 3,所有测试都在使用和不使用延迟导入的情况下运行,并且所有 Python 版本都使用命令行选项-W default和环境变量PYGEODESY_WARNINGS=on。这些测试的结果包含在分发文件中。
Python 3.11.0rc1、3.10.7 和 3.9.6 在 Apple M1 Silicon ( arm64 ) 上原生运行。Python 3.8.10 和 2.7.18 在 Intel ( x86_64 ) 或 Intel 仿真(" arm64_x86_64 ") 上运行,请参阅函数pygeodesy.machine。
测试覆盖率已使用 Python 3.10.7、3.9.6 和 2.7.18以覆盖率4.5.4 进行测量。HTML 格式的完整覆盖率报告和 PDF 摘要包含在分发文件中。
测试还在仅 64 位的Debian 11上使用 Python 3.10.7(和geolib 2.0) 运行,在Windows Server 2012R2上使用 Python 3.9.6、3.8.0 和 2.7.17(均使用 geolib 1.52)在 64 位和/ 或 32 位。
在 macOS 10.13.6 High Sierra 上使用PyInstaller 3.4 和 64 位 Python 3.7.4 和 3.7.3捆绑了一个带有pygeodesy的单文件和单目录应用程序。
以前,测试是使用 Python 3.10.1-6、3.9.1、3.8.7、3.7.1、2.7.15、PyPy 7.3.1 (Python 3.6.9) 和PyPy 7.1.1 (Python 2.7.13 ) (以及 geolib 1.52 和numpy 1.16.3、1.16.4、1.16.6、1.19.0、1.19.4 或 1.19.5)在Ubuntu 16.04上,使用 Python 3.10.0-1、3.9.0-5、3.8 .0-6、3.7.2-6、3.7.0、3.6.2-5、3.5.3、2.7.13-17、2.7.10 和 2.6.9(以及numpy 1.19.0、1.16.5、1.16 .2、1.15.2、1.14.0、1.13.1、1.8.0rc1 或 1.6.2 和 scipy 1.5.0)、PyPy 7.3.0(Python 2.7.13 和 3.6.9)、PyPy 6.0.0(Python 2.7.13 和 3.5.3)和Intel-Python 3.5.3(和numpy1.11.3) 在 macOS 12.1-5 Monterey、11.0-5.2-6.1 Big Sur(又名 10.16)、10.15.3、10.15.5-7 Catalina、macOS 10.14 Mojave、macOS 10.13.6 High Sierra、macOS 10.12 Sierra、MacOS X 10.11 El Capitan 和/或 MacOS X 10.10 Yosemite,在 iPad4、iPhone6、iPhone10 和/或 iPhone12 上的 iOS 14.4.2、11.4.1、12.0-3 上使用Pythonista 3.2(使用 geolib 1.50 或 1.49 和 numpy 1.8.0) ,在 iOS 10.3.3 上使用Pythonista 3.1,在 iPad4 上使用 11.0.3、11.1.2 和 11.3,全部仅在 64 位中,在 Windows 10 Pro 上使用 32 位 Python 2.7.14,在 Windows 10 Pro 上使用 32 位 Python 2.6.6视窗 XP SP3。
笔记
所有 Python 源代码均已使用 Python 2.7.18 和使用 Python 3.10.7的PyChecker、 PyFlakes、PyCodeStyle(以前称为 Pep8)和McCabe以及使用 Python 3.10.7 的Flake8进行了静态检查,两者均在 macOS 12.6 Monterey 上为 64 位。
有关 pygeodesy 中所有基于Karney的功能的摘要,请参阅模块karney。
最后更新时间:2022 年 9 月 22 日。
执照
版权所有 (C) 2016-2022 -- Gmail 的 mrJean1 --保留所有权利。
特此免费授予任何人获得本软件和相关文档文件(“软件”)的副本,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售本软件的副本,并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。