Конвертировать лат длинные координаты в локальные координаты ENU в Python - PullRequest
0 голосов
/ 21 ноября 2018

(Как) можно преобразовать координаты длинной широты в локальные координаты ENU (восток, север, вверх) с помощью Python?Кажется, я не нашел нужную функциональность в пакете pyproj ...

1 Ответ

0 голосов
/ 01 июня 2019

Модуль Pymap3d , https://scivision.github.io/pymap3d/ предоставляет преобразования координат и функции геодезии, включая ENU <-> (long, lat, h).

Вот несколько примеров.

import pymap3d
# create an ellipsoid object
ell_clrk66 = pymap3d.Ellipsoid('clrk66')
# print ellipsoid's properties
ell_clrk66.a, ell_clrk66.b, ell_clrk66.f

# output
(6378206.4, 6356583.8, 0.0033900753039287634)

Предположим, что у нас есть система координат ENU, определенная с ее началом в (lat0, lon0, h0 = 5.0, 48.0, 10.0).И пусть точка (точка_1) с координатой ENU: (0,0,0) будет контрольной точкой, эта point_1 будет использоваться для преобразования, как прямого, так и обратного.

lat0, lon0, h0 = 5.0, 48.0, 10.0   # origin of ENU, (h is height above ellipsoid)
e1, n1, u1     =  0.0,  0.0,  0.0  # ENU coordinates of test point, `point_1`
# From ENU to geodetic computation
lat1, lon1, h1 = pymap3d.enu2geodetic(e1, n1, u1, \
                                      lat0, lon0, h0, \
                                      ell=ell_clrk66, deg=True)  # use clark66 ellisoid
print(lat1, lon1, h1)
# display: (5.000000000000001, 48.0, 10.000000000097717)

Теперь,используя полученные значения (lat1, lon1, h1), мы вычисляем преобразование геодезической в ​​ENU.

e2, n2, u2 = pymap3d.geodetic2enu(lat1, lon1, h1, \
                           lat0, lon0, h0, \
                           ell=ell_clrk66, deg=True)
print(e2, n2, u2)

Выходные данные должны соответствовать (e1, n1, u1).Небольшие расхождения являются нормальными для такого рода вычислений.

В приведенных выше вычислениях параметр ell имеет WGS84 эллипсоид в качестве значения по умолчанию.

...