桌面 GIS 的补丁版通常不会带来显眼的新面板,却可能修正影响图例统计、编辑结果、服务查询和网页输出的边缘路径。QGIS 3.44.12 的官方 GitHub release 显示该版本由 qgis-bot 在 2026 年 7 月 3 日发布;标签和提交都带有 verified 签名,发布提交为 916a9ec。对生产桌面和 QGIS Server 团队而言,签名和版本号只能确认取到了哪个构建,升级是否安全仍要针对这批修复覆盖的业务路径做回归。

官方 compare 从 final-3_44_11 到 final-3_44_12 列出 26 个提交。它们横跨符号、几何、GDAL、WFS、项目元数据、服务端模板、PostgreSQL 客户端版本展示与翻译。因此一次“只装补丁”的变更,应该有一张能回放的项目、数据源和服务请求清单,而不是仅检查 QGIS 是否能启动。

可核查事实

  • QGIS 3.44.12 官方 release 显示 qgis-bot 于 2026 年 7 月 3 日 12:25 发布,标签 final-3_44_12 与提交 916a9ec 均为 verified 签名。

  • 官方 compare 显示 final-3_44_11 到 final-3_44_12 之间有 26 个提交。

  • 提交 5abc557 修复了矢量图例中 ELSE 规则的要素计数。

  • 提交 87ea04f 修复 CircularString 在无效 vertex id 删除顶点时错误移除几何的问题,并增加相应测试。

  • 提交 7f7d6aa 在 GDAL provider 的 buildPyramidList() 中处理损坏图层,以避免崩溃。

  • 提交 15914ab 修复 WFS provider 在 GMLAS 模式下筛选条件中重复 namespace 的问题。

  • 提交 b128d84 使项目保存时仅在作者元数据为空时才写入当前用户全名。

  • 合并提交 b2fc60c 增加 HTML escape;QGIS Server OGC API 的 getFeature 与 getFeatures 模板对属性输出调用 escape()。

核心机制:补丁的风险来自业务路径,而非版本号本身

QGIS 3.44.12 的 compare 记录中,提交 5abc557 修复了 ELSE 规则的矢量图例计数。若团队用分类图例的数量做质检、导出说明或运营统计,就应在升级前后打开同一项目,确认常规类别、空值和“其他值”类别的计数、符号和导出结果一致。只看图层是否显示,捕捉不到计数落在默认类别这一类问题。

几何编辑也需要单独回归。提交 87ea04f 针对 CircularString 的无效 vertex id 删除,避免错误移除几何;这意味着含圆弧的编辑样本必须覆盖越界顶点、最小合法点数、撤销/重做和保存后重开。补丁纠正了一个边界行为,但项目中的自动化脚本、插件或人工操作仍可能依赖旧的失败表现,不能把“崩溃消失”直接等同于编辑结果无差异。

官方范围也给出明确的风险定位:7f7d6aa处理GDAL buildPyramidList()的损坏图层崩溃,15914ab修复WFS GMLAS筛选条件重复namespace,b128d84仅在项目作者元数据为空时写入当前用户全名,b2fc60c使QGIS Server OGC API HTML模板对属性输出调用escape()。这些是应被逐项重放的修复点,不是对所有工程和服务配置的概括性保证。

GIS 场景:桌面项目、外部服务与发布端一起验收

一份市政管网项目可能既有复杂分类渲染,也有圆弧管线、来自 WFS 的业务图层和由 QGIS Server 暴露的查询页面。QGIS 3.44.12 中,提交 7f7d6aa 为 GDAL provider 的 buildPyramidList() 增加损坏图层处理,升级样本应包含有效栅格、损坏或不可读栅格以及概览构建流程,记录是否崩溃、报错是否可识别、其他图层是否仍能操作。

外部数据路径应覆盖服务合同。提交 15914ab 修复 GMLAS 模式下 WFS filter 的重复 namespace,因此应以带命名空间的真实或脱敏请求重放 GetFeature/筛选场景,并核对请求、返回要素数、属性和空间范围。对于项目资料,提交 b128d84 使保存时只在作者元数据为空时写入当前用户全名;团队可用已有作者、空作者和只读项目各保存一次,防止交接项目被静默改写来源信息。

服务端页面同样在本次范围内。合并提交 b2fc60c 让 QGIS Server OGC API 的 getFeature 和 getFeatures HTML 模板对属性调用 escape()。这是一项输出编码修正,而不是对全部数据服务的安全承诺;验收应使用含特殊字符的属性、链接文本和空值,确认 HTML 显示正确,同时保持 JSON、下载和身份访问策略的独立测试。

技术路径

  1. 固定现有 QGIS 版本、插件、GDAL/PROJ、PostgreSQL 客户端、操作系统和测试项目,保存升级前截图与日志。

  2. 用官方 release 的 final-3_44_12 和提交 916a9ec 记录安装来源;用 compare 页面确认本次评审范围为 26 个提交。

  3. 回归分类渲染,特别测试 ELSE 规则、空值、图例计数、布局输出和自动报告。

  4. 回归 CircularString 编辑:合法与非法 vertex id、撤销/重做、保存重开、格式导出和插件调用。

  5. 对有效与损坏栅格分别运行概览/金字塔相关操作,确认 GDAL 错误被隔离且诊断信息保留。

  6. 重放含 namespace 的 WFS/GMLAS filter,比较响应状态、数量、属性、几何和过滤条件。

  7. 检查项目作者元数据和 QGIS Server OGC API HTML 输出;特殊字符必须正确呈现,不能被当作页面标记执行。

  8. 将问题样本、请求、版本与结果归档,灰度部署后再更新全员桌面镜像或服务节点。

检查清单

  • ELSE 图例规则的计数、图例和导出是否与业务预期一致?

  • 圆弧几何的无效顶点操作是否只被拒绝,而不会损坏要素?

  • 损坏栅格构建概览时是否可控失败且不影响其他图层?

  • 含 namespace 的 WFS/GMLAS 过滤请求是否稳定返回预期要素?

  • 现有项目作者元数据保存后是否仍被保留?

  • OGC API HTML 页面是否正确转义特殊属性值,并与 JSON 接口分别验证?

  • 是否记录了版本、提交、插件、库版本、样例与回归结果?

风险边界

官方记录显示 3.44.12 包含 26 个提交和大量翻译更新,但 compare 列表不是项目所有插件、数据库驱动、浏览器嵌入或第三方服务的兼容承诺。verified 标签只说明签名状态,不替代对本地安装包、镜像、扩展与配置的供应链核验。

本次 HTML escape 修正只覆盖 compare 中对应的 QGIS Server OGC API 模板输出;它不能替代数据录入校验、访问控制、CSP、下载文件处置或其他接口的安全测试。同样,GDAL 的防崩溃处理不表示损坏栅格已经可被可靠分析,错误样本仍应回到数据生产端修复。

资料依据

本文依据 QGIS 3.44.12 官方发布页final-3_44_11 到 final-3_44_12 官方 compare 撰写。发布日期、签名、提交、提交数量和各修复项均来自 QGIS 官方 GitHub 一手记录;回归样本、发布节奏和治理建议为基于这些修复范围提出的工程实践。

结论

补丁升级最可靠的验收单位不是“软件能启动”,而是业务项目能否在图例、编辑、栅格、服务筛选和网页输出路径上保持可解释的结果。用此次修复点驱动一组小而完整的回归样本,才能让 QGIS 3.44.12 的修复真正进入生产流程。