利用Numpy和GDAL高效计算路径轮廓

2024-10-01 09:38:27 发布

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

我有numpy阵列和SRTM高程数据,我需要计算路径剖面-矢量与高程数据从一个点(发射器)到我的地图的每个点。以下是我目前的解决方案:

def get_elev_vector(self, coord1, coord2, step=90):
    if coord1 == coord2:
        return 0
    lat1, long1 = coord1
    lat2, long2 = coord2
    dist = self.get_dist(coord1, coord2)
    npt = dist / step
    vect = np.zeros(npt + 3, dtype='float32')
    vect[0] = npt
    vect[1] = dist
    vect[2] = self.get_elevation_direct(coord1)
    vect[npt] = self.get_elevation_direct(coord2)
    g = pyproj.Geod(ellps='WGS84')
    coordvect = g.npts(long1, lat1, long2, lat2, npt)
    i = 3
    for lon, lat in coordvect:
        vect[i] = self.get_elevation((lat, lon))
        i += 1
    return vect


#(tx, ty) transmission coordinates
while lat > latmax:
         long = longmin
         while long<longmax:
               vect =  self.carta.get_elev_vector((tx, ty), (lat, lon))
               arr[xarr, yarr] = 100
               yarr +=1
               lon += dlon
         xarr +=1
         lat +=dx

它可以工作,但在20x20公里的区域大约需要3个小时。有没有办法让它更快地工作?在

添加

^{pr2}$

Full code and data


Tags: 数据selfgetdiststeplonvectorlat