Arch Linux 上安装与启用 PostGIS

1 . 安装软件包

sudo pacman -Syu                  # 更新系统
sudo pacman -S postgresql postgis 
# postgis-sfcgal
# 可选:postgis-old-upgrade(跨大版本升级时用) \
#       pgrouting (路网分析)   \
#       ogr_fdw (外部表访问各种 GIS 格式)
说明
postgresql核心 PostgreSQL 16(Arch 滚动发行始终跟上游最新)
postgisPostGIS 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

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在Linux分类目录。将固定链接加入收藏夹。