Сейчас я использую приемник GNSS (GPS).
Приемник GNSS дал мне достаточно точную информацию о местоположении.
Однако я должен исправить их, чтобы построить эталонную карту для дронов итранспортное средство.
Я столкнулся с некоторой проблемой при интерполяции и сглаживании карты, состоящей из координат X и Y.
Моя карта выглядит следующим образом.
Она имеет 2 разных Yкоординаты в координате 1 X.
введите описание изображения здесь
Я просто хочу, чтобы на справочной карте была линия, а не точки.
Исходные точкиданные выглядят так, когда я их увеличиваю.
введите описание изображения здесь
Чтобы сделать точки, чтобы стать линией, я попытался их интерполировать и сгладить, норезультат плохой.
Мой результат здесь.
Причина плохого результата в том, что в одной и той же координате X более 10 координат Y
введитеописание изображения здесь
И мой код здесь.
Как правильно применить Savitzky Golay Filter к моим данным?
Должен ли я использовать фильтр для 2D?
Пожалуйста, помогите этому маленькому бедняге.
def interpolateNsmoothMap(self):
coordinate_x_nparray = np.array(self.coordinate_x_list)
coordinate_y_nparray = np.array(self.coordinate_y_list)
xx = np.linspace(coordinate_x_nparray.min(), coordinate_x_nparray.max(), 10000)
interpolated = scipy.interpolate.interp1d(coordinate_x_nparray, coordinate_y_nparray, kind='linear')
smoothed = scipy.signal.savgol_filter(interpolated(xx), 1001, 3)
plt.figure(figsize=(15, 15))
plt.plot(xx, smoothed, marker='o', linewidth=0, markersize=10)
plt.suptitle('Map')
plt.xlabel('UTM X')
plt.ylabel('UTM Y')
plt.gca().xaxis.set_major_formatter(mtick.FormatStrFormatter('%.6f'))
plt.gca().yaxis.set_major_formatter(mtick.FormatStrFormatter('%.6f'))
plt.grid('on')
plt.show()