在做GIS数据处理时,从众多曲线中提取数十条起伏明显的线,方便展示,python代码如下:
参数依次为线集合(线线包括点),高程所在列,提取的线数量
def getElevationUpsAndDownstop(list,heightNumber,LineNumber):
newlist=[]
for x in list:
array_All = np.array(x)
pointMax = max(array_All[:, heightNumber])
pointMin = min(array_All[:, heightNumber])
result=x,pointMax-pointMin
newlist.append(result)
a=np.array(newlist)
idex = np.lexsort([-a[:, 1]])
sorted_data = a[idex, :]
limtNumber=LineNumber if len(sorted_data)>LineNumber else len(sorted_data)
sorted_data=sorted_data[0:limtNumber]
finalresult=[]
for i in range(len(sorted_data)):
result=sorted_data[i][0]
finalresult.append(result)
return finalresult