首页 > 解决方案 > 沿轮廓线标记拐点

问题描述

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

在此处输入图像描述

我有一个表格,每个表格都有顶点和高程。我添加了一个名为“标志”的字段来存储哪些顶点是拐点。

在此处输入图像描述

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

标签: pythonpython-3.xarcpy

解决方案


我不确定您的数据当前在您的程序中是如何表示的。如果可以将其转换为 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)

用填充这些数组的长度,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'slogical_and来检查f2_p == 0f1_p > 0.5

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

推荐阅读