沿轮廓线标记拐点

Flag Inflection Points along Profile Line

我有一个 3D 流中心线 shapefile,我正在尝试使用 ArcGIS Pro 和 Python 3 沿剖面标记拐点,特别是海拔变化 0.5 英尺或更多的地方。以下是我所说的拐点的一些例子:

我有一个 table,其中包含每个顶点和高程。我添加了一个名为 'Flag' 的字段来存储哪些顶点是拐点。

如何标记海拔上升或下降 0.5 英尺的点?

我不确定您的数据目前在您的程序中是如何表示的。如果可以转成numpy数组,diff()计算元素之间的离散差

如果列表中有值,则转换为 numpy 数组就像

一样简单
my_numpy_array = np.array(my_list)

假设您在数组 y 中有 y-axis 值,在数组 x.

中有 x-axis 值

我们可以通过

找到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, (0, x.shape[0]), mode='constant', constant_values=(np.nan))

然后你可以使用 numpy 的 logical_and 来检查 f2_p == 0f1_p > 0.5

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