想学习postgis推荐看我翻译的官方教程文档:https://blog.csdn.net/qq_35732147/article/details/85256640
目录
一、安装PostGIS
1.下载安装程序
2.安装PostgreSQL
二、创建空间数据库
1.打开pgAdmin 4
2.登录到服务器
3.创建空间数据库
三、导入空间数据
1.获取数据
2.确定空间数据的投影系统
3.导入空间数据
4.查看导入的空间数据
在安装PostGIS前首先必须安装PostgreSQL,然后再安装好的Stack Builder中选择安装PostGIS组件。
PostgreSQL安装文件下载地址是https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
这里使用的PostgreSQL版本是9.6。
双击下载的文件,所有设置都使用默认设置即可,只是需要设置超级用户postgres的密码。
3.安装PostGIS
安装PostgreSQL安装完成后,提示运行Stack Builder。通过该工具安装PostGIS。
Stack Builder运行后,选择安装目标软件为PostgreSQL 9.6 on port 5432。然后在安装程序选择对话框中选择PostGIS 2.3。
然后Stack Builder会下载PostGIS 2.3的安装程序。下载后就会安装,在设置安装组件时,最好选择"Create spatial database",以便在创建数据库时可以以此作为模板。对于其他步骤的设置都选择默认值即可。
要创建与管理PostGIS空间数据库,可使用PostgreSQL提供的命令行或名为pgAdmin的图形化管理工具,此外像QGIS等GIS客户端软件也提供了管理插件。这里介绍如何使用pgAdmin 4来完成创建空间数据库以及在数据库中导入空间数据。
打开位于"开始>所有程序>PostgreSQL 9.6"之中的pgAdmin 4
打开pgAdmin 4之后,发现该程序已经将本地安装的PostgreSQL数据库服务器列在了服务器列表中,将其选中然后选择右键菜单的”连接“命令,以超级用户postgres及安装过程为该用户设置的密码连接数据库服务器。连接以后,将列出该服务器中包含的内容,如下图所示,包含数据库、表空间和组角色等。
选中数据库服务器内容中的数据库,然后选择其右键菜单中的”新建数据库“命令,打开”新建数据库“对话框。首先在”属性“面板中设置数据库名称,因为本书将使用加拿大温哥华市的数据,因此将数据库名称设置为"Vancouver";并将所有者设置为”postgres"。然后切换到“定义”面板中,将模板设置为"postgis_21_sample"。设置如下图所示:
经过前面的步骤,已经建好了功能完善的但还没有空间数据的空间数据库,接下来的工作是将空间数据导入到刚建立的数据库中。而最简单的方式是导入Shapefile格式的空间数据。PostGIS提供了"PostGIS Shape Import/Export Manager"图形化界面工具来帮助完成Shapefile空间数据的导入与导出。
数据地址:https://pan.baidu.com/s/1WX3uzeIoYY0i7lsE6F6FyA
本实践使用的数据位于下载文件的"Data\Vancouver"文件夹中,名为Vancouver.shp。
在使用PostGIS Shapefile Import/Export Manger工具导入空间数据时,需要明确设置空间数据的SRID,即空间引用标识符。
要确定空间数据的SRID,有好几种方式。一种是利用QGIS来确定,另一种是利用pgAdmin来确定。
在"Data\Vancouver"文件夹中有一个名为Vancouver.prj的文本文件。.prj文件指定了数据的投影。用文本文件工具打开该文件,可见如下一些文本:
PROJCS["NAD_1983_UTM_Zone_10N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-123],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]]
在pgAdmin 4中,打开查询工具,在SQL编辑器中输入如下SQL语句:
select srid, srtext, proj4text from spatial_ref_sys where srtext ILIKE '%NAD83 / UTM zone 10N%'
查询结果如下图所示,得知该空间数据的SRID为26910。
打开位于“开始>所有程序>PostGIS 2.3 bundle for PostgreSQL”之中的PostGIS Shapefile Import/Export Manager。
首先单击"View connection details"按钮,打开"PostGIS connection"对话框,输入用户名"postgres"及其对应的密码,设置连接的数据库为Vancouver,如下图所示:
连接数据库之后,单击"Add file"按钮,加入Vancouver.shp文件,并将其SRID设置为"26910",如下图所示。这一步绝对不能省略,否则不能正确导入数据。
最后单击"Import"按钮导入数据。
可以在pgAdmin 4中通过查看Vancouver数据库在"架构“的public数据表中是否增加了Vancouver来判断数据是否成功导入。
PostGIS并没有提供工具以地图的方式查看空间数据,不过我们可以使用QGIS等客户端GIS来查看。
打开QGIS,在窗口左边的”浏览器“中选择PostGIS,然后选择其右键菜单中的"新建连接”命令,打开“创建一个新的PostGIS连接”对话框,按下图设置参数,最后单击“确定”按钮连接数据库。
建立连接以后,便可以在“浏览器”中列出数据库服务器中所有的空间图层,如下图所示,选中某图层,将其拖入图层控制器中便可在地图中打开该空间数据。