部署数据库

我的数据库部署在绿联NAS上,直接拉取postgresql:latest镜像创建容器,镜像已经存储了需要挂载的路径,相应给个NAS上的文件夹给它就行,端口建议还是取默认的5432,如果不是5432貌似ArcGIS连接时会出问题。

环境变量需要自己新增一项,否则无法启动。其它可查阅文档(docker.com/blog/how-to-use-the-postgres-docker-official-image/#1-Environment-variables)按需设置

POSTGRES_PASSWORD

设为自己的超级管理员密码

容器创建成功后启动容器,稍等片刻即可在同一局域网中使用pgAdmin连接到此数据库服务器,Host name项直接填写ip地址,端口根据实际情况修改,其余选项根据需要设置。

创建数据库

刚部署完成时默认创建了一个名为postgres的数据库,此为系统级数据库,我们需要另外创建一个业务数据库,否则ArcGIS会报错:Connections to system databases are not allowed.

在pgadmin中右击Databases按照提示做好设置即可创建一个数据库,本文示例创建一个名为test的数据库

添加Postgis支持

右键单击业务数据库(test),点击psql tools,进入psql命令行界面,输入以下命令

CREATE EXTENSION postgis;

需要在数据库中创建一个与所登录用户名相同的scheme,例如:如果打算在arcgis中使用aaa登录,那么就需要创建一个名为aaa的schema供arcgis访问。

使用ArcGIS Pro连接

右键单击Databses,选择New Database Connection

在Instance中填入服务器IP,因为我使用的是默认端口用于测试,所以可以不加端口号,默认5432端口;User Name中填入数据库用户名,注意一定要有一个同名的schema,password中填入密码,可以根据需要选择勾上保存用户名和密码,Databse有时可以按下拉菜单选择,有时需要自行填入刚刚新建的业务数据库名称,这里为test。

点击OK,连接成功,随后可以在Catelog面板的Database折叠项里面看到新添加的数据库,可以从里面拖拽出要素或者选择要素导入到数据库中,但是貌似不能直接编辑数据库里面的要素。

Trouble Shooting

可以结合ArcGIS这边的报错和服务端的日志排查错误;

QGIS的机制有点不一样,QGIS可以直接连接和编辑Postgres数据库(系统级数据库)而不会报错