沿轮廓线标记拐点

问题描述

我将以我是一个GIS专家,并具有使用Arcpy模块使用Python的中级经验作为开始的事实。

我有一个3D的流中心线文件,这意味着每个顶点都有一个与之关联的高程值。我正在尝试使用ArcGIS Pro和/或Python 3在轮廓上标记拐点,特别是在高度变化0.5英尺或更多的地方。以下是一些我正在谈论的拐点示例:

enter image description here

我有一张桌子,每个桌子都有顶点和高程。我添加一个名为“标记”的字段来存储哪些顶点是拐点。

enter image description here

有没有一种方法可以使用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 == 0f1_p > 0.5

flag = np.logical_and(f2_p == 0,f1_p > 0.5)