我有一个包含东距(x)、北距(y)和高程数据(z)的文本文件,如下所示:
x y z
241736.69 3841916.11 132.05
241736.69 3841877.89 138.76
241736.69 3841839.67 142.89
241736.69 3841801.45 148.24
241736.69 3841763.23 157.92
241736.69 3841725.02 165.01
241736.69 3841686.80 171.86
241736.69 3841648.58 178.80
241736.69 3841610.36 185.26
241736.69 3841572.14 189.06
241736.69 3841533.92 191.28
241736.69 3841495.71 193.27
241736.69 3841457.49 193.15
241736.69 3841419.27 194.85
241736.69 3841381.05 192.31
241736.69 3841342.83 188.73
241736.69 3841304.61 183.68
241736.69 3841266.39 176.97
241736.69 3841228.18 160.83
241736.69 3841189.96 145.69
241736.69 3841151.74 129.09
241736.69 3841113.52 120.03
241736.69 3841075.30 111.84
241736.69 3841037.08 104.82
241736.69 3840998.86 101.63
241736.69 3840960.65 97.66
241736.69 3840922.43 93.38
241736.69 3840884.21 88.84
...
我可以用plt.contour
和plt.contourf
很容易地从上面的数据中得到一张海拔图,如下所示:
但是,我正在尝试获取我所掌握数据的斜率图,如下所示:
我试着用GDAL
将XYZ数据转换成DEM,如解释的here,并用richdem
加载DEM,如解释的here,但我得到的斜率值不对。在
转换为.tif
得到的结果:
这是我用richdem
尝试过的代码:
colorbar上的值太高而不正确,必须反转绘图以匹配上述绘图(不是我现在的主要问题)。在
当我将python用于GIS时,我不是一个专家(我主要使用python进行数据分析),我希望这不会像我想象的那么复杂。在
eI能够正确地编写一个函数,但首先我需要赞扬这个answer,因为它节省了我编写自己的移动窗口函数的时间(非常好!)公司名称:
最后的情节:
假设数据在一个nx3numpy数组中,首先将elevation列重新解释为矩阵(表示统一网格):
然后进行几次切片和减法,得到细胞中心的导数:
^{pr2}$该系数校正单位(否则为米/单元格,而不是每米),并将总和转换为平均值。(如果每个维度中的间距不同,您将分别将参数缩放为
hypot
。)请注意,结果数组在每个维度上都比输入小一个;如果大小需要相同,可以使用更复杂的差分方案。numpy.gradient
实现了其中的一些,允许相关问题 更多 >
编程相关推荐