2017-02-25 71 views
1

坐标的NumPy的阵列我有经/纬度(WGS84)的NumPy的坐标数组是这样的:投影使用pyproj

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数组中,就像上面的坐标数组一样?

回答

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]])