我有一组形状文件。 我在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'
答案 0 :(得分:0)
我无法看到" layer"在您的代码中定义。我认为它是先前定义的,对吧?
在第5行,您的代码说:
layer**s**.getFeatures()
因此错误:AttributeError:' dict'对象没有属性' getFeatures'
layers是一个dict类型的对象。它包含项目的所有图层(不是特征!!!)。
要解决您的问题,我认为您需要获取图层,因为QgsFeatures不是dict。 我的建议是将第一行改为:
layers = self.QgsMapLayerRegistry.instance().mapLayers().values()
然后收集你需要通过所有图层的所有要素几何图形,如下所示:
allFeatures = []
for l in layers:
for f in l.getFeatures():
allFeatures.append(f.geometry())
唯一剩下的就是要注意自我检查。 如果这有帮助,请告诉我 干杯!