J'ai un plugin qui trouve un tampon pour la liste des villes, à condition que la distance. Les noms d'état et de ville sont extraits de la table attributaire et filtrés en conséquence. Ce que je veux, c'est que mon plug-in identifie le nom ou l'ordre du calque dans le canevas, quels que soient les autres calques présents dans le canevas, et accède aux attributs correspondants à partir de ce calque.
Je suis également curieux de savoir si le fait de pointer un nom de couche spécifique dans le code entraînerait une erreur d'itération bien que d'autres couches soient présentes?
Ci-dessous mon code s'il vous plaît dites-moi où dois-je apporter des modifications et quel serait le changement?
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)
la source
layer = none
au début de votre code? Cela semble inutile surtout si c'est dans une fonction