Алгоритм сглаживания линий в Python?
Я занимаюсь исследованием обобщения линий, которое будет применяться для получения обобщенной карты дорожной сети от крупномасштабной карты до мелкомасштабной карты. Я использую две операции и два алгоритма. Это делается на языке программирования Python с использованием библиотеки shapefile, для векторных данных в 2d. Операция: отбор и устранение. Для выбора я использую условие типа, все дороги выбраны шириной более 7 метров, это связано с особенностями дорог. То же самое с устранением, как и все дороги, ширина менее 5 метров, устранены. Пока что проблем не было.
После выполнения операций выбора и исключения у нас будет файл формы, дороги которого прошли условие. Я использую два алгоритма, упрощение линии и сглаживание линии. Для упрощения линии я использую Douglas-Peucker 'Алгоритм упрощения линии. он берет векторные данные (координаты) и на основе допусков удаляет некоторые точки. Я делаю это, используя язык программирования Python. После получения упрощенных линий требуется некоторое редактирование, например сглаживание линий. Здесь я использую алгоритм Гаусса, однако он возвращает ошибку, которую я нене понимаю, как я новичок в среде программирования
import numpy
### This is the Gaussian data smoothing function I wrote ###
def smoothListGaussian(list1,degree):
window=degree*2-1
weight=numpy.array([1.0]*window)
print weight
weightGauss=[]
for i in range(window):
i=i-degree+1
frac=i/float(window)
gauss=1/(numpy.exp((4*(frac))**2))
weightGauss.append(gauss)
print weightGauss
weight=numpy.array(weightGauss)*weight
print weight
print len(list1)-window
smoothed=[0.0]*(len(list1)-window)
print smoothed
for i in range(len(smoothed)):
smoothed[i]=sum(numpy.array(list1[i:i+window])*weight)/sum(weight)
return smoothed
a=[[78.03881018900006, 30.315651467000066], [78.044901609000078, 30.31512798600005], [78.04927981700007, 30.312510579000048], [78.050041244000056, 30.301755415000059], [78.072646124000073, 30.281720353000082], [78.07902308000007, 30.273344651000059]]
smoothListGaussian(a,3)
Любые, идеи, пожалуйста. Или, если есть другие алгоритмы в Python, которые сглаживают линии в векторных данных, используя координаты каждой точки в линии
Любые ответы приветствуются!