Проектирование массива координат NumPy с использованием pyproj

У меня есть массив координат широты / долготы (WGS84) NumPy следующим образом:

coords = np.asarray([
    [6.74219, -53.57835],
    [6.74952, -53.57241],
    [6.75652, -53.56289],
    [6.74756, -53.56598],
    [6.73462, -53.57518]])

Я хочу использовать библиотеку pyproj для проецирования этих координат широты и долготы с помощью Winkel-Tripel. (все равно WGS84) без обработки каждой точки отдельно?

Как я могу объединить результат pyproj, который представляет собой отдельные массивы X / Y, в один массив numpy, как и массив координат выше?


person Uli Köhler    schedule 25.02.2017    source источник


Ответы (1)


В документации по pyproj показано, как проецировать отдельные точки и

Для вашей проекции в WGS84 вы можете использовать следующую функцию:

def project_array(coordinates, srcp='latlong', dstp='wintri'):
    """
    Project a numpy (n,2) array in projection srcp to projection dstp
    Returns a numpy (n,2) array.
    """
    p1 = pyproj.Proj(proj=srcp, datum='WGS84')
    p2 = pyproj.Proj(proj=dstp, datum='WGS84')
    fx, fy = pyproj.transform(p1, p2, coordinates[:,0], coordinates[:,1])
    # Re-create (n,2) coordinates
    return np.dstack([fx, fy])[0]

Обратите внимание на использование dstack для объединения массивов x / y

Пример использования с вашими массивами координат.

>>> project_array(coords)
array([[  497789.36471653, -5965577.60559519],
       [  498357.98167095, -5964919.091806  ],
       [  498918.88707764, -5963861.91844427],
       [  498243.057953  , -5964202.54601671],
       [  497245.19767552, -5965221.87480737]])
person Uli Köhler    schedule 25.02.2017