我有一个shape (30000, 2000, 2)
的Numpy数组,其中每行应该有2000个纬度和经度点,彼此之间的距离相等,方向相同。问题是,每行都缺少点。对于每一行,只有起点和终点(在CRS WSG84中)的纬度和经度已知,其余的点缺失。
例如,单行可以如下所示:
latlonPoints[0,:] = [(48.778767, -123.903275),?,?,?,...,(49.887672, -122.49999)]
使用每行的起点和终点,我们可以轻松地计算距离(有时几公里)以及两点之间的角度(方位)。然后使用距离和方位,我们可以使用geopy or other methods生成其余的点。但是,对于所有行和每一行的所有元素,使用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___问题使用poproj和Geod回答了这个问题,我可以在给定一个初始点和终点的情况下生成多个点。它返回一个经度/纬度对列表,描述沿测地线在初始点和终点之间等距分布的NPT中间点
相关问题 更多 >
编程相关推荐