I am doing research on line generalization, which will be applied to obtain generalized Road Network map from large scale map to small scale map. I am using two operation and two algorithms. It is done in python programming language using shapefile library, it is for vector data in 2d. Operation: Selection and Elimination. For selection I am using condition like, all the roads, width more than 7 meters selected, it is connected with attribute features of the roads. Same with elimination, like all the roads, width less than 5 meter, eliminated. So far it was no much problem.
After selection and elimination operations applied, we will have shape file, roads which passed the condition. I am using two algorithms, Line simplification and line Smoothing. For simplification of line I am using Douglas-Peucker's line simplification algorithm. it is taking vector data (coordinates) and based on tolerance removing some points. I an doing it using Python programming language. After getting simplified lines it needs some editing like line smoothing. Here, I am using Gaussian algorithm, however it is returning some error, which i don't understand, as i am new in programming environment
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)
Any, ideas, please. Or if there any other algorithms in python which smooths lines in vector data using coordinates of the each point in the line
Any answers appreciated!