在知道起点和终点的情况下,生成纬度和经度的最快方法是什么

2024-10-04 05:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)

Tags: 距离fordestinationstartlatlonlongendrow
1条回答
网友
1楼 · 发布于 2024-10-04 05:20:26

由于@hilberts___问题使用poproj和Geod回答了这个问题,我可以在给定一个初始点和终点的情况下生成多个点。它返回一个经度/纬度对列表,描述沿测地线在初始点和终点之间等距分布的NPT中间点

from pyproj import Geod

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

相关问题 更多 >