Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自所选功能的变量存储的代码错误_Python_Variables_Qgis - Fatal编程技术网

Python 来自所选功能的变量存储的代码错误

Python 来自所选功能的变量存储的代码错误,python,variables,qgis,Python,Variables,Qgis,我正在使用QGIS 3.6和内置的Python文本编辑器。我已经找到了一段代码,我正试图让它工作,我已经修改了我的能力,以满足我的具体需要。我有一个名为“调节器”的点图层,它包含一个名为“城镇”的字段。该代码的思想是,当我在“Regulators”层上选择单个功能时,代码将查看“Town”字段,并选择与该字段值匹配的所有其他功能。我选择一个功能,运行以下代码: layer = iface.activeLayer() field_name = 'Town' values = [] for fea

我正在使用QGIS 3.6和内置的Python文本编辑器。我已经找到了一段代码,我正试图让它工作,我已经修改了我的能力,以满足我的具体需要。我有一个名为“调节器”的点图层,它包含一个名为“城镇”的字段。该代码的思想是,当我在“Regulators”层上选择单个功能时,代码将查看“Town”字段,并选择与该字段值匹配的所有其他功能。我选择一个功能,运行以下代码:

layer = iface.activeLayer()
field_name = 'Town'

values = []
for feat in layer.selectedFeatures():
    tmp_value = feat[field_name]
    if tmp_value not in values:
        values.append(str(tmp_value))

strings = []
for val in values:
    if val != values[-1]:
        string = field_name + ' = ' + val +  ' or '
        strings.append(string)
    else:
        last_string = field_name + ' = ' + val
        strings.append(last_string)
query = ''.join(strings)

request = QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry)
request.setSubsetOfAttributes([]).setFilterExpression(query)

selection = layer.getFeatures(request)
layer.setSelectedFeatures([k.id() for k in selection])
我得到了这个错误:

Traceback (most recent call last):
  File "C:\PROGRA~1\QGIS3~1.6\apps\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "<string>", line 24, in <module>
AttributeError: 'QgsVectorLayer' object has no attribute 'setSelectedFeatures'
回溯(最近一次呼叫最后一次):
文件“C:\PROGRA~1\QGIS3~1.6\apps\Python37\lib\code.py”,第90行,运行代码
exec(代码,self.locals)
文件“”,第1行,在
文件“”,第24行,在
AttributeError:“QgsVectorLayer”对象没有属性“setSelectedFeatures”
我对python非常陌生,我认为第1行或第5行没有任何错误。我已经找到了一些其他代码,它们完成了我在这里尝试的操作,但是它们也返回了错误,所以我想知道是否有一些方法或函数在发布这些代码后发生了更改。带有QGIS的集成编译器与我以前使用的编译器也有很大不同


编辑:我已经根据到目前为止收到的反馈更新了代码和错误消息。我假设QgsVectorLayer是所引用向量层的通用术语,在本例中是“调节器”层。但我不明白为什么它试图使用setSelectedFeatures方法作为属性

分号必须是冒号。另外,接下来的三行应该进一步缩进一级。好的,我做了这些更改,现在我得到了错误“File”,第1行,in,“File”,第24行,in“这显然不是完整的错误消息。这只是告诉你错误发生在哪里的部分(只有“第24行”部分指的是你的代码),而不是告诉你实际出了什么问题的部分。我试着发布我认为重要的内容。不知何故,我错过了实际的错误消息。我已经更新了帖子以反映新的错误消息。非常感谢您的帮助。
setSelectedFeatures()
显然是一个QGIS 2.x方法名。它现在被称为
selectByIds()
。(来源:)