我有一个插件,可以找到城市列表的缓冲区,并提供距离。州和城市名称取自属性表,并进行相应过滤。我想要的是,我的插件应标识画布中该图层的层名称或顺序,而不管画布中是否存在其他图层,并从该图层访问相应的属性。
我也很好奇,尽管存在其他一些层,但是在代码中指向特定的层名称是否会导致迭代错误?
以下是我的代码,请告诉我应该在哪里进行更改,这将是什么更改?
if dist and centerCity:
#QMessageBox.information(self.dlg, "info", "both True")
st = '"name" = \'' + centerCity + '\''
exp = QgsExpression(st)
else:
QMessageBox.warning(self.dlg, "Enter the distance","Enter the distance and try again.")
return #terminate the function
layer = self.iface.activeLayer()
it = layer.getFeatures(QgsFeatureRequest(exp))
feature = it.next()
mbuf = feature.geometry().buffer(dist, 2)
iterFeat = layer.getFeatures()
for f in iterFeat:
geom2 = f.geometry()
valTest = QgsGeometry.within(geom2, mbuf)