我正在尝试测量我使用Python中的polyfit()函数生成的数量级为2的“最佳拟合”线的长度,以便我可以将该长度与原始长度进行比较线。
我尝试过导入shapely.geometry并使用LineString然后使用.length,但是在给定polyfit()行变量的情况下,LineString给出了一个错误。
我想知道是否有办法测量polyfit()生成的一条线的总长度。
这是我生成和测量的原始行的代码:
negative5contour = contour(mgX,mgY,dem,levels=linspace(-5,-5,1))
pointsn5 = negative5contour.collections[0].get_paths()[205].vertices
linen5 = LineString(pointsn5[:,0:2])
print 'length of original -5 contour:', linen5.length, '(m)'
length of original -5 contour: 961613.847282 (m)
这是我用来为高程轮廓生成最佳拟合线2的代码:
neg5X = pointsn5[:,0]
neg5Y = pointsn5[:,1]
plot(neg5X,neg5Y,'g')
fitneg5= polyfit(neg5X,neg5Y,2)
fit_final_neg5 = poly1d(fitneg5)
我尝试在fit_final_neg5上使用LineString和Length:
n5Best = LineString(fit_final_neg5)
n5Best.Length
但错误说:
ValueError Traceback (most recent call last)
<ipython-input-71-6b72c644625d> in <module>()
6
7
----> 8 n5Best = LineString(fit_final_neg5)
ValueError: Input 2
3.529e-06 x - 22.44 x + 3.614e+07 is the wrong shape for a LineString
有没有人有关于我如何解决/解决这个问题的想法?
仅供参考:我对python很新。
感谢您的帮助!