3.1.4 虚拟图层

虚拟图层是在不改变矢量数据源的情况下,改变某些空间或属性信息,或者组合多个矢量图层,并以虚拟图层的方式展现数据。虚拟图层并不直接指向数据源,而是通过SQL查询语句等引用一个或多个矢量图层。

本节介绍如何通过虚拟图层实现属性连接、数据筛选与数据合并等功能。

1. 属性连接

此处介绍如何通过虚拟图层将“2017年吉林省各地区降水量(mm).xlsx”文件连接到吉林省地级行政区划文件(jilin_dist.shp)上,达到与“3.1.3属性连接与图层关联”章节介绍的属性连接类似的效果,具体操作如下。

(1)在QGIS中打开上述数据图层。

(2)选择“Layer”—“Add Layer”—“Add/Edit Virtual Layer”菜单命令,打开数据源管理器,如图3-16所示。

图3-16 利用虚拟图层实现属性连接

(3)在“Layer name”文本框中输入新生成的虚拟图层的名称;在“Embedded layers”组合框中单击“Import”按钮,将上述两个图层加入列表中,并在“Local name”选项中设置图层名称,同时将其作为SQL查询语句的表名称。单击“Add”按钮可以输入图层位置;单击“Remove”按钮可以删除图层。在“Query”文本框中输入以下查询语句:

该语句可以通过jilin_dist图层的“NAME”字段和prec图层的“city”字段将prec图层的属性连接到jilin_dist图层中。

(4)单击“Add”按钮即可在图层列表中看到该虚拟图层。

【小提示】选中“Unique identifier column”复选框后,该字段相同的要素将被合并。在“Geometry”组合框中可以对虚体图层的要素类型进行设置。

• Autodetect(自动检测):QGIS自动检测并决定虚拟图层的要素类型。

• No geometry(无几何对象):生成后的虚拟图层没有几何实体,以数据表的形式存在。

• Geometry(几何对象):根据“Geometry column”字段内容,在“CRS”坐标系下生成Type类型的几何对象。

2. 数据筛选

此处介绍采用虚拟图层的方式筛选矢量图层的一部分要素,数据筛选还可以通过“5.2数据筛选”的相关内容实现。本例筛选示例数据中的吉林省县级行政区划数据(jilin_county.shp),在虚拟图层中只显示长春市的县级行政区,具体操作如下。

(1)在QGIS中打开“jilin_county.shp”数据。

(2)选择“Layer”—“Add Layer”—“Add/Edit Virtual Layer”菜单命令,打开数据源管理器,如图3-17所示。

图3-17 利用虚拟图层实现数据筛选

(3)在“Layer name”文本框中输入新生成的虚拟图层的名称;在“Embedded layers”组合框中单击“Import”按钮,将“jilin_county”图层加入列表中,在“Local name”列设置图层名称,并将其作为SQL查询语句的表名称;在“Query”文本框中输入以下查询语句:

(4)单击“Add”按钮,即在QGIS中加入经过数据筛选后的虚拟图层。

3. 数据合并

此处介绍采用虚拟图层的方式合并多个具有相同属性字段的矢量图层,数据合并还可以通过“4.1.3联合、融合与合并”的相关内容实现。本例将把蒙古国行政区划数据“Mongolia.shp”和内蒙古自治区行政区划数据“InnerMongolia.shp”进行合并,并生成新的虚拟图层,SQL查询语句如下:

其中,“Mongolia”和“InnerMongolia”分别是蒙古国行政区划与内蒙古自治区行政区划数据的图层名称,可以通过“Local name”选项设置,如图3-18所示。

图3-18 利用虚拟图层实现数据合并

除了上述功能,虚拟图层还可以实现更高级的应用。虚拟图层的优势在于,在不改变数据源的情况下即可进行筛选、合并、属性连接等操作,并且它可以作为独立的图层参与到后续的数据处理工作中,在实际工作中非常实用。

【小提示】与“3.1.3属性连接与图层关联”介绍的属性连接类似,虚拟图层也可以通过右键菜单选择“Export”—“Save Feature As…”命令,通过导出数据的方式,将虚拟图层转化为数据实体。