【问题标题】:Projecting a NumPy array of coordinates using pyproj使用 pyproj 投影坐标的 NumPy 数组
【发布时间】:2017-02-25 17:12:45
【问题描述】:

我有一个像这样的纬度/经度 (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 数组中,就像上面的坐标数组一样?

【问题讨论】:

    标签: python numpy coordinates map-projections pyproj


    【解决方案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]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多