У меня есть шейп-файл с 197 полями, но я хочу сохранить только около 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