我想获得一个连续段的列表,这些段是线串的一部分(QGIS,Shapefile),并构建线串的几乎笔直的部分。
此刻,我可以计算分段的方位角并将它们放在列表中。
az_list = [260,263,260,209,245,339,337,343]
因此,起初我想用az_list
的元素填充新列表,直到差异很大为止。
示例:
az_list
260、263、260的前三个值构成了线的几乎笔直的部分。我用以下方法检查这三个值的方差:
import numpy as np
np.var([260, 263, 260]) # result: 2.0
最后三个:
np.var([339,337,343]) # result: 6.22...
知道这一点,我可以确定对于var
的方差,当var > 0
和var < 10
时,如果该列表为空(将作为起点),则该部分是直的{ 1}}返回math.isnan(np.var(az_list))
。
我开始将False
中的前三个值放入新列表az_list
中。使用此代码,我试图使其运行,但它返回一个空列表。
straight_list
最后,想要获得存储直线部分的列表列表,例如:
straight_list = []
while not math.isnan(np.var(straight_list)) and np.var(straight_list) != 0 and np.var(straight_list) < 10:
for i in az_list:
straight_list.append(i)
答案 0 :(得分:0)
我建议您采用以下解决方案:
import numpy as np
az_list = [260,263,260,209,245,339,337,343]
straight_list = []
sublist = []
for az in az_list:
sublist.append(az)
if np.var(sublist) > 10:
if len(sublist) > 2:
straight_list.append(sublist[:-1])
sublist = [az]
if len(sublist) > 1:
straight_list.append(sublist)
print(straight_list) # [[260, 263, 260], [339, 337, 343]]