我正在研究线路泛化,将应用于从大比例尺地图到小比例尺地图的广义路网地图。我正在使用两种操作和两种算法。它是在 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中有任何其他算法可以使用线条中每个点的坐标来平滑矢量数据中的线条
任何答案表示赞赏!