Как использовать fieldValueConverter в QgsVectorFileWriter.writeAsVectorFormat - PullRequest
1 голос
/ 11 июня 2019

У меня есть шейп-файл с 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

...