涉及到 PostgreSQL 10.0 数据库和 postgis 2.4 数据库扩展,基于 docker 安装,在此进行总结和记录~
docker run --name postgis -d -e POSTGRES_USER=postgres -e POSTGRES_PASS=postgres -e POSTGRES_DBNAME=gis -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /home/wy/postgre_data:/var/lib/postgresql -v /home/wy/server/cityscene/data:/data --restart=always kartoza/postgis:10.0-2.4
参数说明:
- --name postgis:告诉 docker 新建一个镜像,命名为 postgis
- -d:让容器后台运行
- -e:设置容器内环境变量。
POSTGRES_USER
设置超级用户;POSTGRES_PASS
设置用户密码;POSTGRES_DBNAME
设置初始化空间数据库的名字;ALLOW_IP_RANGE
允许任何客户端连接当前用户 - -p:设置端口。冒号左边是本机向外暴露的端口,冒号右边是容器内部数据库服务端口
- -v:创建数据卷,使数据持久化存储。冒号左边是本机路径,冒号右边是想要存储的容器内部数据
- --restart=always 创建一条自动启动的规则,告诉 Docker , 每次启动的时候 postgis 容器自动启动
Note:实际上,第二个 -v
不是必要的,我这里添加只是因为我开发的应用程序有这个需求
命令运行完后,用 docker ps
和 docker logs postgis
查看容器是否创建成功,以及创建过程中的日志
下载链接:pgAdmin
安装完成后打开,首先会让你设置一个 pgAdmin 的访问密码,可以设置为 postgres
好记
然后点击添加新服务,输入别名,在 Connection 中输入 ip 地址和其他信息,点击保存,不报错表示连接成功
这个工具是矢量 Shapefile 文件的导入工具。下载链接:PostGIS,可以下载最新版本的 3.1.4
安装 PostGIS Shapefile Import/Export Manager 这个工具之前需要在本地安装 PostgreSQL 10,安装过程参考:PostgreSQL 10 安装详细步骤
因为我们并不需要本地的数据库,所以安装时可以只勾选 server 和 command line 这两项即可。
安装完成后,就可以安装刚刚下载的 Shapefile 文件导入工具了,安装过程可以参考 PostGIS 2.5.0 安装详细步骤
同理,因为我们不使用本地的 PostgreSQL 数据库,所以安装过程中可以选择不安装 spatial database 空间数据库。最后安装完成
打开 PostGIS Shapefile Import/Export Manager,点击 view connection detail
,输入连接信息,如下图
点击 OK 后,下面输出 success,表示连接成功
接下来就是导入矢量数据了,我们从网上下载一份全国 62 个城市建筑物的矢量数据,下载链接:全国62个城市建筑物轮廓矢量数据,我们解压个武汉的建筑物数据,然后把解压出来的数据放到一个没有中文字符的路径下,路径也不要过长,同时全部选中,按 F2 将中文名称改成英文的,如下图
然后在导入工具中点击 Add File,选择刚刚解压出来的 wuhan.shp
,就可以看到在 Import List 里出现了我们选择的文件,可以在这里更改表名等信息,确定无误后点击下方的 Import 按钮,如下图
可以看到下方的输出框中出现 import completed,表示导入成功。
我们还可以在 pgAdmin 中查看到刚刚导入的数据,如下图
上面那个方法必须要在本机上安装 PostgreSQL 数据库,才能安装 PostGIS 导入工具,即使我们用不到本机的数据库,所以第二种导入方式就是通过 QGIS 连接 Docker 容器内的 PostgreSQL 数据库并导入数据,这样就不需要在本机上安装 PostgreSQL 和 PostGIS 了。
后续待更~