我有一个具有197个字段的shapefile,但我只想保留大约7个字段。当我使用QgsVectorlayer.provider()。deleteAttributes()删除字段时,大约需要20分钟。我想知道如果我使用QgsVectorFileWriter.writeAsVectorFormat来创建仅包含这7个字段的新图层是否会更快。但是,我确实在语法上苦苦挣扎,尤其是fieldValueConverter参数接受的语法。
我一直在查看文档(https://qgis.org/api/classQgsVectorFileWriter_1_1FieldValueConverter.html,https://qgis.org/api/classQgsVectorFileWriter.html#ae54dce04a5fc1a570b6c4c4f7dfa064d),但在理解文档时遇到了很多麻烦。我也不明白错误代码试图告诉我什么。我最有信心的是,fieldValueConverter可能不像接受字段名列表那样简单... 我正在使用QGIS 3.4.4。
我所拥有的:
project = QgsProject.instance()
origlayer = project.mapLayersByName("data_layer")[0]
keeplist = ["field1”, “field2”, “field3"] #example fields to keep
QgsVectorFileWriter.writeAsVectorFormat(layer = origlayer , filename = "FINAL_layer", fieldValueConverter = keeplist)
错误代码:
TypeError: QgsVectorFileWriter.writeAsVectorFormat(): arguments did not match any overloaded call:
overload 1: 'fieldValueConverter' is not a valid keyword argument
overload 2: 'fieldValueConverter' is not a valid keyword argument
overload 3: 'fieldValueConverter' is not a valid keyword argument