Ich habe ein Plugin, das Puffer für die Liste der Städte findet, sofern die Entfernung angegeben ist. Die Namen der Bundesstaaten und Städte werden aus der Attributtabelle übernommen und entsprechend gefiltert. Ich möchte, dass mein Plugin den Ebenennamen oder die Reihenfolge der Ebene in der Zeichenfläche unabhängig von den anderen in der Zeichenfläche vorhandenen Ebenen identifiziert und über diese Ebene auf die entsprechenden Attribute zugreift.
Ich bin auch nur neugierig, ob das Zeigen eines bestimmten Ebenennamens im Code einen Fehler bei der Iteration verursachen würde, obwohl einige andere Ebenen vorhanden sind.
Unten ist mein Code, bitte sagen Sie mir, wo ich Änderungen vornehmen soll und was die Änderung sein würde.
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)
quelle
layer = none
am Anfang Ihres Codes? Es scheint unnötig, vor allem, wenn es in einer Funktion ist