Tengo un complemento que encuentra el búfer para la lista de ciudades, siempre que la distancia. Los nombres de estado y ciudad se toman de la tabla de atributos y se filtran en consecuencia. Lo que quiero es que mi complemento identifique el nombre de la capa o el orden de la capa en el lienzo, independientemente de otras capas presentes en el lienzo y acceda a los atributos correspondientes desde esa capa.
También tengo curiosidad por saber si señalar un nombre de capa específico en el código podría causar algún error en la iteración, aunque hay otras capas presentes.
A continuación se muestra mi código, por favor dígame dónde debo hacer cambios y cuál sería el cambio.
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)
fuente
layer = none
al principio de su código? No parece necesario sobre todo si está en una función