python: pyproj 坐标转换库-安装与使用

8 篇文章 2 订阅

Python 第三方库 pyproj 坐标转换-安装与使用

一个python库函数,包含了地理坐标系、坐标系、ECEF、BLH、ECI,ENU等坐标系,简单易用

Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy.
API similar to popular $1000 Matlab Mapping Toolbox routines for Python
PyMap3D is intended for non-interactive use on massively parallel (HPC) and embedded systems.

API docs

相关名词

  • 地心地固坐标系(Earth-Centered, Earth-Fixed,ECEF),简称地心坐标系。
  • 地理坐标系统(Geographic Coordinate System,GCS),坐标系是地心坐标系,用经纬度表示球面上的点。
  • 世界大地测量系统(World Geodetic System, WGS),比如WGS84,是一种地理坐标系统,用于全球定位系统(GPS)。
  • 投影坐标系统(Projection Coordinate System,PCS),在二维平面上用米表示位置。
  • 通用横轴墨卡托投影(Universal Transverse Mercator,UTM),是一种投影方法。

Python 提供了第三方库 pyproj 可以方便地进行坐标转换。下面主要介绍安装及使用方法

Prerequisites

Python>=3.7。
Numpy和AstroPy是可选的;如果AstroPy不存在,则使用Vallado和Meeus的算法。

Install 安装

python3 -m pip install pymap3d

or for the latest development code:

git clone https://github.com/geospace-code/pymap3d

pip install -e pymap3d

One can verify Python functionality after installation by:

pytest pymap3d

Usage

Where consistent with the definition of the functions, all arguments may
be arbitrarily shaped (scalar, N-D array).

import pymap3d as pm

x,y,z = pm.geodetic2ecef(lat,lon,alt)

az,el,range = pm.geodetic2aer(lat, lon, alt, observer_lat, observer_lon, 0)
import pymap3d as pm

lat0, lon0, alt0 = 4029.25745, 11146.61129, 1165.2
lat, lon, alt = 4028.25746, 11147.61125, 1165.1
e, n, u = pm.geodetic2enu(lat, lon, alt, lat0, lon0, alt0)
print(e, n, u)

Python argument unpacking can be used for compact function arguments with scalars or arbitrarily shaped N-D arrays:

aer = (az,el,slantrange)
obslla = (obs_lat,obs_lon,obs_alt)

lla = pm.aer2geodetic(*aer,*obslla)

where tuple lla is comprised of scalar or N-D arrays (lat,lon,alt).Example scripts are in the examples directory.Native Python float is typically 64 bit.Numpy can select real precision bits: 32, 64, 128, etc.

Functions

包含了大部分坐标系转换的函数

Popular mapping toolbox functions ported to Python include the following, where the source coordinate system (before the “2”) is
converted to the desired coordinate system:

aer2ecef  aer2enu  aer2geodetic  aer2ned
ecef2aer  ecef2enu  ecef2enuv  ecef2geodetic  ecef2ned  ecef2nedv
ecef2eci  eci2ecef eci2aer aer2eci geodetic2eci eci2geodetic
enu2aer  enu2ecef   enu2geodetic
geodetic2aer  geodetic2ecef  geodetic2enu  geodetic2ned
ned2aer  ned2ecef   ned2geodetic
azel2radec radec2azel
lookAtSpheroid
track2 departure meanm
rcurve rsphere
geod2geoc geoc2geod
geodetic2spherical spherical2geodetic

Vincenty functions “vincenty.vreckon” and “vincenty.vdist” are accessed like:

import pymap3d.vincenty as pmv

lat2, lon2 = pmv.vreckon(lat1, lon1, ground_range_m, azimuth_deg)
dist_m, azimuth_deg = pmv.vdist(lat1, lon1, lat2, lon2)

Additional functions:

  • loxodrome_inverse: rhumb line distance and azimuth between ellipsoid points (lat,lon) akin to Matlab distance('rh', ...) and azimuth('rh', ...)
  • loxodrome_direct
  • geodetic latitude transforms to/from: parametric, authalic, isometric, and more in pymap3d.latitude

Abbreviations:

Ellipsoid

默认为WGS84,包含了多种其它的。Numerous functions in pymap3d use an ellipsoid model. The default is WGS84 Ellipsoid.Numerous other ellipsoids are available in pymap3d.Ellipsoid.

Print available ellipsoid models:

import pymap3d as pm

print(pm.Ellipsoid.models)

Specify GRS80 ellipsoid:

import pymap3d as pm

ell = pm.Ellipsoid.from_name('grs80')

command line

Command line convenience functions provided include:

python -m pymap3d.vdist
python -m pymap3d.vreckon

array vs scalar

Use of pymap3d on embedded systems or other streaming data applications often deal with scalar position data.These data are handled efficiently with the Python math stdlib module.Vector data can be handled via list comprehension.

Those needing multidimensional data with SIMD and other Numpy and/or PyPy accelerated performance can do so automatically by installing Numpy.pymap3d seamlessly falls back to Python’s math module if Numpy isn’t present.To keep the code clean, only scalar data can be used without Numpy.As noted above, use list comprehension if you need vector data without Numpy.

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyProj是一个用于地理空间数据转换的Python。要使用PyProj,可以通过使用conda进行安装。可以使用以下命令来安装pyproj:conda install -c https://conda.anaconda.org/main pyproj。 然而,有时候直接安装pyproj可能会出现错误。这可能是因为需要安装proj。对于Windows系统,可以使用osgeo4w镜像源来安装proj。请参考文献中的指导进行安装。 此外,有时候在安装过程中可能会遇到错误信息,如"pyproj-3.1.0-cp39-cp39-win_amd64.whl is not a supported wheel on this platform"。这可能意味着您的系统不支持所安装pyproj版本。您可以尝试查看是否有适用于您系统的其他版本的pyproj进行安装。 综上所述,您可以通过使用conda安装pyproj,并在需要时安装proj来解决可能出现的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [anconda安装pyproj方法](https://blog.csdn.net/u014125025/article/details/118091508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【pyproj安装教程】PROJ.4 data directory not found 报错解决办法 | osgeo4w镜像源](https://blog.csdn.net/Ejzq1/article/details/128675304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值