python地理坐标转换库:pymap3d的安装与使用

pymap3d的GitHub地址:https://github.com/geospace-code/pymap3d

一、pymap3d安装

1.1 Prerequisites

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

1.2 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

二、使用

2.1 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.

2.2 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:

 三、相关名词与python库

3.1 相关名词

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

3.2 相关python库PyProj

与PyProj相比:

  • pymap3d不需要纯python之外的任何东西——基本函数甚至不需要numpy。
  • PyMap3D API与Matlab Mapping Toolbox类似,而PyProj的接口则非常独特
  • pymap3d本质上处理本地坐标系,如enu, 而pyproj enu需要一些additional effort。
  • pyproj面向行星表面上的点,而pymap3d处理行星表面上或上面的点同样出色,对于机载车辆和遥感尤其重要。
     

参考博客

【1】python: pyproj 坐标转换库-安装与使用_pyproj库_hyisoe的博客-CSDN博客

【2】 Python之pymap3d_追捕的风的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值