1 . 安装软件包
sudo pacman -Syu # 更新系统
sudo pacman -S postgresql postgis
# postgis-sfcgal
# 可选:postgis-old-upgrade(跨大版本升级时用) \
# pgrouting (路网分析) \
# ogr_fdw (外部表访问各种 GIS 格式)
包 | 说明 |
---|---|
postgresql | 核心 PostgreSQL 16(Arch 滚动发行始终跟上游最新) |
postgis | PostGIS 3.4.x(含 raster、topology、tiger geocoder) |
postgis-sfcgal | 额外 3D/曲面运算 (安装后自动提供 postgis_sfcgal 扩展) |
2 . 初始化数据库集群
mkdir /srv/postgres
chown -R postgres:postgres /srv/postgres
sudo -iu postgres # 切到 postgres 系统用户
initdb -D /srv/postgres/data --encoding=UTF8 --locale=en_US.UTF-8
exit
存储路径 /var/lib/postgres/data
为默认;如想迁移到独立分区,改 -D /path/to/pgdata
并在 /etc/systemd/system/postgresql.service.d/override.conf
里指定 Environment=PGROOT=...
Archlinux:
/usr/lib/systemd/system/postgresql.service
直接增加
Environment=PGROOT=/srv/postgres
SyslogIdentifier=postgres
PIDFile=/srv/postgres/data/postmaster.pid
4 . 创建数据库并加载 PostGIS 扩展
# 创建一个角色(可跳过直接用 postgres)
sudo -iu postgres createuser --interactive # 选 “superuser” or 给予 CREATEDB
sudo -iu postgres createdb ovsea
# 进入数据库
psql -d ovsea -U <your_user>
在 psql
提示符下执行:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster; -- 若要 raster 支持
CREATE EXTENSION postgis_topology; -- 若要拓扑模型
-- 可选
CREATE EXTENSION postgis_sfcgal; -- 3D/曲面
验证:
SELECT postgis_full_version();
应显示类似:
POSTGIS="3.4.1 2025-02-14" [EXTENSION] PGSQL="160"
GEOS="3.13.0-CAPI-1.18.0" PROJ="9.4.0" GDAL="3.9.0" SFCGAL="1.5.0"
5 . (可选)创建 PostGIS 模板库
若你经常新建 GIS 数据库,可把扩展装进模板库:
sudo -iu postgres
createdb template_postgis
psql -d template_postgis -c "CREATE EXTENSION postgis;"
psql -d template_postgis -c "CREATE EXTENSION postgis_raster;"
psql -d template_postgis -c "VACUUM FREEZE;"
psql -d postgres -c "UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis';"
建库
createdb -T template_postgis newgis
6 . 防火墙与远程访问(若需要)
1.修改监听端口
nano -w /srv/postgres/data/postgresql.conf
listen_addresses = '*'
配置 pg_hba.conf
,允许远程主机:
nano -w /srv/postgres/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5