沿轮廓线标记拐点
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 == 0
和 f1_p > 0.5
flag = np.logical_and(f2_p == 0, f1_p > 0.5)
我有一个 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
.
我们可以通过
找到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 == 0
和 f1_p > 0.5
flag = np.logical_and(f2_p == 0, f1_p > 0.5)