Алгоритм сглаживания линий в Python?

Я занимаюсь исследованием обобщения линий, которое будет применяться для получения обобщенной карты дорожной сети от крупномасштабной карты до мелкомасштабной карты. Я использую две операции и два алгоритма. Это делается на языке программирования Python с использованием библиотеки shapefile, для векторных данных в 2d. Операция: отбор и устранение. Для выбора я использую условие типа, все дороги выбраны шириной более 7 метров, это связано с особенностями дорог. То же самое с устранением, как и все дороги, ширина менее 5 метров, устранены. Пока что проблем не было.

После выполнения операций выбора и исключения у нас будет файл формы, дороги которого прошли условие. Я использую два алгоритма, упрощение линии и сглаживание линии. Для упрощения линии я использую алгоритм упрощения линии Дугласа-Пекера. он берет векторные данные (координаты) и на основе допусков удаляет некоторые точки. Я делаю это, используя язык программирования 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, которые сглаживают линии в векторных данных, используя координаты каждой точки в линии

Любые ответы приветствуются!

Ответы на вопрос(2)

Ваш ответ на вопрос