问题描述
我将以我是一个GIS专家,并具有使用Arcpy模块使用Python的中级经验作为开始的事实。
我有一个3D的流中心线文件,这意味着每个顶点都有一个与之关联的高程值。我正在尝试使用ArcGIS Pro和/或Python 3在轮廓上标记拐点,特别是在高度变化0.5英尺或更多的地方。以下是一些我正在谈论的拐点示例:
我有一张桌子,每个桌子都有顶点和高程。我添加了一个名为“标记”的字段来存储哪些顶点是拐点。
有没有一种方法可以使用Python标记上升了0.5或更多的顶点?我听说过熊猫,但是对此没有太多经验。
解决方法
我不确定您的程序中当前如何显示您的数据。如果您可以将其转换为numpy数组,则diff()
将计算元素之间的离散差异
如果列表中有值,则转换为numpy数组就像
my_numpy_array = np.array(my_list)
假设您在数组y
中具有y轴值,在数组x
中具有x轴值。
我们可以找到f'(x)
,
f1 = diff(y)/diff(x)
和f''(x)
由
f2 = diff(f1) / diff(x)
Pad这些带有nan
的数组的长度,以使其与x
相同。
f1_p = np.pad(f1,(0,x.shape[0]),mode='constant',constant_values=(np.nan))
f2_p = np.pad(f2,constant_values=(np.nan))
然后,您可以使用numpy的logical_and
检查f2_p == 0
和f1_p > 0.5
flag = np.logical_and(f2_p == 0,f1_p > 0.5)