知道起始点和结束点的生成经纬度的最快方法是什么?



我有一个Numpy数组shape (30000, 2000, 2),其中每行应该有2000个纬度和经度点,彼此距离相等,方向相同。问题是,每一行都有缺失点。对于每一行,只有起始点和端点(在CRS WSG84中)的纬度和经度是已知的,其余的点都不存在。例如,单行可以像这样:

latlonPoints[0,:] = [(48.778767, -123.903275),?,?,?,...,(49.887672, -122.49999)]

使用每行的起点和终点,我们可以很容易地计算出距离(有时是几公里)以及两点之间的角度(方位)。然后使用距离和方位,我们可以使用地理学或其他方法生成其余的点。但是,使用for循环的迭代对于所有行和每一行的所有元素来说都太慢了。用python计算缺失点最快的方法是什么?这是我已经实现的,它工作得很好,但很慢:

for idx, row in enumerate(latlonPoints):
lat_start = row[0]
long_start = row[1]
coords1 = (lat_start, long_start)
lat_end = row[2]
long_end = row[3]
bearing, back_azimuth, distance = geodesic1.inv(long_start, lat_start, long_end, lat_end)
step_size = distance/(latlonPoints.shape[1] -1)
latlon_row = []
for i in range (0,latlonPoints.shape[1]):
dist = i * step_size
destination = geodesic(kilometers=dist / 1000).destination(coords1, bearing)
latlon_row.append((destination.latitude,destination.longitude))
latlonPoints[idx,:] = np.array(latlon_row)

@hilberts_drinking_problem使用poproj和Geod回答了这个问题,我可以生成多个点给定一个初始点和终点。它返回一个经纬度对的列表,这些经纬度对描述了在初始点和终点之间沿测地线的若干等距中间点。

from pyproj import Geod
extra_points = pyproj.Geod(ellps='WGS84')