Eu tenho um plugin que encontra buffer para lista de cidades, desde a distância. Os nomes de estado e cidade são obtidos da tabela de atributos e são filtrados de acordo. O que eu quero é que Meu plugin identifique o nome ou a ordem da camada na tela, independentemente de outras camadas presentes na tela e acesse os atributos correspondentes dessa camada.
Também estou curioso para saber se apontar um nome de camada específico no código causaria algum erro na iteração, embora algumas outras camadas estejam presentes?
Abaixo está o meu código, por favor me diga onde devo fazer alterações e qual seria a alteração?
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)
fonte
layer = none
no início do seu código? Parece desnecessário, especialmente se o seu em uma função