【问题标题】:Flag Inflection Points along Profile Line沿轮廓线标记拐点
【发布时间】:2020-10-06 18:50:35
【问题描述】:

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

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

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

【问题讨论】:

标签: python python-3.x arcpy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2018-04-20
    相关资源
    最近更新 更多