我有这个玩具示例,它使用 numpy 和一个名为 PyProj 的外部包。Lat 和 lon 是二维数组,包含一些特定领域信息的坐标。我想要做的是从我任意选择的中心点计算球体上的距离。lat_0 和 lon_0 的形状是
(2000,1)
但是 API 调用 inv 不喜欢这样。我收到运行时错误 -
RuntimeError: Buffer lengths not the same
它需要一系列形状
(2000,50).
所以我希望 lat_0 和 lon_0 的形状与 lon 和 lat 的形状相同,所有常量值都是中心纬度和经度。增加 lon_0 和 lat_0 的列并用中心值填充它以使其与 lon 和 lat 的形状相同而不使用 for 循环的最有效方法是什么?
import numpy as np
from pyproj import Geod
lat = np.empty((2000,50))
lat.fill(1)
lon = np.empty((2000,50))
lon.fill(1)
center = int(np.floor(len(lon[-1]) / 2.))
lon_0 = lon[:,center][...,np.newaxis]
lat_0 = lat[:,center][...,np.newaxis]
g = Geod(ellps='WGS84')
distance = g.inv(lon,lat,lon_0,lat_0,radians=True)