我遇到与this one类似的问题。 我正在研究Qgis。为了加快速度,我创建了一小部分地图,我在其上测试我的代码。它很棒。以下是稍后会出现问题的部分:
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()
### GET FIRST AND LAST POINTS OF POLY + N ORIENTATION###
# Get Objective Orientation
d=QgsDistanceArea()
d.setEllipsoidalMode(True)
points=geom.asPolyline()
#second way to get Endpoints
first = points[0]
last = points[-1]
r=d.bearing(first, last)
b= "NorthOrientation= %s" %(math.degrees(r))
# Assemble Features
dict[feature.id() ]= [first, last]
### KEY = INTERSECTION, VALUES = COMMONPOINTS###
dictionary = {}
a = dict
for i in a:
for j in a:
c = set(a[i]).intersection(set(a[j]))
if len(c) == 1:
d = set(a[i]).difference(c)
c = list(c)[0]
value = list(d)[0] #This is where the problem is
if c in dictionary and value not in dictionary[c]:
dictionary[c].append(value)
elif c not in dictionary:
dictionary.setdefault(c, [])
dictionary[c].append(value)
else: pass
print dictionary
此代码适用于我的小选择的10折线(我已将其存储在单独的shapefile中)。但是,当我尝试通过原始数据库的40 000行运行它时,出现以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "c:/users/16116/appdata/local/temp/tmp96wd24.py", line 47, in <module>
value = list(d)[0]
IndexError: list index out of range
一些事情: 此代码源于您可以找到的第一个问题here。我仍然是python的新手,所以说实话我很难理解代码的这一部分是如何工作的,但我知道它确实如此(至少对于小数据集而言)。
小“测试选择”的结构与整个数据库完全相同。只有长度发生了变化。
如果有人有同样的经历或知道为什么会出现这个问题,我会非常感谢任何适应症。