跳转至

QFieldCloud系统文档

本文档的目的是提供QFieldCloud系统概述,便于了解底层逻辑和技术。

主体和概念

QGIS工程

QGIS工程是 .qgs.qgz 文件。在QGIS桌面端创建一个工程,并使用QGIS插件 (QField同步) 上传到QField云。在QGIS工程上传之前,QGIS工程的每一图层都需要一个 "动作" 来决定QFieldSync和QField应该如何处理该图层。可以设置两种类型的动作 - 一种用于QFieldCloud,另一种用于传统数据线的导出。

此信息保存在QGS工程中,作为图层的 customProperty ,并带有 QFieldSync/action 键。

可用的动作包括:

动作内部名称 UI中显示的名称
离线 - OFFLINE 合并 - Consolidate
NO_ACTION 活动图层 - Live layer
移除 - REMOVE 忽略图层 - Ignore layer
复制 - COPY 复制 - Copy
KEEP_EXISTING 保持现有 - Keep Existing

这是QField同步在不同图层动作中的行为:

动作 基于文件的图层 不是基于文件的图层
离线 - OFFLINE 创建统一的数据副本 创建统一的数据副本
NO_ACTION N/A 图层无动作
移除 - REMOVE 从工程移除图层 从工程移除图层
复制 - COPY 使源路径为相对并复制文件 N/A
KEEP_EXISTING 使源路径为相对,如果文件不存在,则复制该文件 N/A

这是 QFieldCloud (libqfieldsync) 与以下图层的行为:

动作 基于文件的图层 未基于文件
离线 合并拉取时创建数据副本,推送时将增量文件应用于原始数据源 合并拉取时创建数据副本,推送时将增量文件应用于原始数据源
NO_ACTION N/A 图层无动作
移除 - REMOVE 从工程移除图层 从工程移除图层
复制 - COPY 使源路径相对,并在拉取时创建数据副本,推送时将增量文件应用于原始数据源 N/A
KEEP_EXISTING 使源路径相对,并在拉取时创建数据副本,推送时将增量文件应用于原始数据源 N/A

这是QField与图层的行为:

动作 基于文件的图层 不是基于文件的图层
离线 创建和推送增量文件 N/A (此时总是基于文件)
NO_ACTION N/A 编辑在线 (实时) 数据库
移除 - REMOVE N/A (图层已不存在) N/A (图层已不存在)
复制 - COPY 创建和推送增量文件 N/A
KEEP_EXISTING 创建和推送增量文件 N/A

总之,对于QFieldCloud而言:

  • NO_ACTION 用于位于服务器上的在线图层 可通过互联网访问,并直接修改由 QField。
  • HYBRID 意味着将生成地理包在 服务器 (或直接在桌面端为基于文件的图层),并 由客户端下载。客户端将生成更改的增量文件。
  • OFFLINE 用于如处理 QFieldCloud不可见的本地数据库, 这些数据库在从桌面端加载到服务器之前被合并, 并且QFieldCloud不与原始数据同步。
  • REMOVE 仅仅是从工程中移除图层。
  • KEEP_EXISTENT 不会用于QFieldCloud同步。

使用QFieldSync插件,可以更新QFieldCloud已加载的工程。如果更改仅涉及样式、表单等,而不涉及图层的构造,只需更新服务器端的工程即可。如果图层结构发生更改,工程将在服务器端重置 (增量文件将被删除),并且对于每个客户端,在能够推送新的更改之前,都需要下载工程的更新版本。

QFieldCloud工程

由一个且仅有一个QGIS工程和合适的附属文件 (如地理包、图像等) 组成,包括离线或混合数据包。

使用案例

混合

在服务器同步的混合编辑模式

混合编辑模式
混合编辑模式

离线数据库

桌面端同步的离线编辑模式

离线编辑模式
离线编辑模式