【发布时间】:2016-09-21 17:17:46
【问题描述】:
我对 Python 和 Qgis 还很陌生,现在我只是在运行脚本,但我的最终目标是创建一个插件。
这是我遇到问题的代码部分:
import math
layer = qgis.utils.iface.activeLayer()
iter = layer.getFeatures()
dict = {}
#iterate over features
for feature in iter:
#print feature.id()
geom = feature.geometry()
coord = geom.asPolyline()
points=geom.asPolyline()
#get Endpoints
first = points[0]
last = points[-1]
#Assemble Features
dict[feature.id() ]= [first, last]
print dict
这是我的结果: {0L: [(355277,6.68901e+06), (355385,6.68906e+06)], 1L: [(355238,6.68909e+06), (355340,6.68915e+06)], 2L: [(355340 ,6.68915e+06), (355452,6.68921e+06)], 3L: [(355340,6.68915e+06), (355364,6.6891e+06)], 4L: [(355364,6.6891e+06) , (355385,6.68906e+06)], 5L: [(355261,6.68905e+06), (355364,6.6891e+06)], 6L: [(355364,6.6891e+06), (355481,6.68916e +06)], 7L: [(355385,6.68906e+06), (355501,6.68912e+06)]}
如您所见,许多行都有一个共同的端点:(355385,6.68906e+06) 例如由 7L、4L 和 0L 共享。
我想创建一个新字典,获取共享点作为键,并将第二个点作为值。
例如:{(355385,6.68906e+06):[(355277,6.68901e+06), (355364,6.6891e+06), (355501,6.68912e+06)]}
我一直在查看列表理解教程,但没有取得多大成功:大多数人都希望删除重复项,而我希望将它们用作键(具有唯一 ID)。我认为 set() 仍然有用吗?
如果有任何帮助,我将不胜感激,在此先感谢。
【问题讨论】:
-
回复您最近删除的问题:paste.ubuntu.com/18993669
标签: python-2.7 dictionary duplicates qgis