QGIS基本功 | 19 QGIS工程文件剖析

​ 01 工程文件(Project File)

工程文件(Project File)以XML文件存储当前QGIS会话(Session)的所有状态,包含地图相关图层、图层是否可查询、图层属性(符号和样式)、地图窗口的坐标系、打印布局(包括其中元素及其设定)、数字化设置、表关联、宏定义、默认样式、插件设置等。目前,工程文件已经涵盖了QGIS会话的28个方面,其内容还在不断扩展中。

通过工程文件可以方便的存储、重复使用和共享已完成的工作成果。

 02 打开、新建和保存工程

  • 打开工程

在windows系统的文件资源管理器中双击工程文件,即可以该文件启动QGIS会话。

 

如果QGIS已启动,可在【浏览器】面板中定位到工程文件路径,双击或者直接将工程文件拖拽到地图窗口,同样可以打开该工程文件。

点击QGIS工具栏的【打开】按钮或者菜单【工程】->【打开】,浏览到工程文件的磁盘位置,选择要打开的工程文件,是第三种打开工程文件的方法。

  • 新建工程

菜单【工程】->【新建】,或者在工程工具栏点击【新建工程】按钮,可以清除当前的会话内容,打开一个全新的会话,QGIS默认使用“未命名的工程”为新会话命名。

新建工程时,如果当前打开的工程有未保存的修改(标题栏显示 *),则QGIS将弹出对话框提示保存当前的工程改变的内容,点击【Save】按钮保存,【Discard】则放弃对当前工程文件的修改,直接新建,【Cancel】取消将新建工程。

  • 保存工程

当完成对地图的设置,可以使用工具栏的【保存工程】按钮,或者菜单【工程】->【保存】/【另存为】,将当前会话的状态保存到磁盘。

 

如果该工程为第一次保存,QGIS将提示选择保存的路径和工程文件名称,默认以.QGZ扩展名,这是一种压缩格式的文件。与之对应的是.QGS扩展名,为未压缩工程文件,此时工程文件以XML格式存储,可以用文本编辑器打开并编辑其内容。

 

​ 

03 工程文件剖析

  • 存储格式

工程文件可以保存为*.QGS或者*.QGZ两种后缀格式。*.QGS文件格是XML格式 保存的明码文件,而*.QGZ文件则是zip压缩文件,包含一个QGS文件和一个QGD文件(QGD文件是以SQLite的格式存储与工程关联的辅助数据的数据库,如果没有辅助数据,QGD文件为空)。

将QGZ文件的扩展名修改为zip,可以用解压缩软件打开查看其内容。

默认的存储格式可以在菜单【设置】->【选项】->【通用】->【默认工程文件格式】中设置。

  • 工程文件内容详解

用文本编辑器打开QGS格式的工程文件,可以看到其根节点和28个一级节点如下图:

各个节点的内容说明如下:

  1. Qgis:根节点,所有工程文件元素的父节点,记录工程文件的保存时间、工程名称、作者和QGIS的版本。

  2. homePath:工程主目录,在【工程属性】->【通用】中设置。

  3. Title:工程标题,在【工程属性】->【通用】中设置。

  4. Autotransaction:自动创建事务。事务编辑指的是在所支持的数据库中,来自同一数据库的编辑状态是同步的,并在服务器端事务中执行。启用后,源自相同数据库连接的图层将被归入同一个事务组。它们的编辑状态会自动同步,对这些图层的更改会被立刻发送到数据源。目前仅支持Postgre、GPKG、Spatialite和Oracle数据库。在【工程属性】->【数据源】中设置。

  5. evaluateDefaultValues:是否在数据源端求默认值。当数字化一个新要素时,是否自动计算数据库定义的字段默认取值。启用后将尽早赋予默认值。目前仅支持Postgre、GPKG、Spatialite和Oracle数据库。在【工程属性】->【数据源】中设置。

  6. Trust:数据源没有元数据时是否信任工程而不进行图层检查。通过跳过PostgreSQL图层中的数据 检查来加快工程的载入。在QGIS服务器环境、工程包含巨大的数据库视图或者实体化视图时,不检查图层将有效提高载入速度。在【工程属性】->【数据源】中设置。

  7. projectCrs:工程的坐标参照系定义,决定地图窗口所使用的坐标参照系。

  8. layer-tree-group:包含的所有图层组定义,由具体的图层组成。

  9. snapping-settings:捕捉设置。

  10. Relations:保存图层或者属性表的关联信息。

  11. Mapcanvas:地图画布的相关属性,如名称、可视范围、坐标参照系、地图单位等。地图画布用于显示图层,并与地图交互,是QGIS中最重要的用户界面元素,一个地图窗口对应一个地图画布。

  12. projectModels:地理处理模型,以XML格式保存在工程中。

  13. Legend:图例定义。包含多个图例图层,每个图层图例存储其名称、是否显示要素个数、绘制顺序、可见性和默认是否展开等属性。

  14. mapViewDocks:地图主窗口以外的其他地图窗口。

  15. mapViewDocks3D:三维地图窗口。

  16. main-annotation-layer:注记图层。每个工程包含一个注记图层,用于绘制所添加的注记,总是位于所有图层的上方且总是可见。

  17. Projectlayers:工程所引用的所有图层,由多个地图图层(maplayer)子节点组成。每个maplayer的元素为图层属性的定义,由图层范围(extent)、图层唯一标识(id)、图层关联的数据源(datasource)、关键字列表(keywordList)、图层名称(layername)、图层坐标参照系(srs)、元数据信息(resourceMetadata)、数据源提供者(provider)等组成,实际上是将图层属性对话框中的设置以XML格式存储。

  18. Layerorder:图层的渲染顺序。按照元素从下到上渲染,因此越在下面的元素越先绘制和渲染。

  19. Properties:工程属性,包括工程的默认样式(DefaultStyles)、数字化(Digitizing)、默认选中要素颜色和地图背景色(Gui)等,实际上是将工程属性对话框的选项以XML格式存储。

  20. dataDefinedServerProperties:数据定义服务器参数属性。

  21. visibility-presets:地图主题的属性,包含主题名称、每个图层所使用的样式、是否可见、是否展开。

  22. transformContext:坐标变换设置。

  23. projectMetadata:此节点记录工程的元数据。

  24. Annotations:注记集合。每个注记生成一个节点,描述注记的内容和样式。

  25. Layouts:打印布局节点,由多个布局(Layout)子节点组成,每个布局对于工程中的一个布局窗口。

  26. Bookmarks:空间书签。

  27. ProjectViewSettings:工程预定义比例尺。  

  28. ProjectTimeSettings:工程的时态设置,包括开始时间、结束时间、时间单位、是否开启时间累积等属性。

  29. ProjectDisplaySettings:坐标和方位格式设置,对应的属性可在【工程属性】->【通用】标签下的“坐标和方位显示”->“方位格式”中查看。

工程文件大多数的一级节点包含一个或多个子节点。例如展开Projectlayers节点,其子节点由工程所引用的图层(maplayer)节点组成,里面详细描述了图层的属性,如下图:

由此可见,工程文件包含了当前QGIS会话的详细内容,如果您对这些内容足够熟悉,可以不通过QGIS而用文本编辑器对工程文件进行修改,其效果与使用QGIS界面修改相同。


版权声明

本文欢迎转载,转载时请注明出处。

猜你喜欢

转载自blog.csdn.net/QGISClass/article/details/113030667