目录

上一个主题

4.2. 配置矢量数据源

下一个主题

4.4. 配置栅格数据源


4.3. PostGIS

这是所有具有空间功能的开源关系数据库中最流行、最有能力的数据库, 其功能也在不断增加。它利用了PostgreSQL, 这是一个众所周知的强大的RDBMS, 它挑战了像Oracle这样的顶级商业产品。 PostGIS的当前版本是2.5.0,PostgreSQL的当前版本是12.2。

两者在使用方面都享有同样的声誉。 虽然完全理解所有的可能性或处理微调可能很复杂, 但使用PostGIS作为数据存储库并不是一门难以控制的科学。 您想知道PostGIS在GeoServer安装中的位置吗? 它不在那里,但我们只是确保您在几个步骤中安装它并加载一些数据以使用GeoServer。

如果你渴望学习的不仅仅是我们将要执行的简单步骤, 那么这里有两个很好的参考。 PostgreSQL和PostGIS的项目站点包含从基本主题到复杂主题的许多页面:

4.3.1. 行动时间-Windows安装PostgreSQL和PostGIS

我们将把人口普查数据从shapefile转换成PostGIS表。 除非您已经安装了PostGIS,否则我们首先需要建立它。 您可以通过多种方式安装PostGIS, 而且有关自定义安装的官方和用户文档也很常见。 为了让您开始,我们将使用从EnterpriseDB免费分发的精美软件包™. 除了选择正确的二进制软件包外,在Linux或Windows上的安装也以同样的方式运行。

1.下载入口位于 http://enterprisedb.com/downloads/postgres-postgresql-downloads . PostgreSQL列包含指向Windows和Linux二进制软件包的链接;选择一个并下载它。

image97

图 4.10 image97

2.运行安装程序。

3.您可以使用默认的安装目录:

image98

图 4.11 image98

4.也使用默认的数据目录:

image99

图 4.12 image99

5.你可以把事情简单地放在你的开发框中;设置 postgres 作为你的 密码 :

image100

图 4.13 image100

6.除非知道默认侦听端口已绑定到其他服务,否则不要更改该端口:

image101

图 4.14 image101

7.将DB的区域设置保留为默认值:

image102

图 4.15 image102

8.最后,我们真正开始了安装过程。点击 Next 等到它完成。

9.我们现在已经完成了PostgreSQL的安装; 保留Stack Builder running选项并单击 完成 , 堆栈生成器是自定义PostgreSQL安装的一个很好的选项。 我们将使用它添加PostGIS:

image103

图 4.16 image103

10.选择PostgreSQL的本地实例并单击 Next

image104

图 4.17 image104

11.选择 PostGIS 2.0, 或更新的从目录树中的可用应用程序:

image105

图 4.18 image105

12.堆栈生成器现在将下载PostGIS安装程序并启动它。

13.接受许可协议后,系统将提示您选择要安装的组件。 最好让安装程序为您创建一个空间数据库:

image106

图 4.19 image106

14.PostGIS安装程序将找到您的PostgreSQL位置; 由于您只有一个位置,因此无需在此处进行任何更改。

15.插入的密码 postgres 以前选择的用户,并保留默认侦听端口:

image107

图 4.20 image107

16.保留空间数据库的默认名称并单击 安装

image108

图 4.21 image108

17.PostGIS现在已安装。当提示时 GDAL_DATA 你应该回答的设置 Yes . PostGIS需要包含在该文件夹中的数据来执行数据重新投影(即,将坐标从SRS转换到另一个SRS)。 如果您已经安装了GDAL,您可能想说 No 此处,稍后执行手动配置:

image109

图 4.22 image109

18.点击 关闭 要关闭PostGIS安装程序,然后单击 完成 。

4.3.2. 行动时间-在Ubuntu和Debian下安装PostgreSQL和PostGIS

直接用命令行安装即可:

1.使用命令更新。

sudo apt update

2.安装PostgreSQL

sudo apt install postgresql
install_psql

图 4.23 install_psql

3.安装PostGIS

sudo apt insall postgis
install_pgis

图 4.24 install_pgis

4.安装PostGIS后再我们的软件列表中就已经存在了,导入工具,如果没有,可以再软件中查找后直接下载。

shpsql_gui

图 4.25 shpsql_gui

4.3.3. 刚刚发生了什么?

