PostGIS
PostGIS 为 PostgreSQL 数据库添加了地理对象支持。本文档描述了安装 PostGIS 和创建 PostGIS 模板数据库的过程。假设 PostgreSQL 已经安装。如果尚未安装,请参阅 PostgreSQL 页面。
安装 PostGIS
安装 PostGIS 扩展
自 PostgreSQL 9.1 起,首选方法是安装 PostGIS 并为每个空间数据库启用 postgis 扩展。
$ psql
-- verify available extensions SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' ; -- install extension for spatial database mygisdb \c mygisdb CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder;
如果您使用 PostGIS 扩展,则无需执行下面的“创建 PostGIS 模板数据库”步骤。
- 升级 postgis 扩展
$ psql
ALTER EXTENSION postgis UPDATE TO "2.1.0";
- 迁移使用 postgis_template 创建的空间数据库
转储并删除空间数据库,使用扩展重新创建空间数据库,并恢复转储的数据库。有关具体命令,请参阅 https://www.postgis.net/docs/postgis_installation.html#hard_upgrade。
创建 PostGIS 模板数据库
- 成为 postgres 用户。
# su - postgres
- 如果您尚未创建用于访问 PostgreSQL 的超级用户,您可能需要立即创建。系统将提示您授予该用户权限。
$ createuser [username]
- 创建一个名为“template_postgis”的新数据库。
$ createdb -O [username] template_postgis -E UTF-8
- 为 PostgreSQL 加载 PostGIS 空间类型和空间参考系统。“postgis.sql”和“spatial_ref_sys.sql”是 PostGIS 安装的一部分,并且可能位于 “/usr/sharepostgresql/contrib/postgis-2.1/” 之外的其他位置,具体取决于安装位置。 (以下是默认 postgis 2.1 安装)
$ psql -d template_postgis -f /usr/share/postgresql/contrib/postgis-2.1/postgis.sql $ psql -d template_postgis -f /usr/share/postgresql/contrib/postgis-2.1/spatial_ref_sys.sql
- 将其设为真正的模板。
$ psql
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis';
从模板创建 PostGIS 数据库
通常的做法是保留一个裸模板来创建新的 PostGIS 数据库。作为 PostgreSQL 超级用户,以下命令将创建一个新数据库
$ createdb -T template_postgis [new_postgis_db]
使用 PostGIS 升级 PostgreSQL
如果您想使用 postgresql-old-upgrade 的 pg_upgrade
升级 PostgreSQL,您可以先安装 postgis-old-upgradeAUR,然后再 升级。
更多资源
有关 PostGIS 的其他资源,请查看 PostGIS 文档。
PostGIS 出现 json_tokener_error 错误
当添加 postgis 作为扩展时,会发生这种情况。 libjson-c 软件包已更改,PostGIS 尚未发布包含此修复的稳定版本。 不过,它已在 2.1.0rc1 中。 错误报告是 https://trac.osgeo.org/postgis/ticket/2213
解决方法是下载 postgis PKGBUILD,然后将版本更改为“2.1.0rc1”。 不要忘记更改 sha256sum。