algoritmo de suavização de linha em python?

Eu estou fazendo pesquisa sobre generalização de linha, que será aplicada para obter um mapa generalizado da Rede Rodoviária, desde um mapa em grande escala até um mapa em pequena escala. Estou usando duas operações e dois algoritmos. É feito em linguagem de programação python usando a biblioteca shapefile, é para dados vetoriais em 2d. Operação: Seleção e Eliminação. Para seleção eu estou usando condição como, todas as estradas, largura mais de 7 metros selecionados, é conectado com características de atributo das estradas. Mesmo com a eliminação, como todas as estradas, largura inferior a 5 metros, eliminadas. Até agora não foi muito problema.

Após as operações de seleção e eliminação aplicadas, teremos um arquivo de forma, estradas que passaram a condição. Estou usando dois algoritmos, simplificação de linha e suavização de linha. Para simplificação da linha, estou usando o algoritmo de simplificação de linha de Douglas-Peucker. está tomando dados vetoriais (coordenadas) e baseado na tolerância, removendo alguns pontos. Eu faço isso usando a linguagem de programação Python. Depois de obter linhas simplificadas, precisa de alguma edição, como suavização de linhas. Aqui, eu estou usando o algoritmo gaussiano, no entanto ele está retornando algum erro, que eu não entendo, como eu sou novo no ambiente de programação

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)

Qualquer, ideias, por favor. Ou se houver algum outro algoritmo em python que suavize linhas em dados vetoriais usando coordenadas de cada ponto na linha

Qualquer resposta apreciada!

questionAnswers(2)

yourAnswerToTheQuestion