代码适用于少量选择,但不适用于整个数据库

时间:2016-06-02 16:11:12

标签: python qgis

我遇到与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的新手,所以说实话我很难理解代码的这一部分是如何工作的,但我知道它确实如此(至少对于小数据集而言)。

小“测试选择”的结构与整个数据库完全相同。只有长度发生了变化。

如果有人有同样的经历或知道为什么会出现这个问题,我会非常感谢任何适应症。

0 个答案:

没有答案