Я пытаюсь выполнить интерполяцию данных AIS, аналогично 31464345 . Однако я пытаюсь сделать это на данных AIS, в которых у меня нет временных кодов или какого-либо представления о порядке точек.
Пример данных
pts = [(4.903713333333333, 52.373506666666664),
(4.90375, 52.37636166666667),
(4.9053, 52.375725),
(4.9059, 52.372165),
(4.905261666666667, 52.372796666666666)]
код, который я использую:
import numpy as np
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt
# define pts from the question
tck, u = splprep(pts.T, u=None, s=0.0)
u_new = np.linspace(u.min(), u.max(), 1000)
x_new, y_new = splev(u_new, tck, der=0)
plt.plot(pts[:,0], pts[:,1], 'ro')
plt.plot(x_new, y_new, 'b--')
plt.show()
Однако я получаю ошибку «ValueError: Invalid input.» Я думаю, это потому, что мои данные не упорядочены, это правильно? Как бы я это исправить