PostGIS

来自 ArchWiki

本条目或章节需要改进语言、wiki 语法或风格。 请参阅 Help:Style 以获取参考。

原因: 提示需要根据 Help:Style#Command line text 中关于以其他用户身份运行命令的更改进行更新。(在 Talk:PostGIS 中讨论)

PostGIS 为 PostgreSQL 数据库添加了地理对象支持。本文档描述了安装 PostGIS 和创建 PostGIS 模板数据库的过程。假设 PostgreSQL 已经安装。如果尚未安装,请参阅 PostgreSQL 页面。

安装 PostGIS

安装 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-upgradepg_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。