python2.7和QGIS 2.6:减去两个值并将特征的ID附加到lis中

2024-10-04 11:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想减去从qgs feature iterator对象检索到的两个值,并根据条件将feature id的值附加到列表中。你知道吗

在qgis的上下文中,我有两层: 道路杀手 探路者

到目前为止,我得到的是一个空列表:

evenList = []
azimuthRoadsIDX = roadsLayer.fieldNameIndex('azimuth')
azimuthPathsIDX = pathsLayer.fieldNameIndex('azimuth')
roads = roadsLayer.getFeatures()
paths = pathsLayer.getFeatures()
for feat in roads:
    for feature in paths:
        roadsAzimuth = feat.attributes()[azimuthRoadsIDX]
        pathsAzimuth = feature.attributes()[azimuthPathsIDX]
        if (roadsAzimuth - pathsAzimiuth == 90) or (roadsAzimuth - pathsAzimth == -270):
            evenList.append(feature.id())

不知道为什么,但这很管用。唯一的问题是它并不是在所有情况下都有效(即使roadsAzimuth-pathsAzimuth==90,在某些情况下也不会附加它):

for feat in roadsLayer.getFeatures():
    roadsAzimuth = feat.attributes()[azimuthRoadsIDX]
    for feature in pathsLayer.getFeatures():
        pathsAzimuth = feature.attributes()[azimuthPathsIDX]
        if (roadsAzimuth - pathsAzimiuth == 90) or (roadsAzimuth - pathsAzimth == -270):
            evenList.append(feature.id())

Tags: inid列表forattributesfeaturefeatevenlist