我正在研究线路概括,将应用于从大规模地图到小规模地图获得广义道路网络地图。我使用了两种操作和两种算法。这是在Python编程语言中使用shapefile库完成的,适用于2D矢量数据。
操作:选择和消除。 对于选择,我使用条件来选择所有道路,宽度大于7米,并连接道路的属性特征。 同样,在消除时,例如所有宽度小于5米的道路都被排除。 到目前为止还没有太多问题。
应用选择和消除操作后,我们将得到形状文件,选出符合条件的道路。 我使用了两种算法,线简化和线平滑。 对于线的简化,我使用了Douglas-Peucker线简化算法。它基于容差删除一些点并采用向量数据(坐标)。我使用Python编程语言进行此操作。在获得简化的线之后,需要进行一些编辑,如线平滑。 在这里,我使用高斯算法,但是出现了一些错误,由于我在编程环境中还是新手,所以不理解。
任何想法,请。或者如果在Python中有其他算法可以使用线条中每个点的坐标来平滑矢量数据中的线条。
感谢任何回答!
操作:选择和消除。 对于选择,我使用条件来选择所有道路,宽度大于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中有其他算法可以使用线条中每个点的坐标来平滑矢量数据中的线条。
感谢任何回答!