QGIS项目相当于一个针对特定任务的工作空间,其不仅保存地图的图层,还包括图层名称、数据源、符号、字体、数据显示范围等多种配置与资源信息,甚至还可以存储处理模型。在QGIS中,一个项目可以包括多个地图图层。本节介绍QGIS项目与图层的基本概念与操作方法。
一个项目可以保存为项目文档,后缀名为“qgz”或“qgs”。在QGIS 3以前,只能通过“qgs”文件保存项目。“qgs”文件的本质是存储图层的信息等的XML文件。在QGIS 3以后,“qgz”格式采用ZIP压缩方法,不仅包含“qgs”文件,还包括附属数据库(Auxiliary Storage)文件(后缀名为“qgd”)。自QGIS 3.2以来,“qgz”文件成为QGIS项目的默认存储格式,本书也使用“qgz”文件存储QGIS项目。
1. 新建项目
打开QGIS,选择“Project”—“New”菜单命令,即可创建一个QGIS项目(快捷键为“Ctrl+N”),如图2-27所示。
图2-27 新建项目
2. 打开项目
选择“Project”—“Open…”菜单命令,即可弹出“打开项目”对话框(快捷键为“Ctrl+O”),可以在弹出的对话框中选择并打开后缀名为“qgz”或“qgs”的项目文件。另外,在Windows操作系统中,直接双击“qgz”或“qgs”文件也可以打开QGIS项目。
3. 保存项目
选择“Project”—“Save”菜单命令,即可保存项目(快捷键为“Ctrl+S”)。如果当前项目是新建且还未保存的项目,则会弹出“另存为”对话框提示用户选择保存位置。另外,选择“Project”—“Save As…”菜单命令可以另存项目(快捷键为“Ctrl+Shift+S”)。
4. 关闭项目
选择“Project”—“Close”菜单命令,即可关闭当前项目。
5. 恢复项目
如果项目文件经过修改且未保存,则可以通过“Project”—“Revert…”菜单命令恢复到上次保存时的状态(见图2-28)。
图2-28 “Revert Project”对话框
6. 在PostgreSQL数据库中保存/打开项目
QGIS的第一个版本就是为了打开和浏览PostgreSQL中的矢量数据,因此QGIS与PostgreSQL密不可分。QGIS可以将项目保存在PostgreSQL数据库中,具体操作如下。
1)新建PostgreSQL的连接
在QGIS浏览器的“ PostGIS”上右击,在弹出的快捷菜单中选择“New Connection…”命令,弹出创建PostGIS连接对话框。填写必要的数据库连接信息后,务必选择“Allow saving/loading QGIS projects in the database”选项,单击“OK”按钮完成创建。如果没有选择此选项,则在保存项目到PostgreSQL数据库时,会出现“Storage of QGIS projects is not enabled for this database connection”提示,无法保存QGIS项目。
2)保存项目
选择“Project”—“Save To”—“PostgreSQL…”菜单命令,即可打开“Save project to PostgreSQL”对话框,如图2-29所示。
图2-29 保存QGIS项目到PostgreSQL数据库
在“Connection”下拉列表中选择PostgreSQL的数据库连接名称;在“Schema”下拉列表中选择数据库模式;在“Project”下拉列表中输入保存的QGIS项目名称,单击“OK”按钮即可保存项目。
3)打开项目
如果需要打开保存在PostgreSQL中的项目,则可以先选择“Project”—“Open From”—“PostgreSQL…”菜单命令,再选择项目打开即可。另外,在浏览面板中打开PostgreSQL的数据库的连接,即可直接通过双击或拖曳的方式打开QGIS项目,如图2-30所示。
图2-30 PostGIS数据库中存储的QGIS项目
4)删除项目
在QGIS菜单栏中选择“Project”—“Save To”—“PostgreSQL…”命令,打开“Save project to PostgreSQL”对话框,如图2-29所示。在“Project”选项中选择需要删除的QGIS项目,单击“Manage Projects”的下拉菜单,选择“Remove Project”即可删除QGIS项目。
7. QGIS项目属性
选择“Project”—“Properties…”菜单命令,即可打开QGIS项目属性对话框(快捷键为“Ctrl+Shift+P”),如图2-31所示。
图2-31 QGIS项目属性的“General”选项卡
在QGIS项目属性对话框中可以设置项目的基本选项。
· General(通用):设置项目文件、主目录、标题、计量单位、坐标显示、预定义比例尺等基本信息。
· Metadata(元数据):设置项目的元数据,包括识别符、标题、作者、语言、摘要、类别、关键字、联系人、链接、项目历史等,以及元数据的验证工具。元数据的设置有助于其他研究人员了解该项目的有关信息。
· CRS(坐标参考系):设置项目的坐标参考系,也是地图画布中的参考系。
· Default Styles(默认样式):设置加入图层时采用的默认样式。
· Data Sources(数据源):设置各个图层的数据源。
· Relations(连接):设置不同图层中属性的连接。
· Variables(变量):查看和设置QGIS及项目的变量。
· Macros(宏):通过Python语言设置项目打开、保存和关闭时自动运行的宏程序。
· QGIS Server(QGIS服务器):设置将项目通过QGIS Server发布服务时的一些基本权限,并配置测试工具。
【小提示】 在默认情况下,QGIS图层指向数据源位置时采用“相对路径(relative)”的方式进行保存,如果需要将其更改为“绝对路径(absolute)”,则在“General”选项卡“General Settings”组的“Save paths”下拉列表中选择“absolute”即可。
一个QGIS项目可以包含一个或多个图层,图层经过叠加即可形成一幅完整的地图。在QGIS中,图层并不保存数据的实体,而是引用各种类型的数据源,并利用图层样式等属性渲染数据。项目中所有的图层都可以在QGIS图层面板的列表中找到,每个一级节点代表一个图层(图层项)。有些图层节点可以被展开,用于显示符号化属性。
在学习图层之前,首先要学习如何在QGIS中添加一个矢量数据(Shapefile格式)和一个栅格图层(GeoTiff格式)作为测试数据。本节使用吉林省高程数据(jilin_srtm.tif)作为矢量测试数据,使用吉林省地级行政区划数据(jilin_dist.shp)作为栅格测试数据。上述文件可以从本书的测试数据中找到。
本节将介绍如何将这两个数据加入QGIS中并保存项目。为了便于学习,请将上述数据放置到一个可写入的目录下,本节也会将项目文件保存在此目录下。
1. 矢量图层与Shapefile数据
数据源为矢量数据的图层被称为矢量图层。此处以Shapefile数据为例,介绍矢量图层的基本指示,在QGIS中加入矢量图层的方法参见“3.1.2添加矢量数据”。
Shapefile格式(OGR编码为ESRI Shapefile)是由ESRI研发的矢量数据格式之一,使用非常广泛。然而,Shapefile格式数据并不是单一的文件,而是由文件名相同的一系列文件组成的。Shapefile格式数据至少具有以下三种文件:
·“shp”文件:Shapefile数据的主文件,用于保存各种地理要素的几何实体。
·“shx”文件:图形索引格式文件,用于保存几何实体位置索引,即记录每个几何实体在“shp”文件中的位置,能够加快向前或向后搜索一个几何实体的效率。
·“dbf”文件:属性数据格式文件,以dBase IV的数据表格式存储每个几何实体的属性数据。
除此之外,一个Shapefile格式数据还可以包括坐标系统描述文件(prj)、统计信息描述文件(shp.xml)、空间索引文件(sbn)等。
【小提示】 在QGIS中打开Shapefile数据图层时,如果出现了属性表中文乱码的问题,可以使用以下方法解决问题。
(1)在默认情况下,QGIS会忽略Shapefile数据的dBase编码声明(“cpg”文件)。在菜单栏中选择“Settings”—“Options…”命令,打开QGIS设置选项对话框。在“Data Sources”选项卡中,取消勾选“Ignore shapefile encoding declaration”选项,单击“OK”按钮保存即可。
(2)如果误删了Shapefile数据的编码声明文件,可以在Shapefile数据图层的右键菜单中选择“Properties…”命令,打开属性对话框,在“Source”选项卡中,将“Data source encoding”选项设置为正确的编码格式,这种方式不仅可以用于Shapefile数据图层,而且适用于任何矢量数据图层。
通过数据源管理器添加Shapefile数据图层的操作方法如下。
(1)在菜单栏中选择“Layer”—“ Data Source Manager”命令,即可打开数据源管理器(快捷键:Ctrl+L)。另外,该工具也可以在工具栏中找到。
(2)选择“ Vector”选项卡,如图2-32所示。
图2-32 通过数据源管理器添加矢量图层
(3)单击“Vector Dataset(s)”选项右侧的“…”按钮,在弹出的对话框中选择吉林省行政区划的Shapefile数据的主文件“jilin_dist.shp”,单击“OK”按钮。
(4)单击“Data Source Manager”对话框中的“Add”按钮,即可将Shapefile数据文件添加到QGIS项目中。
此时,QGIS会自动为该数据创建一个矢量图层,并随机选择一种颜色对面要素进行渲染。如果希望删除这个图层,可以在图层列表中的“jilin_dist”图层项上右击,并选择“ Remove Layer…”命令,此时QGIS恢复到空项目的状态。
【小提示】 对于矢量图层来说,在其右键菜单中选择“Show Feature Count”命令,即可在图层项的右侧显示要素的数量。
2. 栅格图层与GeoTiff数据
GeoTiff(Georeferenced Tagged Image File Format,GDAL编码:GTiff)是最常用的栅格数据类型之一。Tiff文件本身包含文件头,且用标签(Tag)的形式记录数据的相关信息,因此GeoTiff不一定需要World File文件“tfw”和坐标系声明文件“prj”等文件,并将其元数据记录在GeoTiff文件本身。不过,作为栅格格式,GeoTiff数据可能存在金字塔文件“ovr”和描述文件“xml”。
采用数据源管理器添加GeoTiff数据图层的操作如下。
(1)打开数据源管理器。
(2)在“ Raster”选项卡中,单击“Raster Dataset(s)”选项右侧的“…”按钮(见图2-33),在弹出的对话框中,选择GeoTiff数据文件“jilin_srtm.tif”,单击“OK”按钮。
图2-33 通过数据源管理器添加栅格图层
(3)单击“Data Source Manager”对话框中的“Add”按钮,即可将吉林省高程数据添加到项目中。
在图层面板中,“ ”图标指示一个栅格图层。与矢量图层类似,可以在图层的右键菜单中选择“ Remove Layer…”命令移除图层。
通过项目模板功能,可以复用图层渲染、地图整饰等设置,减少许多重复性工作。本节介绍如何创建及使用项目模板。
1. 创建项目模板
在菜单栏选择“Project”—“Save To”—“Templates…”命令,即可将当前项目保存为模板。
在Windows 10系统中,默认QGIS项目模板文件在以下目录中(将“<用户名>”更改为当前用户名):C:\Users\<用户名>\AppData\Roaming\QGIS\QGIS3\profiles\default\project_templates。
QGIS项目模板支持“qgz”和“qgs”两类项目格式。
【小提示】 项目模板目录可采用以下方法设置:在菜单栏选择“Settings”—“Options…”命令,在弹出的QGIS设置选项对话框中,选择“General”选项卡,并在“Project files”选项组中找到“Template folder”选项进行设置。
有时,我们需要把图层中的数据作为模板的一部分保存起来。在本例中,栅格数据作为底图要被多次使用,而矢量数据则需要替换。所以,我们将GeoTiff数据和项目文件都复制到模板目录下。
2. 利用模板创建项目
通过模板创建一个新的QGIS项目的方法如下:在菜单栏选择“Project”—“Newfrom Template”菜单命令,并在子菜单中选择一个QGIS项目模板(见图2-34)。
图2-34 通过模板新建QGIS项目
通过项目模板创建QGIS项目(或者打开QGIS项目)时,如果某些图层的数据源缺失,则会自动弹出“Handle Unavailable Layers”对话框处理这些数据(见图2-35)。
图2-35 处理失效图层
对于用相对路径指向数据源的项目来说,复制QGIS项目时要一并复制数据(保持数据与项目的路径关系),这样才不会出现失效图层的情况。因此,创建QGIS项目模板时,如果某些图层需要复用,则建议将这些图层的数据也保存在项目模板目录下。
【小提示】 图层的数据源可以通过右键菜单的“Change Data Source…”选项进行更改与设置。