【发布时间】:2019-08-21 02:12:37
【问题描述】:
方法
我有一个点数组 [[lon1, lat1], [lon2, lat2], ..., [lonN, latN]]。我正在遍历这些点并在每个点上生成高程:
for point in points:
...
alt = ds_band.ReadAsArray(px, py, 1, 1)
# push the alt to an array
在哪里, ds_band 是栅格波段 px 是 x_offset py 是 y_offset
问题
小 DSM 文件(~80 MB)与大 DSM 文件(~5 GB)
从小的 DSM 文件中获取海拔信息相当快。但是,从大型 DSM 文件中获取海拔信息需要更长的时间。 对于大约相同数量的点 (33370),在小型 DSM 文件中需要 1.983694553 秒。但在大型 DSM 文件中,需要 9.140556812 秒。
时间仅用于获取海拔高度。它不包括打开 DSM 文件等其他操作。
问题
有没有比我现在做的更好的方法来获取多个点的高度?有没有办法优化 ReadAsArray?
附: Python/GDAL 的新手。谢谢!
【问题讨论】:
-
我不介意等待 10 秒加载。但也许你把它矢量化了。
-
@FChm 我也不介意,但客户会。 :D。通过矢量化你的意思是矢量化光栅文件?你能详细说明吗?对不起,这个领域的新手。还在学习中
-
9.34 秒包括打开文件,还是仅仅获取海拔?取决于该解决方案可能没有优化 ReadAsArray。
-
嗨@lusitanica,9.34 秒包括打开文件的时间和生成积分的时间。但是这些时间非常小,如果我们只计算获取海拔的时间,那么它大约是 9.14 秒。道歉。我应该在问题中指定这一点。将更新问题。
标签: python profile gdal elevation