Mam wtyczkę, która wyszukuje bufor dla listy miast, pod warunkiem odległości. Nazwy stanów i miast są pobierane z tabeli atrybutów i są odpowiednio filtrowane. To, czego chcę, to Moja wtyczka powinna identyfikować nazwę warstwy lub kolejność warstwy w obszarze roboczym, niezależnie od innych warstw obecnych w obszarze roboczym i uzyskiwać dostęp do odpowiednich atrybutów z tej warstwy.
Jestem również ciekawy, czy wskazanie konkretnej nazwy warstwy w kodzie spowoduje błąd w iteracji, mimo że istnieją inne warstwy?
Poniżej znajduje się mój kod, proszę powiedzieć, gdzie powinienem wprowadzić zmiany i jaka byłaby zmiana?
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)
źródło
layer = none
na początku swojego kodu? Wydaje się niepotrzebne, zwłaszcza jeśli jest w funkcji