У меня есть плагин, который находит буфер для списка городов, при условии расстояния. Названия штатов и городов берутся из таблицы атрибутов и соответствующим образом фильтруются. Я хочу, чтобы мой плагин определял имя слоя или порядок слоя на холсте независимо от других слоев, присутствующих на холсте, и обращался к соответствующим атрибутам этого слоя.
Мне также просто любопытно, может ли указание определенного имени слоя в коде вызвать какую-либо ошибку в итерации, хотя некоторые другие уровни присутствуют?
Ниже мой код, пожалуйста, скажите мне, где я должен внести изменения и что будет изменение?
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)