QGIS中的批量重构字段工具“字段映射”语法是什么?


10

在QGIS中,处理工具箱中有一个很好的工具“重构字段”

重构字段工具

在单层上使用它非常简单。

但是,当您计划以批处理方式使用它时,可以看到“字段映射”文本框。我正在寻找要在其中使用的语法示例。我还没有找到任何特定的文档。

批量重构


从GUI运行重构后,您可以在Processing-> History菜单(Ctrl + Alt + H)中观看命令
-kadarivan

Answers:


7

这样做不是很舒服,但是以下是该文本框的必需语法(为了清楚起见,我将其写成几行):

{'expression': u'type the expression here',
 'length': <type the length>,
 'type': <code of the type>,
 'name': u'type the field name here',
 'precision': <type the precision>}

例如(注意使用大括号):

{'expression': u'"FLAG1"+"FLAG2"',
 'length': 20, 'type': 6,
 'name': u'FLAG1',
 'precision': 5}

您需要编写与输入行数一样多的上述行,并用逗号分隔。例如,如果您的图层包含三个字段:

{'expression': u'"FLAG1"+"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG1', 'precision': 5}, {'expression': u'100*"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG2', 'precision': 5}, {'expression': u'"100-"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG3', 'precision': 5}

它应该工作(对我有用)。

请注意,您可以避免使用这种面向字典的语法,而直接使用所需的值。例如,参考第一个示例,您可以简单地使用:

{u'"FLAG1"+"FLAG2"', 20, 6, u'FLAG1', 5}

如果不使用此语法,将显示以下错误:

缺少参数值:字段映射(行1)


2
您能解释一下<类型代码>是什么意思吗?我尝试使用3假定它是字符串(因为它是下拉选项中的第3个),但出现错误:'int'对象没有属性' getItem '有关更多详细信息,请参见日志。我使用的代码是:{u'“ FLAG”',0,3,u'FLAG',0},其中{'expression':u'“ FLAG”','length':0,'类型”:3,“名称”:u'FLAG',“精度”:0}。
JAT86'9

@ JAT86它是标识数据类型(即int,字符串等)的数字。不幸的是,我没有找到它们的引用,但我应该记住最常用类型的值:int表示2,double表示6,string表示10。除此之外,也许您不应该指定0字段长度(至少1!)。请让我知道您是否解决了该问题。
mgri

感谢您的及时答复。也许批处理比我想象的要复杂得多。我尝试使用至少1的长度和10的代码类型:{u'“ FLAG”',1、10,u'FLAG',0}仍然显示错误:'int'对象没有属性' getItem'有关更多详细信息,请参见日志。我的图层具有以下属性:名称:标志,类型:字符串,长度: 0,精度: 0,表达式: “标志”
JAT86

@ JAT86从GUI运行该工具是否会返回任何问题?
mgri

如果用GUI表示单层,则不存在任何问题。“单击删除所选字段”后,成功删除了FLAG列,并将其保存到新层“重构”中。
JAT86

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.