QGIS 连接 PostGIS 数据库:从加载图层到保存编辑结果

QGIS
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

问题场景:空间数据放进数据库后,QGIS 仍然是重要入口

当数据量变大、多人协作增多、WebGIS 后端需要统一数据源时,把空间数据放进 PostGIS 是更可靠的选择。但数据库并不意味着只能写 SQL。QGIS 可以直接连接 PostGIS,用于浏览、制图、查询、编辑和质检,是桌面 GIS 与空间数据库之间非常实用的桥梁。

要让这条链路稳定运行,需要关注连接参数、表结构、主键、SRID、空间索引、编辑权限和加载性能。只要其中一项没处理好,就可能出现图层加载慢、无法编辑或保存失败。

创建数据库连接

在 QGIS 浏览器面板中找到 PostgreSQL,新建连接,填写主机、端口、数据库名、用户名和密码。如果数据库在服务器上,还要确认防火墙、安全组和 PostgreSQL 监听配置允许访问。生产环境不建议使用超级用户连接。

加载图层前检查表结构

PostGIS 空间表最好具备稳定主键、明确几何字段和正确 SRID。没有主键的表在 QGIS 中可能无法稳定编辑。SRID 错误则会导致图层偏移或无法与其他数据正确叠加。

检查项 推荐状态 问题表现
主键 唯一 id 无法编辑或选择异常
SRID 与数据真实 CRS 一致 位置偏移
空间索引 GiST 索引 加载和筛选慢

编辑与保存要配合权限

QGIS 可以像编辑本地图层一样编辑 PostGIS 表,但前提是数据库用户有对应权限。多人协作时,不建议所有人直接编辑生产表。更稳的方式是设置编辑表、审核流程或按角色限制权限。

性能优化建议

  • 为空间字段创建 GiST 索引。
  • 大表设置比例尺可见范围。
  • 复杂面可建立简化视图用于浏览。
  • 定期执行 ANALYZE 更新统计信息。
  • 避免打开项目时一次加载所有大图层。

项目避坑:不要所有人共用一个数据库账号

共用账号会让权限失控,也无法追踪谁修改了数据。至少应区分只读、编辑和管理员角色。

空间数据库的优势之一就是权限管理。把权限设计好,QGIS 才能成为可靠入口,而不是数据风险点。

FAQ

QGIS 连接不上 PostGIS 怎么排查?

先检查主机、端口、账号密码,再检查服务器防火墙、PostgreSQL 监听地址和 pg_hba.conf。

为什么图层能看但不能编辑?

可能没有主键,或当前数据库用户缺少 UPDATE、INSERT、DELETE 权限。

大表加载很慢怎么办?

建立空间索引,设置比例尺可见范围,必要时使用简化视图或按区域过滤。

总结

QGIS 连接 PostGIS 是桌面工作流和数据库管理的结合点。主键、SRID、索引、权限和加载策略处理好,空间数据就能在分析、制图和 Web 服务之间顺畅流动。