如何获取QGis矢量图层中所有图层的特征

时间:2017-05-23 08:47:16

标签: python geometry qgis

我有一组形状文件。 我在QGis中加载了所有图层。我想选择所有图层的要素几何,并将它们与特定要素的几何图形进行比较。 我尝试了以下代码

layers = self.QgsMapLayerRegistry.instance().mapLayers()
iter = layer.getFeatures()
for feature in iter:
     geom_is = feature.geometry()
     iter_1 = layers.getFeatures()
     for feat in iter_1:
         geom_all = feat.geometry()
         if geom_is == geom_all:
             check_passed = True
         else:
             check_passed = False
return check_passed

程序返回以下错误:      'dict'对象没有属性'getFeatures'

1 个答案:

答案 0 :(得分:0)

  1. 我无法看到" layer"在您的代码中定义。我认为它是先前定义的,对吧?

  2. 在第5行,您的代码说: layer**s**.getFeatures() 因此错误:AttributeError:' dict'对象没有属性' getFeatures' layers是一个dict类型的对象。它包含项目的所有图层(不是特征!!!)。

  3. 要解决您的问题,我认为您需要获取图层,因为QgsFeatures不是dict。 我的建议是将第一行改为:

    layers = self.QgsMapLayerRegistry.instance().mapLayers().values()
    

    然后收集你需要通过所有图层的所有要素几何图形,如下所示:

    allFeatures = []
    for l in layers:
      for f in l.getFeatures():
        allFeatures.append(f.geometry())
    

    唯一剩下的就是要注意自我检查。 如果这有帮助,请告诉我 干杯!