我们安装了PostgreSQL和PostGIS。使用这些工具, 您可以为空间数据构建完整的存储库。我们将在下一节中为您的地理数据库铺设第一块砖。 让我们使用PostGIS!

4.3.4. 操作时间-在PostGIS中加载数据并在GeoServer中发布数据

1.现在您已经有了一个PostGIS的运行实例,是时候加载一些数据了。 我们将保留用于shapefile的相同人口普查数据, 并将其转换为PostGIS空间表。

启动PostGIS Shapefile导入/导出管理器, 与PostGIS一起安装的简便工具。以下的步骤在Windows和Linux中都是相同的。 点击 View Connection details 按钮 并插入连接到PostGIS所需的参数:

image110

图 4.26 image110

2.现在,点击 Add File 按钮并浏览到包含Tiger 2011人口普查数据的shapefile。 该工具无法识别 prj 文件中包含的SRS。将字段的值设置为 4269

image111

图 4.27 image111

3.点击 Import 按钮 并将编码设置为 LATIN1 作为 DBF 文件字符编码:

image0

4.等待加载程序转换数据并将其插入新的PostGIS表。 最后,您应该会在日志文本框中看到一条成功消息。 点击 cancel 要解除加载程序实用程序,请执行以下操作:

image113

图 4.28 image113

5.现在打开管理界面,转到 Data | Stores 部分, 选择 Add new store | PostGIS.

6.选择 tiger 作为 Workspace 。 将“数据源名称”和“描述”设置为 myPostGIS 。对于 Connection Parameters,您需要插入与加载程序相同的值。 对于您的简单数据库,您不需要使用其他设置。 使用默认值,然后单击“保存”:

image114

图 4.29 image114

7.GeoServer将连接到PostGIS并列出所有包含空间要素的表格。 点击tl_2001_us_county表右侧的 Publish 。您想知道是谁创建了两个名为 raster_columnsraster_overviews ? 它们是系统表,PostGIS用来存储数据库中加载的raster的元数据。 除了非常复杂的配置之外,您不会在GeoServer中发布它们。

image115

图 4.30 image115

8.您现在具有与shapefile相同的发布形式。请注意,这次,GeoServer可以识别数据的本地SRID。单击“边界框”部分中的“根据数据计算”和“根据本机边界计算”。

image116

图 4.31 image116

9.单击“保存”,数据将被发布。现在,您可以在“层预览”上看到预览。 使用 tiger:tl_2011_us_county_PG 旁边的 OpenLayers 打开,就能看到刚刚发布出去的图层。

4.3.5. 刚刚发生了什么?

我们安装了PostgreSQL/PostGIS,然后加载县数据集并将其发布到GeoServer中。 你注意到图层的发布运行几乎相同吗,不管数据的格式是什么? GeoServer体系结构使您不必再去关注不同数据源的细节; 只要您有一个特定RDBMS或二进制格式的驱动程序, 就可以在GeoServer中添加数据,而只需忽略实际的格式。

GUI加载程序是一个很好的工具,但是您可能需要在远程服务器上加载shapefile, 可能只有一个远程shell会话。别害怕! shp2pgsql 可以帮你。 它是一个命令行工具,可以在PostGIS的Windows和Linux版本上使用。 事实上,shapefile并不是真正由shp2pgsql加载的, 但它们的转换形式是 psql 可以为你保存和装载。 所以您只需将输出管道传输到psql:

$ shp2pgsql -s 4269 -g geom -I ~/data/tl_2011_us_ county.shp public.tl_2011_us_county | psql -h localhost -p 5432 -d postgisDB -U gisuser

所需的基本参数集是 -s 要设置空间参考系, -g 命名几何列(在附加数据时很有用), 以及 -I 创建空间索引。有很多其他的参数使它成为一个灵活的工具; 和往常一样, -? 是你的朋友,如果你需要执行一个不那么琐碎的数据加载。 除了创建一个新的表默认选项外,您还可以将数据追加到现有表中,删除它, 然后重新创建或只是创建一个空表,根据shapefile数据对其结构进行建模。

4.3.6. 试一试-过滤数据

PostGIS为您提供了更大的数据使用灵活性。可以处理和重用数据以生成新的数据集。 一个简单的处理是过滤数据以显示子集。假设你想出版一份新的县地图, 但仅限于加利福尼亚州。你可以在PostGIS中用一个视图来实现这一点。 正常打开 PgAdmin ,连接到PostGIS,创建视图并发布它。