PostgreSQL下载哪个版本最适合GIS开发?Windows/Ubuntu安装配置避坑指南(附:Spatial Extension扩展包)
如果你正在纠结“PostgreSQL下载哪个版本最适合GIS开发?Windows/Ubuntu安装配置避坑指南(附:Spatial Extension扩展包)”,这篇文章直接给出面向 GIS 开发的选择建议:优先选择当前仍在官方维护周期内、并且能稳定安装 PostGIS 的 PostgreSQL 版本,不要只看“最新”,更不要随手安装系统仓库里过旧的版本。

引言:GIS开发不是随便下载一个PostgreSQL就能用
普通业务系统使用 PostgreSQL,重点通常是 SQL、索引、事务和备份;而 GIS 开发使用 PostgreSQL,核心还要看 PostGIS 是否能稳定安装、空间索引是否可用、坐标系表是否完整、客户端工具是否匹配。
很多 GIS 初学者的问题不是 PostgreSQL 安装失败,而是安装完成后才发现:
- 找不到 PostGIS 扩展;
- pgAdmin 能连接,但 QGIS 读不到空间表;
- Ubuntu 默认源里的 PostgreSQL 版本太旧;
- Windows 上 Stack Builder 下载扩展失败;
- 数据库创建成功,但执行
CREATE EXTENSION postgis;报错; - 开发环境和生产环境版本不一致,后期迁移困难。
所以,本文的目标不是泛泛介绍 PostgreSQL,而是回答一个具体问题:PostgreSQL下载哪个版本最适合GIS开发,以及 Windows 和 Ubuntu 上怎样安装配置才能少踩坑。
背景:PostgreSQL、PostGIS和Spatial Extension是什么关系
在 GIS 语境里,很多人说的 “Spatial Extension 扩展包”,通常指的就是 PostGIS。PostGIS 是 PostgreSQL 的空间扩展,它让 PostgreSQL 能够存储、查询和分析点、线、面、栅格、坐标系等空间数据。
简单理解:
- PostgreSQL:关系型数据库本体,负责存储和查询数据;
- PostGIS:空间扩展,提供 geometry、geography、空间函数和空间索引能力;
- pgAdmin:常用图形化管理工具,不是数据库本体;
- psql:PostgreSQL 命令行客户端,排错时非常重要;
- QGIS / ArcGIS Pro / GeoServer:常见 GIS 客户端或服务端,会连接 PostgreSQL/PostGIS 读取空间数据。
因此,GIS 开发选择 PostgreSQL 版本时,不能只看 PostgreSQL 自己,还要同时确认 PostGIS 是否支持该版本、操作系统是否容易安装对应扩展、团队环境是否一致。
原理:PostgreSQL下载哪个版本最适合GIS开发
对大多数 GIS 学生、初级 GIS 工程师、WebGIS 后端开发者来说,PostgreSQL 下载版本建议遵循下面的优先级。
1. 优先选择官方仍维护的稳定主版本
PostgreSQL 每个主版本都有自己的生命周期。GIS 开发环境建议选择官方仍在维护周期内的稳定版本,避免选择已经停止维护的旧版本。
原因很简单:
- 旧版本安全补丁和兼容性支持有限;
- 新版本 PostGIS、GDAL、GeoServer、QGIS 连接时可能遇到兼容性问题;
- 后期数据库迁移、备份恢复和团队协作成本更高。
如果你没有被项目强制限制,通常可以选择当前主流稳定版本或上一个主流稳定版本。不要为了尝鲜在生产 GIS 项目中立即使用刚发布不久的新主版本,除非你已经验证 PostGIS、驱动、备份恢复和业务 SQL 都没问题。
2. GIS开发重点看PostGIS支持情况
判断 PostgreSQL 下载哪个版本最适合 GIS 开发,最关键的一步是确认 PostGIS 能否正常安装。PostGIS 与 PostgreSQL 主版本之间存在支持范围,不是任意组合都能工作。
建议原则:
- 学习环境:选择安装包中能直接附带 PostGIS 的 PostgreSQL 版本;
- Windows 环境:优先使用 PostgreSQL 官方 Windows 安装包,并通过 Stack Builder 或独立 PostGIS 安装包安装扩展;
- Ubuntu 环境:优先使用 PostgreSQL 官方 APT 仓库,避免系统默认源版本过旧;
- 生产环境:固定 PostgreSQL 主版本和 PostGIS 版本,不要自动滚动升级。
3. 不建议GIS新手安装过旧版本
很多旧教程还在使用 PostgreSQL 9.x、10、11 等版本。除非你在维护历史项目,否则不建议新 GIS 项目继续安装这些旧版本。
常见问题包括:
- PostGIS 扩展包不好找;
- 新版本 QGIS、GeoServer 连接时资料少;
- 函数行为和性能优化与新版本存在差异;
- 团队成员本机环境难以统一。
4. Windows和Ubuntu版本选择建议
| 使用场景 | 推荐选择 | 原因 |
|---|---|---|
| GIS入门学习 | 选择当前主流稳定 PostgreSQL 版本,并安装对应 PostGIS | 资料多,工具兼容性好,适合 QGIS 和 GeoServer 练习 |
| Windows桌面开发 | 使用官方 Windows 安装包 | 安装流程直观,pgAdmin、psql、服务管理更容易上手 |
| Ubuntu服务器开发 | 使用 PostgreSQL 官方 APT 仓库 | 版本可控,适合部署 WebGIS 后端和空间服务 |
| 生产环境 | 选择稳定主版本,锁定小版本和扩展版本 | 减少升级风险,便于备份、恢复和故障排查 |
| 维护老项目 | 沿用项目原版本,先做迁移测试 | 避免 PostGIS 函数、索引和数据类型兼容问题 |
步骤:Windows安装PostgreSQL和PostGIS避坑流程
1. 下载PostgreSQL Windows安装包
Windows 用户建议从 PostgreSQL 官方下载入口获取安装包。安装时注意以下几项:
- 安装路径不要包含中文和特殊字符;
- 记住超级用户
postgres的密码; - 默认端口通常是
5432,如果本机已有 PostgreSQL,需要换端口; - 建议勾选安装
pgAdmin和命令行工具; - 确认安装完成后系统服务已启动。
对 GIS 开发来说,安装 PostgreSQL 本体只是第一步。真正能否做空间数据库,要看 PostGIS 扩展是否安装成功。
2. 通过Stack Builder安装PostGIS扩展
Windows 安装完成后,通常会提示是否启动 Stack Builder。你可以在里面选择与当前 PostgreSQL 主版本匹配的 PostGIS 扩展。
操作要点:
- 打开 Stack Builder;
- 选择已经安装的 PostgreSQL 实例;
- 在 Spatial Extensions 或类似分类中选择 PostGIS;
- 下载并安装对应版本;
- 安装完成后重启 PostgreSQL 服务;
- 在 pgAdmin 或 psql 中创建数据库并启用扩展。
如果 Stack Builder 下载失败,常见原因是网络连接、镜像访问或代理问题。可以改用可信来源提供的 PostGIS Windows 安装包,但必须确认它匹配你的 PostgreSQL 主版本。
3. 创建GIS数据库并启用PostGIS
安装扩展包后,还需要在具体数据库中启用 PostGIS。PostGIS 不是安装一次所有数据库自动都有,通常需要在目标数据库中执行扩展创建语句。
CREATE DATABASE gis_demo;
连接到 gis_demo 数据库后执行:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
一般 GIS 开发中,postgis 是最常用扩展;postgis_topology 只有在需要拓扑模型时才会用到。初学者可以先启用 postgis,不要一开始就把所有扩展都装上。
4. 验证PostGIS是否安装成功
不要只看 pgAdmin 里有没有数据库。建议执行下面的 SQL 验证空间扩展是否真正可用:
SELECT PostGIS_Full_Version();
再测试创建一张点图层表:
CREATE TABLE test_points (
id serial PRIMARY KEY,
name text,
geom geometry(Point, 4326)
);
INSERT INTO test_points (name, geom)
VALUES ('demo point', ST_SetSRID(ST_MakePoint(116.391, 39.907), 4326));
CREATE INDEX test_points_geom_idx
ON test_points
USING GIST (geom);
如果上面 SQL 能正常执行,并且 QGIS 能连接并加载 test_points,说明 PostgreSQL GIS 开发环境基本可用。
步骤:Ubuntu安装PostgreSQL和PostGIS避坑流程
1. 不要盲目使用系统默认源
Ubuntu 自带软件源中通常会提供 PostgreSQL,但版本不一定是你想要的。GIS 开发尤其要注意:如果数据库版本过旧,对应 PostGIS 包也可能偏旧。
建议先查看当前可安装版本:
apt-cache policy postgresql
apt-cache policy postgis
如果默认源版本不符合项目要求,可以使用 PostgreSQL 官方 APT 仓库。生产环境中添加仓库前,应先确认公司或项目的运维规范。
2. 安装PostgreSQL与PostGIS包
以 Ubuntu 环境为例,常见安装思路如下。具体版本号要根据你的目标 PostgreSQL 主版本调整。
sudo apt update
sudo apt install postgresql postgresql-contrib postgis
如果你使用的是指定主版本,通常需要安装对应版本的 PostGIS 包,例如类似下面的包名形式:
sudo apt install postgresql-XX postgresql-XX-postgis-3
这里的 XX 代表 PostgreSQL 主版本号。实际安装前请用下面命令确认包名:
apt-cache search postgis
apt-cache search postgresql | grep postgis
3. 配置postgres用户和数据库
Ubuntu 安装后,系统通常会创建 postgres Linux 用户和 PostgreSQL 超级用户。你可以切换到该用户执行管理命令:
sudo -i -u postgres
psql
创建 GIS 数据库和业务用户:
CREATE USER gis_user WITH PASSWORD '请替换为强密码';
CREATE DATABASE gis_demo OWNER gis_user;
连接到数据库并启用 PostGIS:
c gis_demo
CREATE EXTENSION postgis;
SELECT PostGIS_Full_Version();
4. 配置远程连接
如果 PostgreSQL 只在本机使用,默认配置通常够用。如果 QGIS、GeoServer 或 WebGIS 后端在另一台机器上,需要配置远程连接。
主要检查两个文件:
postgresql.conf:控制监听地址;pg_hba.conf:控制哪些客户端可以用什么认证方式连接。
常见配置思路如下:
listen_addresses = '*'
在 pg_hba.conf 中添加允许指定网段访问的规则:
host gis_demo gis_user 192.168.1.0/24 scram-sha-256
修改配置后重启服务:
sudo systemctl restart postgresql
注意,开放远程连接时不要直接允许所有公网 IP 访问数据库。GIS 数据库往往包含项目范围、地块、管线、影像索引等敏感空间数据,安全配置必须谨慎。
常见坑:PostgreSQL安装GIS环境最容易出错的地方
1. PostgreSQL装好了,但CREATE EXTENSION postgis报错
这通常说明 PostGIS 扩展包没有安装,或者安装的 PostGIS 与 PostgreSQL 主版本不匹配。
排查方法:
- 确认当前连接的是目标数据库,不是默认的
postgres数据库; - Windows 检查 Stack Builder 是否安装了对应版本 PostGIS;
- Ubuntu 检查是否安装了
postgresql-XX-postgis-3这类包; - 执行
SELECT version();查看 PostgreSQL 主版本; - 执行
SELECT * FROM pg_available_extensions WHERE name LIKE 'postgis%';查看可用扩展。
2. QGIS连接成功,但看不到空间表
QGIS 能连接 PostgreSQL,不代表空间图层一定可见。常见原因包括:
- 表里没有 geometry 或 geography 字段;
- geometry 字段没有正确 SRID;
- 表没有主键;
- 当前数据库用户没有表权限;
- 空间表在非 public schema 中,但 QGIS 没有展开对应 schema。
建议用下面 SQL 检查空间字段:
SELECT f_table_schema, f_table_name, f_geometry_column, srid, type
FROM geometry_columns;
3. 端口5432被占用
Windows 上经常因为之前安装过 PostgreSQL、Postgres.app、Docker 或其他软件导致 5432 端口被占用。安装时如果提示端口不可用,可以改为 5433,但要记住客户端连接也要同步修改端口。
在 Ubuntu 上可以检查监听端口:
sudo ss -lntp | grep 5432
4. 忘记postgres密码
Windows 安装时设置的 postgres 密码一定要保存。忘记后虽然可以通过修改认证方式重置,但对新手来说很容易把 pg_hba.conf 改乱。
建议做法:
- 安装时记录密码到安全的密码管理工具;
- 项目开发不要长期使用超级用户
postgres; - 为每个项目创建单独数据库和普通业务用户。
5. 生产环境随意升级PostgreSQL主版本
PostgreSQL 主版本升级不是普通软件更新。GIS 数据库通常包含空间索引、扩展、函数依赖、视图和服务端连接配置,升级前必须测试。
至少要检查:
- PostGIS 扩展是否支持目标版本;
- 备份恢复是否成功;
- 空间索引是否需要重建;
- GeoServer、QGIS、ArcGIS Pro、后端程序连接是否正常;
- 业务 SQL 中的空间函数结果是否一致。
方法比较:Windows安装、Ubuntu安装和Docker安装怎么选
| 方式 | 适合人群 | 优点 | 注意事项 |
|---|---|---|---|
| Windows安装包 | GIS初学者、桌面端QGIS用户 | 安装直观,pgAdmin友好,适合学习 | PostGIS扩展要匹配版本,注意端口和服务 |
| Ubuntu APT安装 | WebGIS开发、服务器部署 | 适合长期运行,服务管理清晰 | 注意源版本、远程连接和权限配置 |
| Docker安装 | 开发团队、测试环境、CI流程 | 环境可复现,便于快速启动和销毁 | 要处理数据卷、备份、网络和镜像版本固定 |
| 源码编译 | 高级用户、特殊环境 | 可定制能力强 | 维护成本高,不建议新手用于常规GIS开发 |
如果你只是学习 QGIS 连接空间数据库,Windows 安装包最省心。如果你要部署 GeoServer、矢量瓦片服务、空间分析 API,Ubuntu 更接近真实服务器环境。如果你在团队中开发 WebGIS 后端,Docker 可以帮助统一 PostgreSQL 和 PostGIS 版本。
检查清单:安装完成后必须验证这几项
PostgreSQL 下载和安装完成后,不要急着导入项目数据。建议按下面清单逐项检查。
- 确认 PostgreSQL 服务已启动;
- 确认能用
psql或 pgAdmin 连接数据库; - 确认当前数据库已执行
CREATE EXTENSION postgis;; - 执行
SELECT PostGIS_Full_Version();查看扩展版本; - 创建 geometry 字段并插入测试点;
- 为空间字段创建 GiST 索引;
- 用 QGIS 连接 PostgreSQL 并加载测试图层;
- 检查 SRID 是否正确,例如常见经纬度坐标使用 EPSG:4326;
- 检查业务用户权限,不要长期使用超级用户;
- 记录 PostgreSQL 主版本、PostGIS 版本、端口、安装路径和备份策略。
一个最小可用的 GIS 数据库验证 SQL 如下:
SELECT version();
SELECT PostGIS_Full_Version();
CREATE TABLE gis_check (
id serial PRIMARY KEY,
name text,
geom geometry(Point, 4326)
);
INSERT INTO gis_check (name, geom)
VALUES ('check point', ST_SetSRID(ST_Point(120.0, 30.0), 4326));
CREATE INDEX gis_check_geom_idx
ON gis_check
USING GIST (geom);
SELECT id, name, ST_AsText(geom), ST_SRID(geom)
FROM gis_check;
FAQ:PostgreSQL GIS开发版本选择常见问题
1. PostgreSQL下载哪个版本最适合GIS开发?
一般建议选择官方仍维护的主流稳定版本,并确认对应 PostGIS 能顺利安装。对新项目来说,不建议选择过旧版本;对生产项目来说,也不建议未测试就使用刚发布的新主版本。
2. PostGIS是不是PostgreSQL自带的?
不是。PostGIS 是 PostgreSQL 的空间扩展,需要额外安装扩展包,并在具体数据库中执行 CREATE EXTENSION postgis; 才能使用。
3. Windows安装PostgreSQL后为什么找不到PostGIS?
常见原因是只安装了 PostgreSQL 本体,没有通过 Stack Builder 或其他安装包安装 PostGIS。还要确认 PostGIS 版本与 PostgreSQL 主版本匹配。
4. Ubuntu默认源里的PostgreSQL能不能用于GIS开发?
可以,但要先确认版本是否符合项目要求,以及是否能安装对应 PostGIS 包。如果默认源版本过旧,建议使用 PostgreSQL 官方 APT 仓库或项目指定的软件源。
5. QGIS连接PostgreSQL需要安装PostGIS吗?
如果只是连接普通表,不一定需要 PostGIS。但如果要在 QGIS 中读取点、线、面空间图层,通常需要 PostgreSQL 数据库启用 PostGIS,并正确创建 geometry 或 geography 字段。
6. PostgreSQL和PostGIS升级时要注意什么?
升级前必须备份数据库,并在测试环境验证 PostGIS 扩展、空间索引、视图、函数、QGIS连接、GeoServer图层发布和后端程序查询。不要在生产 GIS 数据库上直接尝试主版本升级。
结论:GIS开发选PostgreSQL版本,看稳定性和PostGIS兼容性
回到最初的问题:PostgreSQL下载哪个版本最适合GIS开发?答案不是简单追最新,而是选择官方仍维护、生态稳定、PostGIS支持明确、团队容易统一的版本。
Windows 用户优先使用官方安装包加 PostGIS 扩展,适合学习和桌面 GIS 开发;Ubuntu 用户建议关注软件源版本和服务配置,适合 WebGIS 后端、GeoServer 和生产部署;团队项目则应固定 PostgreSQL 与 PostGIS 版本,避免开发、测试、生产环境不一致。
只要你完成了版本确认、PostGIS安装、扩展启用、空间表测试、QGIS连接验证这几步,PostgreSQL 就可以作为一个可靠的 GIS 空间数据库基础环境使用。