Chapter 2. PostGIS 安装

Chapter 2. PostGIS 安装

2.2.5. 构建和部署PostGIS扩展

如果您使用的是 PostgreSQL 9.1 或更高版本,则会自动构建并安装PostGIS 扩展。

如果要从源存储库构建,则必须先构建函数描述。这些是在安装文档手册时构建的。 您也可以手动安装:

make comments

如果从存档文件构建,则其中一些注释文件已经构建,因此无需构建注释。

如果您针对 PostgreSQL 9.1 进行构建,则应在 make 安装过程中自动构建扩展。如果需要,可以从扩展文件夹生成,或者根据需要在另一台服务器上复制该文件。

cd extensions

cd postgis

make clean

make

export PGUSER=postgres #overwrite psql variables

make check #to test before install

make install

# to test extensions

make check RUNTESTFLAGS=--extension

make check 使用 psql 来运行测试,并使用 psql 环境变量。常用的可用于覆盖的有 PGUSER 、PGPORT 和 PGHOST。参考psql环境变量

扩展文件在同一版本的PostGIS中始终是相同的,无论操作系统如何。只要已经安装了PostGIS二进制文件,就可以将扩展文件从一个操作系统复制到另一个操作系统。

如果您想在与开发环境不同的另一台服务器上手动安装扩展,除了通常需要的PostGIS二进制文件之外,还需要将以下文件从 extensions 文件夹复制到 PostgreSQL 安装目录下的 PostgreSQL/share/extension 文件夹中。

指定未提供时,控制文件postgis.control, postgis_topology.control 显示要安装的扩展版本等信息。

请注意,针对每个扩展的 /sql 文件夹中的所有文件(例如,extensions/postgis/sql/*.sql 和 extensions/postgis_topology/sql/*.sql)需要复制到 PostgreSQL 的 share/extension 文件夹的最上层

完成这一步后,你应该在 PgAdmin> 中看到 postgis、postgis_topology 作为可用的扩展。

如果使用 psql,则可以运行以下查询来验证是否已安装扩展:

SELECT name, default_version,installed_version

FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';

name | default_version | installed_version

------------------------------+-----------------+-------------------

address_standardizer | 3.7.0dev | 3.7.0dev

address_standardizer_data_us | 3.7.0dev | 3.7.0dev

postgis | 3.7.0dev | 3.7.0dev

postgis_raster | 3.7.0dev | 3.7.0dev

postgis_sfcgal | 3.7.0dev |

postgis_tiger_geocoder | 3.7.0dev | 3.7.0dev

postgis_topology | 3.7.0dev |

(6 rows)

如果您正在查询的数据库中安装了扩展程序,您将在 installed_version 列中看到提及。 如果您没有收到任何记录,则意味着您的服务器上根本没有安装 postgis 扩展。 PgAdmin III 1.14+ 还将在数据库浏览器树的扩展 部分中提供此信息,甚至允许通过右键单击进行升级或卸载。

如果您有有效的扩展,则可以使用 pgAdmin 扩展接口或通过运行以下 SQL 将 PostGIS 扩展安装到所选数据库:

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_raster;

CREATE EXTENSION postgis_sfcgal;

CREATE EXTENSION fuzzystrmatch; --needed for postgis_tiger_geocoder

--optional used by postgis_tiger_geocoder, or can be used standalone

CREATE EXTENSION address_standardizer;

CREATE EXTENSION address_standardizer_data_us;

CREATE EXTENSION postgis_tiger_geocoder;

CREATE EXTENSION postgis_topology;

在 psql 中,你可以使用以下命令来查看你已安装的版本以及它们所在的模式。

\connect mygisdb

\x

\dx postgis*

List of installed extensions

-[ RECORD 1 ]-------------------------------------------------

Name | postgis

Version | 3.7.0dev

Schema | public

Description | PostGIS geometry, geography, and raster spat..

-[ RECORD 2 ]-------------------------------------------------

Name | postgis_raster

Version | 3.0.0dev

Schema | public

Description | PostGIS raster types and functions

-[ RECORD 3 ]-------------------------------------------------

Name | postgis_tiger_geocoder

Version | 3.7.0dev

Schema | tiger

Description | PostGIS tiger geocoder and reverse geocoder

-[ RECORD 4 ]-------------------------------------------------

Name | postgis_topology

Version | 3.7.0dev

Schema | topology

Description | PostGIS topology spatial types and functions

无法直接备份扩展表 spatial_ref_sys、layer、topology。只有在备份相应的 postgis 或 postgis_topology 扩展时,它们才会被备份,而这似乎只会在备份整个数据库时发生。从 PostGIS 2.0.1 开始,仅在备份数据库时会备份未与 PostGIS 打包的 srid 记录,因此请不要随意更改我们打包的 srid,并期望您的更改会存在。如果您发现问题,请提交工单。由于扩展表的结构是使用 CREATE EXTENSION 创建的,并且假定在给定版本的扩展中是相同的,因此它们永远不会被备份。这些行为内置在当前的 PostgreSQL 扩展模型中,所以我们无法改变这一点。

如果你在没有使用扩展系统的情况下安装了3.7.0dev版本,你可以通过运行以下命令将其转换为基于扩展的安装方式,以将函数打包到各自的扩展中。在PostgreSQL 13中已移除了使用`unpackaged`安装方式,因此建议在升级到PostgreSQL 13之前切换到扩展构建方式。

CREATE EXTENSION postgis FROM unpackaged;

CREATE EXTENSION postgis_raster FROM unpackaged;

CREATE EXTENSION postgis_topology FROM unpackaged;

CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;

相关推荐

深圳十大明星榜中榜
365365094

深圳十大明星榜中榜

📅 07-16 👁️ 4836
仓鼠可以吃些什么?了解仓鼠饮食的多样选择与禁忌
骨扫描多少钱
365BET-官网

骨扫描多少钱

📅 07-31 👁️ 6119
从报错到解决:程序员的提问流程
365bet体育在线娱乐场

从报错到解决:程序员的提问流程

📅 07-16 👁️ 7801
枸杞什么牌子好?10大枸杞品牌排行榜
365bet体育在线娱乐场

枸杞什么牌子好?10大枸杞品牌排行榜

📅 08-05 👁️ 6062
微博怎么更新不了?全面解析解决方法,让你轻松畅享社交体验
火车连续发出两声长鸣
365bet体育在线娱乐场

火车连续发出两声长鸣

📅 07-22 👁️ 7785
腾讯控股(00700)什么时候上市的?在哪上市的?
#微博无法安装#
365bet体育在线娱乐场

#微博无法安装#

📅 07-13 👁️ 9150