距離があれば、都市のリストのバッファーを見つけるプラグインがあります。州と都市の名前は属性テーブルから取得され、それに応じてフィルタリングされます。私が欲しいのは、私のプラグインは、キャンバスに存在する他のレイヤーに関係なく、キャンバスのレイヤー名またはレイヤーの順序を識別し、そのレイヤーから対応する属性にアクセスする必要があるということです。
また、コード内の特定のレイヤー名を指すと、他のレイヤーがいくつか存在するにもかかわらず、反復でエラーが発生するのではないかと思っています。
以下は私のコードです。どこで変更を加える必要があり、何が変更されるのか教えてください。
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)