个性化地图渲染切片实战(4):导入基础级别地图数据

在《个性化地图渲染切片实战(3):加载基础级别地图》一文中,为你分享了如何查看 Docker 数据库中已经自带的基础级别地图数据。

如果还有需要补充的基础级别数据,可以把结构完整的 SHP 文件导入同一个 PostGIS 数据库,本文以水系线数据为例演示整个流程。

操作在 Windows 端的 shp2pgsql 图形工具与 Docker 数据库之间完成,导入目标为 osm_db,正式执行前应确认新表不会覆盖镜像已有数据。

导入数据

(1)明确本次导入的起始状态

mapc 容器中的 osm_db 已经带有基础级别空间表,本次导入只补充一份自备水系数据,不新建练习数据库,也不重新处理现有表。

为了避免名称冲突,示例把新增表命名为 public.water_lines_extra,执行以前应在数据库中确认没有同名业务表。

Windows 计算机需要能够访问 Ubuntu 宿主机的 5433 端口,并已经安装可以启动 shp2pgsql-gui.exe 的 PostGIS 客户端工具。

(2)准备完整的水系 SHP 文件

把 water_lines.shp、water_lines.shx、water_lines.dbf 和 water_lines.prj 等放在下面的英文目录下,缺少其中任何一个关键文件都可能导致读取失败。

D:\osm_data\water\water_lines.shp

本文示例水系数据已经确认采用 WGS 1984 坐标系,因此后续填写 EPSG 4326,使用其他数据时必须改为源文件的真实 EPSG 代码。

还要提前确认 DBF 属性编码,UTF-8 数据选择 UTF-8,较早的中文数据如果采用 GBK,则应选择对应编码以避免字段值乱码。

图片

水系 SHP 文件组成

(3)检查 Docker 数据库连接

在 Windows PowerShell 中测试 Ubuntu 宿主机端口,把尖括号中的地址替换为实际服务器 IP。

Test-NetConnection<Ubuntu服务器IP>-Port 5433

只有 TcpTestSucceeded 返回 True 才继续导入,否则应先检查 mapc 是否运行、5433:5432 映射和 Ubuntu 防火墙。

图片

数据库端口连通结果

(4)启动 shp2pgsql 图形工具

打开 PostgreSQL 或 PostGIS 客户端工具的安装目录,找到 shp2pgsql-gui.exe 并双击启动,这个界面适合单次导入和初学者操作。

图片

shp2pgsql-gui 位置

shp2pgsql 会把 SHP 的几何与属性转换为可写入 PostGIS 的 SQL,图形界面只是把连接、文件和导入选项集中显示出来。

图片

shp2pgsql 图形工具

(5)填写 Docker 数据库参数

单击 View connection details 打开连接窗口,服务器填写 Ubuntu 宿主机 IP,端口使用对外映射的 5433,而不是容器内部的 5432。

密码填写 root 数据库角色的实际密码,连接测试成功后再保存参数。

图片

连接 Docker 数据库

(6)添加水系文件并设置参数

回到导入窗口单击 Add File,选择 water_lines.shp,然后把目标模式设置为 public,把目标表名设置为 water_lines_extra。

SRID 填写 4326 的前提是示例水系数据确实采用 WGS 1984,不能因为经纬度数值看起来正常就跳过坐标系核对。

新表首次导入使用 Create 模式,并启用空间索引选项,让工具在几何字段上创建 GiST 索引,后续地图范围查询会更稳定。

字符编码按照 DBF 的真实编码选择,表名保持小写英文和下划线,可以减少 PostgreSQL 标识符大小写与引号带来的麻烦。

图片

水系 SHP 导入参数

(7)执行 Import

确认文件路径、目标数据库、模式、表名、SRID 和编码以后单击 Import,工具会依次创建表结构并写入水系要素。

日志区域出现完成提示且没有 ERROR 才表示导入过程结束,若中途失败,不要连续点击 Import 造成同名表状态更加复杂。

图片

水系数据导入完成

一次可靠导入必须同时满足数据库可连接、SHP 组成完整、SRID 与编码正确、目标表名不冲突四个基本条件。

常见错误

(1)无法连接数据库

优先检查 Ubuntu 服务器 IP、宿主机 5433 端口、root 角色密码和 mapc 端口映射,不要把容器内部的 5432 直接填到 Windows 连接窗口。

(2)Add File 后不能正常读取

检查 SHP、SHX、DBF 和 PRJ 是否同名并位于同一目录,同时把数据移到较短的英文路径,避免特殊字符影响旧版本工具。

(3)中文属性出现乱码

重新确认 DBF 的源编码,并在 shp2pgsql 中选择对应字符集,不能通过事后修改字段内容掩盖整表编码设置错误。

(4)提示同名表已经存在

先在 osm_db 中确认现有表是否需要保留,普通补充数据应更换新表名,只有明确备份以后才考虑删除或覆盖测试表。

(5)图层位置明显偏移

检查源 SHP 的真实坐标系和导入时填写的 SRID,错误 SRID 只是贴错空间参考标签,不会自动把坐标转换到正确位置。

连接、文件组成、字符编码、表名冲突和空间参考,是使用 shp2pgsql 导入基础级别数据时最先检查的五个位置。

数据查看

(1)打开新建数据库连接窗口

启动 ArcGIS Pro 并新建一个地图,在“插入”菜单中选择“连接\数据库\新建数据库连接”,如下图所示。

图片

新建数据库连接

(2)填写 PostgreSQL 连接参数

在“数据库连接”对话框中按照下面的项目值填写,实例采用服务器 IP 与宿主机端口用英文逗号连接的形式。

数据库平台:PostgreSQL

实例:服务器 IP,5433

身份验证类型:数据库身份验证

用户名:root

密码:root 数据库角色已配置的密码

数据库:osm_db

图片

数据库连接参数

(3)验证并保存连接

在 ArcGIS Pro工程的“数据库”节点可以看到导入的表,如下图所示。

图片

导入的表

可以将表添加到地图中,预览数据情况,如下图所示。

图片

预览效果

连接文件出现以后先展开它检查内容,不要在尚未确认表清单时执行复制、删除或注册为地理数据库等操作。

个性化地图渲染切片实战系列教程

学习一款软件或者技术,最好能够成体系,从基础操作到实战应用,逐步构建完整知识框架,避免碎片化学习导致效率低下。

为了方便你了解个性化地图渲染切片实战往期内容,这里列出相关文档。

个性化地图渲染切片实战:课程简介

个性化地图渲染切片实战(1):环境安装与镜像恢复

个性化地图渲染切片实战(2):初始化渲染环境

个性化地图渲染切片实战(3):加载基础级别地图

为了便于学习和测试,我们已经准备了与本系列教程配套的 Docker 镜像,导入并创建容器后,即可继续进行后续的地图数据处理与渲染操作。

相关资源已经上传至网盘,下载地址放在“水经注GIS圈”知识星球中。

扫描下方二维码加入“水经注GIS圈”,即可获取本系列教程配套资源及更多优质 GIS 数据。

图片

写在最后

本章以水系 SHP 为例完成数据库连接、参数设置、数据导入和地图验证,形成了补充基础级别空间数据的完整操作闭环。

如果你也对个性化地图渲染感兴趣,请关注“水经注GIS”公众号,并在后台回复“人工客服”进群交流。

你还可以立即点击“分享”按钮,将本文分享给你希望渲染个性化地图的朋友!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值