2022-03-16 07:53阅读: 1645评论: 0推荐: 0

10. 基于Mapbox 的矢量瓦片Web制图系统研发与实现

摘要

随 着 信 息 化产 业 的 不 断发展 , G I S 的 应用 越 来越广 泛 , 电 子地 图 作 为 G I S 的 基础 也 不 断 被 提 出 新 的 要 求 , 人 们 不 再满 足 于 地 图 的 简 单 导 航 , 对于 地 图 的 时 效 性和 用 户 体验提 出 了 更 高 的 要求 。 所 以 , 一 项 重要 内 容 是 : 寻 求新 的 方法 提 高地 图 数据传输效率 、 改 善 地 图 渲 染 效果 、 简 化制 图 的 复 杂 性 , 以 改变 加 载 数据 格 式和 制 图 渲 染 方 式 , 解 决在 数据 生 产 和 地 图 制 图 过程 中 产 生 的 相 关 问 题 。

论 文 总 结 了 基 于 Mapb o x 的 矢 量地 图 We b 制 图 系 统 的 开 发 背 景和 意 义 , 探 讨 了 地 图 数据 加 载缓慢 、 地 图 数据 时 效性 、 地 图 渲 染 和 地 图 We b 制 图 中 存在 的 问 题 , 分 析 了 We bG I S 、 矢 量 瓦 片 、 地 图 渲 染技 术 、 We b 制 图 技 术研 宂 等 相 关 知 识 和 技 术 , 在 此 基 础 上进行 了 s hape fi l e 向 MVT 数据转换方法 、 矢 量 瓦 片 边 界融合 处理 、 复 杂 多 边 形 的 处理 、 Web 制 图 、 创 建 字 体 和 创 建 图 标等 工 作 , 设 计 了 一 整 套 从数据 到 地 图 的 制 图 系 统 。 最 终 基 于 Map bo x 平 台 , 使 用 J ava 语 言 和 I nt e l l U I D EA 集 成开 发 环 境 , 开 发 了 We b 在 线 制 图 系 统 , 主 要 实 现 了 数据 格 式转 换 、 地 图 渲 染 、 样 式文件 生成 、 字 体 文 件 生 成 、 图 标 文 件 生成 、 We b 端 制 图 等 功 能 。

论 文 所 实 现 的 基 于 Mapbo x 的 矢 量 地 图 We b 制 图 系 统 是 针 对 目 前 天 地 图 ? 浙江数据更 新 缓慢 和 制 图 复 杂 等 问 题 设 计 的 。 系 统 实 时 切 片 生成矢 量 瓦 片 , 通 过 G o o g l e 编 码 数据 量小 , 在 数据 加 载 时 占 用 带 宽 小 , 避 免 数据加 载 不 流 畅 而 影 响 用 户 体验 ; 系 统 在 客 户 端 对 数据 进 行 渲 染 , 通 过样 式 文 件 修 改 制 图 风格 , 提 高 了 制 图 效 率 。 系 统 原 来 按 数 据 库 修 改 、 制 图 、 切 片 、 生 成位 图 到 发 布 服 务 应用 , 其 过 程 繁 琐 、 更 新 周 期 长 等 缺 陷 , 实 现 了 根 据 基 础 数据 的 改 变 , 修 改 数 据 库 的 基础 数 据 , 实 时 切 片 并 根据 用 户 需 求 快速 调 整 地 图 风格 的 功 能 。 该 系 统 解 决 了 基础 地理数据 改变 到 地 图 服 务 所 用 时 间 长 、 数据 更 新滞 后 等 问 题 , 使 数 据 快速得 到 应用 , 服务人们 的 生产 生 活 。

关键词

Mapbox , 矢 量 瓦 片 , 格式转 换 , Web制 图 , 天地 图 ? 浙江

1. 绪 论

1.1 研究背景及意义

1.1.1 研究背景

据 统 计 , 人 类 的 7 5 %- 8 0 % 日 常 生 活 的 信 息 与 地 理 信 息 相 关 [ 1 】 。 且 随 着 I nte me t / I ntr ane t 技 术 的 不 断 发 展 和 人 们 对 地 理 信 息 系 统 ( Ge o gr aphi c al I nformat i o n S ys t e m , GI S ) 需 求 的 不 断 增 加 [ 2 ] , 基 于 成 熟 的 计 算 机 技 术 、 We b 技 术 和 G I S 技 术 相 结 合 的 互 联 网 地 理 信 息 系 统 一一 We b GI S 应 运 而 生 ⑶ 。 We b G I S 可 以 应用 于 交 通 导 航 、 医 疗消 防 、 环 境监控等 多 个领域[ 4 ' 5 ] 。 地 图 作 为 We b GI S 应用 领域 的 基 础 , 地 图 数据 更新 时 效和 快 速制 作 专 题 图 的 方法应 该 得 到 广 泛重视 。 We b G I S 中 的 应 用 地 图 包括 矢 量地 图 、 栅 格地 图 、 遥感 影像地 图 等 。

栅格 数据 具 有 数据 结 构 简 单 、 输 出 方法快速 简 便 、 成 本 低廉等 优 点 。 在 2 0 0 5 年 , 以 Go o g l e Ma p s 为代表地 图 服 务 推 出 We b GI S , 栅格 瓦 片 技 术 迅 速得 到 完 善 并 应用 于 地 图 , 此技术 使 客户 端 不 用 加 载 整 个 地 图 数据 , 便 可 以 得 到 特 定 范 围 内 的 数据 。 但 同 时 , 存 在 着 栅 格 图 形 数 据 量 大 、 使 用 大 像 元 减 小 数据 量 时 精 度 和 信 息 量 受 损 失 、 在 地 图 放 大 时 图 像 容 易 出 现 锯 齿 形 、 输 出 不 精 美 等 缺 点 。

矢量 数据 具 有 数据 结 构 严 密 、 冗 余度 小 、 数 据 量 小 、 图 形 显 示质 量好 、 精 度 高 的 优 点 , 可 灵 活 改 变地 图 样式 , 制 作 专 题 图 。 但 同 时 存在 显 示 与 绘 图 成 本 比 较 高 的 问 题 。

遥感 影 像 也 可 作 为地 图 应用 , 但 遥 感 影 像 精 度 不够 , 风 格 单 一 , 不 能 建 立 专 题 图 满 足 用 户 多 用 途 的 需 求 , 因 此 , 基础 地 图 应 用 一 般 不 采 用 遥 感影 像 。

栅格 瓦 片 的 研 宄 和 应 用 都 已 经 很 成 熟 , 将 栅 格 的 瓦 片 技 术应 用 于 矢量地 图 生成矢量 瓦 片 , 使地 图 具 有 瓦 片 高 效加 载速度 的 优 势 和 矢 量数据 的 数量 小 、 制 图 灵 活 的 优 势 。 天地 图 ? 浙江在 地 图 制 作 方 面采 用 矢 量 瓦片 技 术 , 但 天地 图 ? 浙 江地 图 先 是对数据 进行制 图 , 然后 对 地 图 进行 切 片 应用 , 客户 端得 到 的 是 一 张 图 片 , 在 数据 变 化 需 要 更 新 地 图 和 风格 需 要 变动 时 不 能快速 的 完 成要 求 。 工 作 人 员 需 要 经 过数据 库 变 更 、 地 图 制 图 、 地 图 切 片 , 工 序 复 杂 修 改 时 间 长 , 使 得信 息 应 用 产 生滞后 性 , 对 于 生 产 应用 产 生 许 多 不 便 。 因 此 , 构 建 一 套 能 够 快速 适应 数 据 变 化和 更 改地 图 风格 的 系 统 非 常 必 要 , 在 一 定 程度 上 可 以 加 快 信 息 的 更新 , 有 效地指 导 生 活 生 产 。

本 文 主 要 针对 天地 图 ? 浙江 矢 量 瓦 片 在 制 图 和 数据 变动 时 , 地 图 制 作 复 杂 、 应 用 滞 后 的 问 题 , 研 宄 开 发专 门 用 于 数据 变 动 后 快速切 片 、 快速制 图 的 系 统 。

1.1.2 研究意义

对 于 网 络地 图 , 在 宽 带 有 限 的 情况 下 , 数据 量越 小 加 载速度越快 , 本 系 统 采用 矢 量 瓦 片 , 在 数据 传 输 问 题上 得 到 了 极 大地提 高 ; 采用 开源 的 工 具进行开 发 , 降低 了 We b 制 图 的 成 本 ; 充 分利 用 矢 量地 图 的 数据 格 式 图 形 质 量高 和 精 度 准 确 的 优 势 , 基 于 栅 格 瓦 片 的 技 术标 准对 矢 量地 图 进行 地 图 切 片 ; 利 用 We b GI S 相 关 技 术 建 立数 据 格式 实 时 转 换 及 We b 制 图 系 统 , 形 成 一 个全 面 、 高 效 的 集 s hap e fi l e 数据格 式根据 请 求 实 时 转换 为 MV T 、 地 理数据 We b 渲 染 、 We b 制 图 、 制 图 样 式 文件 导 入 导 出 、 样 式转 换 、 地 图 渲 染对 比 等 功 能 于 一 体 的 系 统 应 用 平 台 。 该 系 统解 决 了 地 图 瓦 片 生 成 耗 时 长 、 更新缓慢 、 地 图 数据 量 大 、 We b 制 图 困 难 、 制 图 流程 复 杂 等 问 题 , 能 够 直观表达地 图 渲 染 效 果 , 实 现 多 项 不 同 风格 的 地 图 渲染 的 可 视化 , 可 以 满 足 不 同 行业对 电 子 地 图 可 视 化 的 个 性化 需 求 , 具 有 极 大 地应 用 价值 。 下 面通过 四 个 方面来 说 明 该 研 宄 的 具 体 意 义 。

( 1 ) 地 图 瓦 片 切 片 问 题 。 本 系 统 为 了 解 决 浙江 省 全 省 2 0 级 的 地 图 瓦 片 生 产 耗 时 、 更新缓慢 等 问 题 , 改进 了 地 图 发 布工 艺流程 , 不 再 需要 服务端 预 先 切 片 , 提 高 了 数据 的 更 新 效 率 。

( 2 ) 地 图 数据传输量 问 题 。 本 系 统 为解 决传 统栅 格 瓦 片 的 数据 量 大 的 问 题 , 研 究 了 采用 矢 量 瓦 片 数据 格 式 , 进 而 实现数据 矢量 数据 进 行 切 片 的 功 能 , 在 前 端进行地 图 渲 染 , 矢 量 瓦 片 较 小 的 数据 量减 小 了 I/ O 的 负 担 。

( 3 ) 制 图 工 序 复 杂 问 题 。 本 系 统采用 分 布 式制 图 , 字 体 、 图 标及样 式文 件 的 配 置可 多 个 人 分布 协 作 , 甚至 地 图 样 式 可 分 不 同 的 人 同 时进 行 配置 , 例 如 道路 、 水 系 、 居 民 地分三个人进行 配置 , 最 后 合 成 , 减少 了 个人 工作 量 , 提 高 了 工 作 效 率 , 且成 图 方便 。

( 4 ) 在 线 制 图 问 题 。 本 系 统 摒 弃 了 繁重 的 桌面客户 端 , 系 统基于 开源 的 Mapbo x GL 实 现 了 We b 客 户 端 制 图 , 发挥 了 开源平 台 软 件 免 费 、 功 能 强 大 的 优势 , 既 能够 保证 系 统 强 大 的 功 能 , 也 兼 备 系 统稳 定 性 和 简 单 易 用 的 特 点 [ 7 ] , 支 持渲 染样 式 文 件 的 加 载及 导 出 , 实 现 了 制 图 文 件 的 保存及 应用 及地 图 的 制 图 轻 量级 、 无费 用 等特 点 。

1.2 国 内外研究现状

1.2.1 国外现状

目 前 , 基于 矢量 瓦 片 地 图 的 研 宄 在 国 外 蓬 勃 发 展 , 像 E S RI 公 司 的 Arc GI S 这 样 的 矢量地 图 切 片 工 具 涉及 面广 泛 。 Arc GI S 产 品 线 为 用 户 提供 一 个 可伸 缩 的 根据 需 要 增 加 或者 减少 的 、 完 善 的 GI S 平 台 W 。 Ar c G I S 是 由 美 国 环 境 系 统 研 宂 推 出 的 可进 行 二 次 开 发 的 软 件 , 支 持 . N E T 、 C O M 和 C ++ 的 AP I 。 Ar c GI S 可 以 对矢 量 数据 进 行 裁剪和 切 割 , 并 提 供 了 相 应 的 接 口 , 但 不 支 持 分布 式地 图 切 片 。

微 软 的 Map Crun c h e r 提供 了 专 门 用 于 地 图 瓦 片 的 数据 生 成 工 具 , 成 熟 技 术 支 持 多 种 数据 格 式 矢 量地 图 进 行切 片 。 Map C runc h e r 不 支 持 二 次 开 发 , 且 专 门 针对 B i n g Map s 进行 开 发 的 , 因 此 使 用 者 少 州 。 而 且它 切 片 速度慢 , 不 支 持 分 布 式地 图 切 片 @] 。

O p e n S t r e e t Map 是 由 科 斯特创 建 的 一 款 由 网 络 大 众共 同 打 造 的 免 费 开源 、 可 编 辑 的 地 图 服 务[ 1 1 ] 。

P o l ym ap s — 款开源 的 地 图 快速 数据 显 示 软 件 , 是 S i mp l e Ge o 和 S t ame n 共 同 设计 开 发 的 , 采用 We b 方 式 的 地 图 框 架 % 。 P o l y m ap s 分 服 务 器 端 和 客 户 端 。 服务器 使 用 Ti l e St a che , 可 以 对 矢 量 数据 的 预 先切 片 , 也 可 以 实 现矢量 瓦 片 的 实 时 获 取 。

Map n i k 采 用 开 源 的 Pyt h o n/ C ++/N o de 瓦 片 這 染 引 擎 , 推 出 基 于 Go o g l e P r ot o c o l B u fe r 的 矢 量 瓦 片 格 式 Ma pn i k Ve c t o r Ti l e , 把 矢 量地 图 切 割 后 存储 在 j s o n 格 式文 件 中 , 然 后 将 数据 转 换 成 位 图 通 过 瓦 片 的 WM S 服 务 方 式输 出 1 | 3 1 显 然 这 不 是 真 正 的 矢量 瓦 片 。

Map b o x 基 于 开源 的 Op e n S t r e e t Map 工 具 研 宄 并 开 发 出 了 自 己 的 商 业地 图 应用 。

下 面 是 国 外 人 员 对 矢量 瓦 片 和 制 图 系 统 的 研 宄 现状 。

Mat s Tar a l d s vi k 针对矢 量 瓦 片 和 HTML5 进行 研 宄 , 将 高 性 能 的 HTML 5 和 矢 量 瓦 片 结 合 设计 并 实 现 了 了 矢 量 瓦 片 We b 系 统 。 但 文 中 对 于 矢 量 瓦 片 的 生 成 没 有 过 多 的 透露 , 只 是对 系 统 的 设 计 流 程进 行 了 具 体 阐 明 [ 1 4 ] 。

Ro b e rt P at r i c k Vi c t o r No r dan 在 对现 有 解 决矢量 瓦 片 的 方案进 行 评估 , 并在 此 基础 上 , 提 出 了 矢 量 瓦 片 与 拓 扑 传输之 间 的 访 问 规 范 的 解 决方案 , 设 计 了 原 型 并进 行 了 测 试 。 对 矢 量 瓦 片 的 数 据 结 构 和 算法进 行 阐 述 , 并描 述 了 可 能遇 到 的 挑战 [ 1 5 ] 。

1.2.2 国 内现状

目 前 , 国 内 不 仅 在 交 通 导 航 、 消 防 医 疗 、 军 事 、 自 然 保护 等 方面 处 处可见 GI S 的 应用 , LB S ( 基 于 位置服 务 ) 的 产 业也 不 断增 多 , 02 0 行 业持续 爆炸 式 增 长 , 对 物 流 的 需 求 也 提 出 了 更 大 的 考验 , 这 些 都 离 不 开 GI S 系 统 , 离 不 开 电 子 地 图 。 相 对 于 国 外 , 国 内 相 关 的 开源 软 件 还 很少 , 国 内 的 地 图 软 件 商 有 北 京 超 图 、 中 地数码 等 。

S up e r Map G I S 是 北 京 超 图 软件股 份有 限 公 司 开 发 的 , 具有 完 全 自 主 知 识 产 权 的 大 型 地理 信 息 系 统 软件 平 台 。 包 括 云 G I S 平 台 软件 、 组件 G I S 开 发平 台 、 移 动 GI S 开 发平 台 、 桌 面 G I S 平 台 、 网 络 客户 端 G I S 开 发平 台 以 及 相 关 的 空 间 数据 生产 、 加 工 和 管 理 工 具 [ 1 6 L 它 能够将地 图 数据 切 割 成地 图 瓦 片 , 并对 数据 进 行 管 理 , 切 片 性 能 得 到 了 较大 的 提 升 。 但 在 进 行 切 片 之前 需 要 花 费 大 量 的 时 间 来 把地理 信 息 数据拷 贝 到 切 片 计算机 上 , 才 能 实 现快速 分布 式 生成 地 图 瓦 片 [ 1 7 ]。

下 面 是 国 内 人 员 对矢 量 瓦 片 和 制 图 系 统 的 研 宄 现状 。

何 猛 等 提 出 了 采 用 文 件 分 层 分 级 的 方 式对 移 动 地 图 中 的 矢 量 瓦 片 进 行 组 织 , 但 并 对生成矢 量 瓦 片 的 细 节没 有 详 尽 的 描述 。

王 亚 平 等 设计 了 多 种 P yt ho n 模 块用 于 数据 转 换 , 并 应用 于 Ti l e S t ac he , 从 而 得 到 了 瓦 片 生 成 工 具 [ 1 9 ] 。 文 章 主 要 介 绍 数据 格 式投影转 换 , 矢 量 瓦 片 是 由 Ti l e S t a c he 负 责 生成 。

综 合 国 内 外 研 究 情况 可 以 看 出 , 对 于 矢 量 瓦 片 和 We b 制 图 人 们 的 研 究 越来 越深 入 。 随 着 网 络 信 息 技 术 的 发展 , 电 子 地 图 的 制 图 的 效 率 、 制 图 效 果 和 成本 越 来越成 为 开发 商 注 重 的 问 题 。 但就 目 前 来 看 , 相 关 研 宄 大 多 数 是 针对 电 子 地 图 制 图 的 某一 环节进行 的 , 比 较 缺少 综 合 性 的 、 全方位 的 矢量瓦片 制 图 系 统 。 因 此 , 本 文 主 要 构 建 了 能够对 s hap e fi l e 转 换 成矢量 瓦 片 和 We b 制 图 的 结 构 体 系 , 并借助 计 算机相 关技 术实 现 了 对 系 统 的 研 发 建 设 。

1.3 研究内容和技术路线

1.31 主要研究内容

本文 主要对基于 Map bo x 的 矢量 瓦 片 We b 制 图 过程 中 构 建和 开 发 的 关 键技 术 、 功 能 设计 、 编 程实现 等展 开 分 析和 研 究 , 论 文 的 主 要 研 究 内 容 具 体 如 下 :

1 ) 根据 目 前 国 内 存在 的 矢量 瓦 片 的 技术 问 题 、 应用 问 题 以 及 We b 制 图 成 本 问 题 , 分析 总 结 国 内 外 在 矢 量 瓦 片 和 We b 制 图 的 相 关 研 究 成 果 。

2 ) 分析研 宄 基 于 Mapb o x 的 矢 量 瓦 片 We b 制 图 开 发 与 应 用 系 统 , 综 合考 虑 系 统 的 设 计 、 关键技 术 和 应 用 方 面 的 因 素 , 确 立 可 行 的 系 统 实施 方 案 。

3 ) 分 析 研 究 s hape fi l e 数据 格式 和 MVT 数据 格 式 , 确 定 两 种 数据 之 间 转换 的 可 行 性 , 并 完成 s hape fi l e 向 MVT 数据 格 式 的 转 换 , 解 决 矢 量 瓦 片 数据 融合 和 复杂 多 边 形 的 渲 染 问 题 。

4 ) 对地理 要 素 属 性 进 行 设计 , 在 制 图 时 对 要 素进 行 区 分 , 并根据 类 别 对 要 素 进行渲 染 , 地理数据 通过阿 里 云 的 P o s t gr e S Q L 进 行 存储 , 在 此基础 上 建立地 理 数据 库 系 统 。

5 ) 分 析 研 宄 Mapbox 字 体格 式及 规 则 , 将 流 行 字 体 按 Map b o x 字 体规 则 进 行 转换 , 并 完成 微软 字体 到 Mapb o x 字 体 的 转换 。 Map bo x 字 体 采 用 分 段 式 的 字 体 , 避 免 一 次 性加 载 大 量 数据 而 出 现程序 等 待 现 象 。

6 ) 分 析 研 究 Mapb o x 的 图 标 加 载和 组织 方式 , 制 作 图 标 并 通过 图 片 融合 技 术将 图 标 生 成 一 张 p ng 格 式 图 片 和 j s o n 格式 的 图 标位置 说 明 文 件 。 充 分 利 用 图 片 融合技 术 的 优 点 , 解 决 因 客 户 端 多 次请求 图 片 堵 塞 网 络 而 影响 用 户 体验 的 问 题 。

7 ) 分 析 研 宄 Mapb o x 的 制 图 规 则 , 制 作 样 式 文 件 , 根 据 点 线 面 要 素 分 别 设 计 并 实 现 We b 端 制 图 。

1.3.2 技术路线

根据 研 宄 内 容 和 目 的 制 定 了 本 论 文 的 技 术路 线 , 如 图 1.1 所示 。

1.4 论文组织结构

本文共 分 为七个 章 节来 论述 , 具 体 内 容如 下 :

第 一 章 : 探讨 国 内 外 研 宄现状和 发展 情况 , 确 定 了 本文 的 主要研 宄 内 容和 组织 结 构 。

第 二 章 : 介 绍 了 理论研 究 和 系 统 开 发 中 所涉及 的 技术 , 主 要包括 We b GI S 技术 、 矢 量 瓦 片 、 数据 格式 、 制 图 样式文件等 。

第 三 章 : 阐 述 了 We b 制 图 客户 端 设计 、 s ervi c e 服务 、 辅助 制 图 功 能设 计和 数据 的 设计 等 内 容 。

第 四 章 : 分 析 了 系 统 制 图 过程 中 的 关键技 术 , 并实现 了 系 统 的 功 能 , 主 要 包括 s hap e fi l e 向 MV T 数据 格式转换 、 地 图 渲染技 术 研 究 、 We b 制 图 技 术研 究 、 创 建字体 和 创 建 图 标等 。

第 五 章 : 介 绍 了 基于 Map b o x 的 矢量 瓦 片 We b 制 图 系 统开发 实现 的 主 要 功 能 。

第六 章 : 对 系 统渲染效 果 性能进行测 试 。

第 七 章 : 总 结 了 主 要研 究 成 果 , 并针对 论 文 中 存在 的 不 足之 处 , 提 出 展 望 和 下 一 步 的 研 究 计 划

2. 相 关技术

2.1 WebGIS

2.1.1 HTML5

2 0 0 6 年 万 维 网 联盟 W3 C ( Wo r l d Wi d e We b C o n s o rti um) 意 图 构 建 HT ML 5 , 并 于 2 0 0 7 年成立 团 队 研 发 HTML5 , 经过 8 年 的 努 力 终 于 在 2 0 1 4 年 1 0 月 完 成标 准 化工 作 [ 2 ( ) ] 。 近 1 0 年 以 来 , HTML 5 在 We b 开 发标 准 中 可 以 说是 最 大 的 一 次 飞 跃[ 2 | ] 。 它 包 含 了 一 系 列 的 H TML 语 义 标 签 、 J a va S c r i p t AP I 、 C S S 3 等 新特性 , 强 化 了 We b 网 页 的 表现性 能 。 目 前 , 无 论是 电 脑 还 是 智 能终端 , 互 联 网 的 主 要 浏 览 器 都对新 标 准 提供 了 良 好 的 支 持[ 2 2 ] 。 在 HTML 5 的 标 准 下 , 开 发 人 员 只 需 要 按 照 标准进 行 开 发 , 不 用 针对 P C 端 、 And r o i d 端 或 I S O 端 进 行 不 同 的 定 制 开 发 , 开 发后 的 Web 在 不 同 设 备 上 都 能 正 常 显 示 , 开 发 人 员 不 用 再 做 重 复 的 任务 , 提 高 了 开 发 效 率 , 而 且方 便后 期对 系 统 的 维 护 , 从而 降 低 开 发 、 运 营 和 维 护 的 成 本[ 2 3 ] 。

相 比 之 前 的 HTML4 , HT ML 5 添加 了 部 分 重 要 新特 性 , 下 面 分 别 介 绍 一 下 H T ML 5 的 新特性 。

  1. C anva s 绘 图

    C anvas 元 素 为 脚 本提 供 了 一 个 依 赖 于 分 辨 率 的 位 图 画 布 , 允 许 脚 本 动 态 渲 染 图 形 , 可 实 时 渲 染 图 形 、 游戏 图 形 、 艺 术 或 其 他 视觉 图 像 。 它 提 升 了 绘 图 效 率 , 大 大 降 低 了 对 网 络 传 输 的 要 求

  2. 视 频 音 频播 放

    HTM L 5 之 前 , We b 播 放 视频 音 频 需 要 通 过 第 三 方插 件—Ado b e S y s t e m 的 F l a s h 、 微 软 的 S i l ve r l i g ht 或苹 果 的 Q ui c kTi me JT ML5 不 再 需 要 第 三 方插 件 , 通过 HTML 5 的 〈aud i o〉 和 〈v i d e o 〉 标签进行播 放 [ 2 6 】 。

  3. 本地离 线 存储

    HT ML 5 提供 了 App l i c at i o n C ac h e 网 页 缓存机 制 、 We b S t o r a g e 离 线 存储机 制 和 I nde xe d D B 数据 存储机制 三种 离 线存储机制 。 离 线存 储 机 制 使 网 页 再 次 打 开 时 时 间 更 短 , 存 储 内 容 更 多 , 使 地 图 矢 量 数据 We b 渲 染 时 同 一 瓦 片 只 加 载 一次 , 减少 了 宽 带 和 服务 器 压 力 [ 2 7 ] 。

  4. 地理 位置定 位

    H TM L 5 通过 H T M L5 G e o l o c a t i o n A P I 用 于 获 得 当 前 的 地理位置 。 在 地 图 渲 染 中 直 接定 位 到 当 前 位置 , 可用 于 位 置 导 航 查 询 等 功 能 t 2 8 ] 。

  5. CSS3特 性

    C S S 3 语 言 是 C S S 的 升级版 , 具有 模块 化 的 优 势 , 将 C S S 庞大 复杂 的 模块 分 解为 一 些 小 的 模块 , 开 发更方 便 快捷 , 便 于 团 队 协 作 [29]

2.1.2 Servlet服务

S e rv l e t 是 J av a S e rv l e t 的 缩 写 , 由 S un 公 司 制 定 的 服 务 器端 组件规范 , 即 规 定 了 S e rv l e t 组件 的 特征 , 也 规 定 了 运 行 S e rvl e t 应 具 备 的 系 统 ( S e rvl et 容 器 , 比 如 To m c at ) 特 征 , 为请 求者 提供 网 络服务 响 应。

S e rv l e t 在 服务 器端 运 行 , 动 态 地生 成 Web 网 页 , 主 要 用 于 交 互 式 的 修 改和 浏 览 数据 , 是 J ava 平 台 的 C G I 技 术 。 S e rv l e t 集 成 了 J av a 应用 程 序 的 所 用 优 势 , 可 以 使用 J a va AP I 核 心 的所有功 能 , 包 括 图 像 处 理 、 We b 和 URL 访 问 、 数据 压缩 、 序 列 化对 象 、 J D B C 、 多 线 程 、 RMI 等 , 与 传 统 的 C GI 和 其 它 类似 的 C G I 的 技 术 相 比 , 具 有 如 下 四 点 优势 [ 3 >3 4 ] :

1 ) S e r v l e t 在 We b 服务 器 的 地址空 间 内 执 行 。

2 ) S e rvl e t 是独立 于 平 台 的 。

3 ) S e rv l et 是 安 全 可信 的 。 J av a 的 服务器严格 的 执行 了 一 系 列 安 全 管理器 规定 , 计 算 机 服 务 器上 的 资 源 具 有 可 靠 的 保护 性 。

4 ) S e rv l et 可用 J a va 类库 的 全 部 功 能 。

S er v 丨 e t 生 命周 期 遵 循如 下 过程 [ 3 5 ] :

1 ) S e r v l e t 通过调 用 i n i t ( ) 方法进 行初 始 化 。

2 ) S e r v l e t 调 用 s e r vi c e ( ) 方法来 处理 客户 端 的 请求 。

3 ) S e rv l et 通过调 用 d e s tr o y ( ) 方法终 止 ( 结 束 ) 。

4 ) 最后 , S e rv l et 是 由 JVM 的 垃 圾 回 收器进 行 垃圾 回 收 的 。

2.1.3 Maven模型

Mav e n 是 Ap ac he 提供 的 基于 J av a 技术 的 一 款优 秀 的 项 目 构 建 、 组件 管 理 和 项 目 管 理 工 具 软件 [ 3 6 ] 。 通过 Maven 构 建 项 目 时 , 可 以 用 项 目 对 象模型 ( P O M ) 来 明 确 的 描 述 一 个 项 目 , 从 而 提供 统 一 的 构 建 系 统[ 3 7 _ 3 9 ] 。

为 了 实 现这 个 目 标 , Ma ve n 实 现 了 :

1 ) 简 化项 目 的 构 建过程 ;

2 ) 提供统 一 的 项 目 构 建 系 统 ;

3 ) 提供优质 的 项 目 信 息 ;

4 ) 提供最佳 的 项 目 实 践 开 发 准 则 ;

5 ) 允 许透 明 迁 移 到 新功 能 。

Mav e n 的 核 心概念 是 构 建生 命周 期 。 这 意 味 着 构 建和 分 配 部 分 模块 ( 项 目 ) 的 过程 已 被 明 确 定 义 。 对于 构 建项 目 的 人 员 来 说 , 只 需 要 学 习 小 部 分 命 令 就 可 以 来 构 建任 何 Mave n 项 目 , 并且 通过 P OM 配置 确 保项 目 的 正 确 。 有 三种 内 置 的 构 建 生 命周 期 : 默认 ( d e faul t ) 、 清 理 ( c l e an ) 和 站 点 ( s i t e ) 。 在 de fau l t 的 生 命周 期 中 处理项 目 部 署 , 将 d e an 的 生命周 期 处理项 目 的 清洗 , 而 s i t e 的 生命 周 期 处理项 目 站 点 文 档 的 创 建 [ 4 ( ^ ] 。

2.1.4 Mapbox应用

Map b o x 是 由 一 些 开 源 映射 库 、 应 用 程序 的 创 建 者 和 重 要 贡 献者 创 建 的 基 ” 于 No d e . j s 、 C o uc hD B 、 Mapni k 、 GDAL 和 Le afl e t j s 开 源 应 用 , 是 移 动 和 We b 应 用 程 序 的 位 置 数 据 平 台 , 包 括 MB Ti l e s 规 范 、 Ti l e Mi l l 制 图 I D E 、 L e a fl e t J ava S c r i pt 库 以 及 C art o C S S 映射 样 式语 言 和 分 析 器 。 自 2 0 1 0 年 以 来 , 它 己 经迅 速扩 大 了 定 制 地 图 的 适用 范 围 , 以 便 响 应地 图 提供 商 ( 如 Go o g l e 地 图 ) 提 出 的 专 题 化 需 求 , 正 在 改 变人 们 在 城 市 中 四 处 走动 和 探 索 我们 世 界 的 方 式 [ 4 2 ] 。

Map bo x 支 持 矢 量 数据 、 栅格 数据 、 栅格 高程 数据 、 ge oj s o n 、 图 片 、 影 像 和 c anv a s 数据 格 式 1 @ 。 Ma pbo x 主 要 数据 是 矢 量 瓦 片 数据 , 对 矢 量 瓦 片 数 据 进 行 地 图 渲 染 , 矢 量 瓦 片 是 用 于 存 储 地 理 空 间 矢 量 数据 ( 如 点 , 线 和 多 边 形 ) 的 轻 量 级 数 据 格 式1 44 4 5 ) , 数 据 量 小 , 网 络 传输压 力 小 。 Ma p bo x 数据 来 源 于 多 种 渠 道 , 模 板 中 的 数据 来 自 四 种 Mapb o x 地 图 集之 一 , 如 下 所 示 :

1 ) Map b o x S tr e e t s 包 括基 于 Op e n S t r e e t Map 的 街道 , 建 筑物 , 地 区 , 水 和 土地数据 。

2 ) Mapbo x Te rr ai n 包 含 一 个 全 球 高程数 据 集 , 包 含 轮廓 , 山 体 阴 影 和 土 地 覆 盖数据 。

3 ) Mapbo x Tr a fic 提供 的 拥 堵信 息 每 五 分 钟 更 新 一 次 , 道 路 几 何 图 形源 自Op e n S t r e e t Map 。

4 ) Map b o x S at e l l i t e 包 含 各 种 来源 的 全球卫星 图 像 , 通过 Map b o x 进 行 处理 和 拼接 。

本 文 采 用 Map b o x 的 矢量 瓦 片 集 合进行 研 宄 , 矢 量 瓦 片 集 合 对 于 构 建动 态 地 图 具 有 许 多 强 大 的 功 能 :

1 ) 动 态样 式 。

使用 Mapb o x G L J S 或 适用 于 Andro i d 和 i O S 的 Mapb o x Map s S DK , 可 以 动 态 调 整 地 图 的 外 观 , 而无 需 下 载新 的 图 块 。

2 ) 平滑 的 交 互 。

由 于 所有地 图 数据 都 已 加 载 到 地 图 客户 端 中 , 因 此 可 以 快 速地重 新 绘 制 地 图 , 从 而 实 现平 滑 缩 放 , 倾斜和 旋 转 。

3 ) 数 据 量 小 和 速度 快 。

为 了 保 持地 图 的 快速 和 轻量 化 , 并 非所 有 包 含 在 拼 图 集 中 的 数据 都存 在 于 每个缩 放 级 别 。 Mapbox 的 制 图 员 通 过 大 量 的 工 作 , 来 筛 选 出 每 个缩放级 别 显 示 哪 些 数据 , 确 保 Map b o x 提供 的 矢 量 图 在 细 节 和 性 能 之 间 保 持 良 好 的 平 衡 。

4 ) 动 态 查 询 。

可 以 使 用 此功 能 直接 从矢 量 图 集访 问 地 图 数据 的 属 性 。

Map bo x 支 持 流 行 的 We b 墨 卡 托 投 影 , 目 前 不 支 持 任 何 其 投 影 。 We b Me r c at o r 是绝 大 多 数 We b 地 图 采用 的 近似共 形投影 , 使 用 We b 墨 卡托投影 允 许 将 Map b o x 的 地 图 与 其 它 图 层 组 合在 同 一 投影 中 。 Map b o x 为 公 司 提 供 商 业服 务 , 产 品 有 Mapb o x S t ud i o 用 于 制 图 , Map b o x G L 为 用 户 提 供基 于 Map b o x 的 We b 二 次 开 发[ 4 6 ] 。

2.2 矢置瓦片

传 统 的 地 图 瓦 片 技 术 是把地 图 数据 后 台 渲 染 后 生 成 图 片 , 将 图 片 传输 到 前 端 , 图 片 中 不 包括 数据 信 息 且 图 片 数据 量 大 , 这 增 加 了 网 络 传 输 的 压 力 和 缺少 地 图 交 互功 能 [ 4 7 L 矢 量 瓦 片 技 术 是基 于 栅 格 瓦 片 的 金字塔模 型 将 灵 活 的 矢 量地 图 和 高 效 的 瓦 片 服务 结 合 起 来 , 使得 矢 量 瓦 片 在 具 有 切 片 优 势 的 同 时 , 具 备 矢 量 地 图 的 交 互作 用 [ 4 8 ] 。

2.2.1 瓦片的金字塔模型

地 图 瓦 片 金字塔模 型 指 在 一 定 的 地理 范 围 内 , 随 着 等 级 的 提 高 , 瓦 片 包 含 地理 要 素 内 容 越 少 , 瓦 片 数量越 多 的 模 型 [ 4 9 ] 。 首 先 确 定 地 图 服 务平 台 所要 提 供 的 缩 放级 别 的 数量 N , 把缩放 级 别 最低 、地 图 比 例 尺最大 的 地 图 图 片 作 为金字塔 的 底层 , 即 第 0 层 , 并 对其进 行 分块 , 从地 图 图 片 的 左 上 角 开始 , 从左 至右 、 从上 到 下 进行切 割 , 分割 成相 同 大小 ( 比 如 2 5 6x2 5 6 像 素) 的 正方形地 图 瓦 片 , 形成第 0 层 瓦 片 矩 阵 ; 在第 0 层 地 图 图 片 的 基础 上 , 按每 2 x 2 像素合成 为 一 个像 素 的 方法生成第 1 层地 图 图 片 , 并 对 其 进行分块 , 分割 成 与 下 一 层 相 同 大 小 的 正 方形地 图 瓦 片 , 形 成 第 1 层 瓦 片 矩 阵 ; 采 用 同 样 的 方法生成第 2 层 瓦 片 矩 阵 , 如 此 下 去 , 直 到 第 N — 1 层 , 构 成整 个 瓦 片 金 字 塔 [ 5 G ] 。 金字塔模 型 如 图 2 . 1 。

2.2.2 瓦片的编码

方式 为 了 对金 字塔 瓦 片 定 位 和 管 理 , 需 要对 瓦 片 制 定 一 套规则 对 瓦 片 赋 予 唯 一 的 标 识码 进 行 定 位 , 常 用 的 编 码方 式有 两 种 : 四 叉树编 码[ 5 1 _ 5 2 ] 和 按 行 列 编 码 。

四 叉 树 编 码 的 原 理 是 将 二 维 的 地 图 切 片 后 按 西 北 、 西 南 、 东 南 、 西 南 北 四 个 方位 进 行编 码 , 分 别 按 0 、 1 、 2 、 3 进 行 编 码 , 在 继 承 父 级 的 编 码 的 同 时 在 本 级 在 赋 予 编 号 。 例 如 , 在 墨 卡 托投影 下 , 在 第 零 级 时 , 只 有 一 个 瓦 片 没 有 , 没 有父级 瓦 片 , 编 号 为 0 ; 在 第 二 级 时 , 有 四 个 瓦 片 , 有 四 个方位 分 别 编 码 0 、 1 、 2 、 3 , 继承父级 的 编码 0 , 为 0 0 、 0 1 、 0 2 、 0 3 , 如 图 2 . 2 所示 。

按 行 列 编 码 方式 中 , 每 一 个 瓦 片 按 ( l e ve l , X , Y ) 格 式 进行标 识 , l e ve l 代表 瓦 片 的 层 级 数 , X 代表 瓦 片 的 行 数 , Y 代表 瓦 片 的 列 数 , 以 图 层 的 左 上 角 为 坐标 原 点 , X 为 纵轴 , 向 下 为 正 , Y 为横 轴 向 右 为 正 , XY 从零 开 始 , 如 图 2 . 3 所示 。

例 如 , 在 墨 卡托投影 下 , 0 级有 一 个 瓦 片 , 标 号 为 ( 0 , 0 , 0 ) ; 1 级 有 四 个 瓦 片 , 按 行 列 编 码 为 ( 1 , 0 , 0 ) 、 ( 1 , 0 , 1 ) 、 ( 1 , 1 , 0 ) 、 ( 1 , 丨 , 1 ) , 如 图 2 . 4 为 2 级 瓦 片 编 码 。

按 行 列 编 码对 区 域读 写 较 差 , 但 对 随机读取 和 顺序读取 比 四 叉 树 的 性 能 好 。

本 文 采用 Mapbox 的 访 问 引 擎 , 根据 瓦 片 的 级 别 和 和 行 列 号对 数据 进 行读 取 , 因 此采 用 随 机性较 大 的 按 行 列 编 码方 式进 行 编 码 。

2.2.3 矢置地图切片

矢 量地 图 在 切 片 时 经 常 遇 到 一 个要 素 跨越 几个 瓦 片 的 情 况 , 下 面讲述 本 文 对 于 跨切 片 要 素 处 理 问 题 的 解 决 方案 。 对 于 解 决方案有两类方法 , 一 是完全 保 留 要 素 , 保存 完 整 的 信 息 [ 5 3 _ 5 5 ] 。 二 是对 要 素 进 行切 割 , 保 留 要 素 的 部 分 信 息 。

如 上 图 2 . 5 中 a 图 所示 , 瓦 片 中 包 含 要 素 的 全 部 信 息 , 在 瓦 片 拼接 时 不 会 出 现 断线 和 断面 , 但 瓦 片 中 的 数据 冗 余较 大 , 在 网 络 数据 传输 中 , 数据 量 大 , 传输慢 , 影 响 用 户 体验。

如 上 图 2 . 5 中 b 图 所示 , 瓦 片 对要 素进 行 了 切 割 , 瓦 片 中 只 包 含 瓦 片 内 的 信 息 , 数据 量小 。 对于 数据 传输 中 网 络 负 担 小 , 但 在 瓦 片 拼接 时 可 能 出 现 断线 和 断 面 的 问 题 。

如 上 图 2 . 5 中 c 图 所示 , 是 在 b 图 的 基础 上进 行 的 改进 。 瓦 片 既 包 含 瓦 片 内 的 数据 , 也 包含 了 瓦 片 边缘 一 定 缓冲 区 域 内 的 数据 , 这样 既减少 了 数据 量 , 也 不 会 出 现 瓦 片 拼接渲 染 时 的 断线 断 面 问 题 。 但 程序 复 杂 度 上 升 。

本 文 是采用 矢 量瓦 片 进行 We b 页 面渲 染 , 对数据 量和 拼接要 求较 高 , 因 此 采 用 第 三 种 方法进 行 瓦 片 切 片 [ 4 9 ] 。

2.3 地图数据格式

2.3.1 Shapefile数据格式

S hap e fi l e 数据 是 Ar c G I S 提供 的 二 进 制 文件格 式 , 可 以 同 时 存储地理 空 间 图 形 数据 和 属 性特 性 数据 的 非 拓 扑 矢 量 数据 结 构 。 S hap e fi l e 的 基本 文件 包 括主 文 件( * . s hp ) 、 索 引 文 件( * . s hx ) 和 d B A S E 表 文 件( * . dbf) , 其 中 , 主 文件存 储地理 要 素 的 几 何 图 形 文 件 , 是 一 个 直接 存 取 , 变 长记 录 的 文件 , 每 条记 录描 述一 个 实 体数据 , 称 为 S h ap e fi l e ; 索 引 文 件存储 图 形 要 素 与 属 性 信 息 索 引 , 每个 记录 包含对 应 主 文件记 录 离 主 文件头 开 始 的 偏 移 量 ; dB AS E 表 文件存 储要 素 属 性信 息 , 包含 各个 实 体 的 属 性特 征 记 录 [ 5 6 _ 5 8 ] 。

2.3.2 MVT数据格式

MVT 是 Mapb o x 平 台 We b 端和 手 机端采用 的 数据 格 式 。 Mapb o x 是 当 前 比 较成 熟 的 编 辑平 台 , 一 是 提供 了 用 于 客户 端 的 地 图 编辑 的 Mapb o x s tud i o , 二 是 Map b o x 的 AP I , 用 于 We b 端 和 手 机端 开 发 [ 5 9 ] 。 Mapb o x s t udi o 可 以 直接 加 载 s h ap e fi l e 数据 , 但 Map b o x 没 有 提供读 取 s hape fi l e 的 AP I , 因 此 需 将 s hap e fi l e 转 换 为 MVT 。 MVT 文 件 存储 一 组命 名 图 层 , 每个 图 层 中 包含版本 、 名 称 几何 要 素及其 属 性信 息 , 不 包 含 边 界 和 投影 信 息 。 单 个 MVT 文 件 中 图 层 中 必 须至 少 包 含 点 、 线 、 面和 未 知 四 种 要 素 中 的 一 种 , 可 同 时 包 含 多 种 要 素 [ 4 7 , 6 ?6 1 ] 。 矢 量 瓦 片 格 式 如 图 2 . 6 所示 。

2.3.3 Shapefile与 MVT 数据格式对比分析

为 了 直 观地 显示两 种 数据 格 式 的 异 同 , 便 于 数据 格 式 转 换 , 将 二者进 行对 比 , 如 表 2.1 所示 。

S h ap e fi l e 与 MVT 数据 格 式存储 方 式 不 同 , 为 了 能 把 S hap e fi l e 数据 应用 于 Mapb o x G L J S 渲 染展示 , 需 要 进 行 格 式转 换 。 S h ap e fi l e 数据 存 储 几 何 要 素 节 点 的 经纬 度 坐标 【 6 2 ] , M V T 数据 不 包 含 投影坐标 和 瓦 片 边 界 信 息 , 因 此 要 进 行 投 影转 换 , 将 S h a p e fi l e 几何 要 素 节 点 的 经纬 度 转 换 为 瓦 片 上 的 像 素 坐标 。 M a p b o x 的 MV T 格 式数据 几何要 素 和 属 性信 息 存 储 在 同 一 个文 件 中 , 可 同 时 包含 多 种 类 型 的 几 何要 素 。 Map b o x 基 于 G o o g l e p r o t o c o l b u fe r s 制 定 的 开 源矢 量 瓦 片 数 据 标准 MAPB O X VE C TO R nLE S P E C I F I C AT I ON 1 6 3 1 , 因 此 , 坐标 数据 和 属 性 数据 需 按 照 Map b o x 标准进行制 编 码 。

2.3.4 Google Protocol Buffers编码

MVT格式 使用 Go o gl e P r o t o c o l B ufe r s ( 简 称 P r o t o b u f ) 作 为 编 码 格 式 。 它们 用 于 RP C 系 统 和 持续 数据 存 储系 统 。 目 前提 供 了 C ++ 、 J a v a 、 Pyt ho n 三 种 语 言 的 AP I 。 它 的 编 程模 式 具 有 良 好 的 文 档 和 实 例 , 简 单 易 学 且 不 需 要 学 习 复 杂 的 文 档 对 象 模 型 。

P r ot b uf 与 XML 相 比 也 有 不 足 之 处 。 它 功 能 简 单 , 无法 用 来 表示 复杂 的 概 念 關 。

2.4 制图样式文件

Map box GL 采用 后 台 传 输地 图 数据 到 前 端 , 前 端通过样 式文 件对 数据 进行 渲 染 , 样 式文 件 是地 图 显 示 效 果 的 标 准 , 保证 不 同 数据 在 前端 显 示 时 具 有 相 同 的 风格 。 Mapbo x 的 样 式 文件 是 一 个 j s o n 格式 的 文件 , 按 照 一 定 的 规 则 编 写 。

样 式文件 中 包 含 v e r s i o n 、 name 、 s ourc e s 、 s p r i t e 、 g l yph s 和 l aye r s 对 象 , v e r s i on 控 制 样 式 文 件 的 版 本 , name 表示文 件 的 名 字 , s o ur c e s 描述地理 数据 的 来 源 , s p r i t e 描 述 图 标 的 来源 , gl yphs 描 述字 体 的 来源 , l aye r s 包 含地 图 的 图 层 。 基 本 内 容 如 下

2.5 本章小结

本 章 主 要 介 绍 了 系 统 实 现 的 相 关 技 术 , 主 要 包 括 We b GI S 、 矢 量 瓦 片 原 理 、 Mapb o x 数据 格 式 和 制 图 样 式表 等 。 采 用 ht ml 5 编 写 客户 端 , 通 过 s e rv l e t 编 写 服 务 器 , 通过 ma v e n 构 建服务 器框 架 , 采用 Mapb o x 的 AP I 进行 二 次 开发 。

3. 需求分析与设计

根据 本文 要解决 的 问 题 以 及 实 现 的 目 标 , 对 Ma p b o x 矢 量 瓦 片 数据 格式 转 换及 We b 制 图 系 统进行 需 求 分 析 , 系 统采用 B/ S 结 构 , 主 要 功 能 包括 后 台 功 能 支 持和 前 台 的 We b 地 图 渲 染及 制 图 , 后 台 又 包含 数据 库 连接 、 生成 瓦 片 和 提 供 服务 , 服 务包括 数据 服务 、 图 标服 务和 字 体服 务 , 前 台 包括在线制 图 、 样 式 文 件 转换 、 样 式文 件 导 出 、 地 图 样 式切 换 、 地 图 渲 染对 比 、 属 性 空 间 查 询 和 地 图 操 作 基 本 功 能模块 。 除此之 外 还有 字 体和 图 标制 作 功 能 。 主要 功 能 设 计 如 图 3 . 1 所示 。

3.1 系统应用流程

数据 格 式转换及 We b 端 数据 渲染和 制 图 的 具 体流程如 图 3 . 2 所示 。

渲 染 过程主 要 分 为 五 个 阶段 :

1 ) 数据 准 备 阶 段 。 准 备 S hap e fi l e 数据 , 制 作 图 标 图 片 , 下 载 t f 格 式 字 体 。

2 ) 数据 转换 阶 段 。 S h ap e fil e 转换 到 MVT 数据 格 式 , 图 标 图 片 生成索 引 文 件和 合 成 图 标 图 片 , tf 格 式字 体样 式 生成 P B F 格式字 体 数据 。

3 ) 发 布服务 阶段 。 发 布 图 标 、 字体 、 样 式文 件及 瓦 片 数据 服务 。

4 ) 地 图 渲染阶段 。 加 载发布 的 图 标 、 字 体 、 样 式文件及 瓦 片 数据 , 并通过 Mapb o x G L J S 进行渲染 。

5 ) 地 图 制 图 阶 段 。 用 户 根据个 人 需 求 通过系 统对地 图 样 式 进 行修 改 , 实 时 更 改地 图 渲染和 修 改样 式文件 。

3.2 Browser客户端功能

3.2.1 基本功能

系 统 的 基本 功 能 主要 包括 以 下 2 部 分 :

( 1 ) 地 图 的 基本操 作 实现 。 主 要 包 括地 图 放大 、 缩 小 、 平移 、 刷 新 、 复位 、 距离 量测 和 面积 量测 等 功 能 。

( 2 ) 地 图 切 换控制 的 实 现 。 系 统提供 电 子地 图 和 夜 晚地 图 两种 样 式进 行切 换 , 除此之 外 , 添加 了 遥 感影像地 图 对 比 功 能 。

3.2.2 在线制图

系统根据 地 图 要 素 的 类 型 分为三 种 方式分 别 对 点 线 面进行 在 线 制 图 , 不 借 助 服务器 只 在 We b 端 就 可 以 完成 , 减 少 带 宽 和 服务器 的 压 力 。 下 面对点 线面 的 设计分 别 进行 说 明 。

1 ) 点要素制图

用 户 可 以 通过 We b 端 直接修 改 点 要 素 的 样 式 , 样 式 属 性 主 要 包 括 文字颜 色 、 文字透 明 度 、 晕 眩颜色 、 晕 眩 宽 度 、 晕 眩模 糊 度 、 文 字转 化 、 文字转化 定 位 、 图 标透 明 度 、 图 标颜 色 、 图 标 晕 眩颜 色 、 图 标 晕 眩 宽 度 、 图 标 晕 眩 模 糊 度 、 图 标转 化 、 图 标转 化 定 位 、 字 段 、 字 体 、 大 小 、 线 高 、 字 间 距 、 文 字 对 齐 、 文 字 定 位 、 文 字 最 大 弧度 、 文 字 旋转 、 文字 间 隔 边框 、 文 字 直 立 、 文 字 改变 、 文 字 偏 移 、 文 字重 叠 、 忽 略 文 字位置 、 文 字选 择 、 文 字对齐 、 文 字 旋 转对齐 、 文 字 最 大 宽 度 、 图 标 、 图 标大 小 、 图 标 间 隔 边框 、 图 标 偏 移 、 图 标定 位 、 图 标透 明 度 、 图 标旋 转 、 图 标 旋 转对齐 、 图 标文 字 匹 配 、 图 标 文 字 匹 配 间 隔 边框 、 图 标 直 立 、 图 标对 齐 、 图 标重 叠 、 忽 略 图 标位 置 、 符 号 位置 、 符 号 向 隔 和 边 界 避 让 , 通过属 性 赋值 确 定 制 图 风格 , 实 时修 改 实 时 渲 染 , 给 用 户 提供方便 的 制 图 方 式和 体验 。 为 了 实 现 系 统 的 每个 属 性 制 图 功 能 , 将 We b 制 图 功 能 分 为 非 函 数 式 和 函 数 式两 大类进 行 设 计 。 其 中 , 非 函 数 式是对 地 图 要 素 的 属 性 赋 一 个 值 , 无 论 在 高 等 级 地 图 还 是在 低 等 级 地 图 , 图 层 内 的 要 素渲 染 效 果 不 变 ; 函 数 方 式 是对 不 同 级 别 的 地 图 赋 予 不 同 值 , 通 过级 别 控 制 地 图 渲 染 效 果 , 也 可 以 对 图 层 内 要 素 ( 按 照 属 性 或 按 照 属 性+ 地 图 级 别 ) 进 行 赋 值 , 通 过 级 别 和 要 素 属 性控 制 地 图 渲 染 效 果 , 保证地 图 渲 染 的 灵 活性 。

2 ) 线要素制图

在 线 要 素 制 图 中 , 线 要 素 的 样 式 属 性 包 括颜 色 、 透 明 度 、 宽 度 、 转 化 、 转 化 定 位 、 间 隔 宽 度 、 偏 移 、 模糊 、 虚 线 、 模 式 、 端 点 、 交 点 、 弧 形 限 制 和 头 限 制 。 类 似 点 要 素 制 图 , 系 统采用 We b 制 图 的 两 大 类 进 行 设 计 并 实 现 每 个 属 性 的 制 图 功 能 , 限 于 篇 幅 , 在 此 不 再赘述 。

3 ) 面要素制图

在 面要 素 制 图 中 , 面要 素 的 样 式 属 性包 括 、 颜色 、 透 明 度 、 模 式 、 面转化 、 面转化 定 位 、 外边线 颜色和 平滑 。 系 统 实 现 方式如 同 点 要 素 和 线 要 素 , 在 此 不再 赘述 。

3.2.3 属性空间查询

1 ) 属 性 查 询

系 统 实 现 了 地名 地址 的 模 糊 查询 , 可 定 位 到 指 定 位置 , 在地 图 制 图 过程 中 , 快速 查 看指 定 位置 的 制 图 效 果 , 以 便对 制 图 效 果 进行修 改 。

2 ) 空 间 查 询

系 统 实 现 了 点 击地 图 要 素 显 示要 素 属 性 的 功 能 , 制 图 者 可 以 根据 要 素 属 性 定 位 到 图 层 , 确 定 制 图 错误 出 现在 图 层 的 位置 , 也 可 以 根据 属 性 查 询 数据 库 , 查 看 是 否 是 由 于 数据 问 题 而 引 起 的 错 误 。

3.2.4 地图渲染对比

在 地 图 制 图 过程 中 , 地 图 要 素 的 制 图 配置效 果 无法 确 认 , 需 要 通过 与 其它 地 图 进 行对 比 , 发 现配 图 中 的 不 足 , 比 如 字 体 的 颜 色 、 道 路 的 上 下 层 关 系 和 多 边 形 绘 制 情 况 等 , 为 了 达 到 更 好 的 渲染 效 果 , 减 少 错 误 的 出 现 , 本 系 统 实 现地 图 渲 染 的 对 比 功 能 , 将 We b 页 面 分 为 左 右 两个 同 大 小 的 显 示 框 , 左 边 为 需 要 修 改 的 地 图 , 右 边显 示 参考地 图 , 两个 显 示 框 内 地 图 中 心 和 地 图 等级 相 同 , 保证 对 比 的 效 果 , 实 现地 图 联动 功 能 , 在 拖拽 、 放 大 和 缩 小 一 侧 的 地 图 时 , 另 一 侧 的 地 图 做 相 同 的 变 化 。

3.2.5 样式文件加载

本 系 统提供地 图 定 制 化服 务 , 制 作 不 同 风格 的 专题 图 。 地 图 数据 和 样 式文 件 分 离 , 同 一 地 图 数据 可用 不 同 的 样式文 件进 行 渲 染 , 灵 活 定 制 地 图 标注 和 底 图 的 样 式 等 内 容 , 满 足用 户 的 不 同 需求 , 提 升 用 户 体验[ 6 5 ] 。 当 地 图 数据被请求 到 We b 端 时 样 式文 件 才 发挥作 用 , 客户 端 根据 J s o n 文 件 动 态 濱染 的 方式 , 实 现 同 一 地 图 数据 不 同 专 题 的 样式地 图 。 不 同 风格 的 样 式文 件加 载可 使 用 户 快速 切 换 地 图 风 格 , 在 专 题 制 图 方面有 很 重 要 的 作 用 。

3.2.6 样式文件导出

在 We b 制 图 过程 中 , 用 户 操作 要 素 的 样 式 后 , 地 图 要 素样 式 随 之 改 变 , 样 式文 件 内 容 也进行 改 变 。 样 式文 件 保存 在 内 存 中 , 不 与 后 台 文 件进行 交 互 , 这 样 可 以 减 少 服 务 器压 力 , 当 We b 网 页 关 闭 时 , 文件 会 随 着 内 存 释 放 , 因 此 , 修 改后 的 样 式 文 件 可 以 通过 导 出 进行 保存 , 以 便 再 次使 用 。

3.3 Service服务

3.3.1 数据格式转换

本系统采用 Mapbo x 的 开源 软 件 , Mapb o x 的 数据 类 型 有 ve c t or 、 r as t e r 、 ras te r - de m 、 ge oj s on 、 i mag e 、 v i d e o 和 c an v a s 数据 [ 6 6 _ 6 7 ] 。 本 系 统采用 矢量 瓦 片 的 数据格 式 , 将 shape fi l e 数据 格 式转 换 成 MV T 数据 格 式应用 于 服务 。 系 统在 收到 We b 端发送过来请求 后 , 根据 瓦 片 的 级 别 、 行 号 和 列 号对 数据 进 行实 时 切 片 , 切 片 后 生 成 矢量 瓦 片 数据 返 回 给 客 户 端 。

3.3.2 生成瓦片

本 系 统采用 矢 量 瓦 片 数据 , 对 矢 量 数据 进 行切 片 处理 , 通过 Go o g l e 编 码 处 理成 二 进制 数据 , 数据 量 小 , 网 络 压力 小 , 数据 传 输快 , 提高用 户 体验 。 具 体 切 片 流程 如 下 。

1 ) 客 户 端请 求 数据 , 包 含 瓦 片 级 别 、 行 号 和 列 号 , 通过 { X , Y , L } 表示 ;

2 ) 服 务器根据 请求 数据 , 计 算 出 瓦 片 的 经 纬 度 范 围 ;

3 ) 服务 器 读 取 数据 , 并 根据 经纬 度 范 围 对 矢 量 数据 进 行 切 割 ;

4 ) 将 切 割 后 的 数据 通过投影转 换 变 为 瓦 片 坐标 ;

5 ) 经过 Goo gl e Pr o t o bufs 编 码 , 保存 为MVT 格 式 , 自 动 完 成 数据 格 式 的 转换 。

3.3.3 提供服务

1 ) 矢 量 瓦 片 服 务

服务 器 在 收 到 客 户 端 发 出 的 请 求 后 , 响 应 客 户 端 进 行 矢 量 瓦 片 处 理 , 并 在 处 理完成 后 返 回 矢 量 瓦 片 数据 。 服 务 器 采 用 s e r v l e t 技 术 响 应请 求 , 配 置 we b . x m l 文 件 设 置 请 求 的 响 应 服 务 , 服 务 器 根 据 包 含 瓦 片 行 号 、 列 号 和 地 图 级 别 的 统 一 资 源 定 位 符 ( U RL ) 请 求 返 回 数据 。

2 ) 字 体 服 务

用 户 设 置 字 体 的 样 式 来 修 改 地 图 渲 染 的 字 体 显 示 效 果 。 如 果 服 务 器 收 到 We b 请求 , 根据 we b . xml 文件 配置选择 s e rv l e t 服 务 响 应 , 服 务 器解 析 U RL 返 回 响 应 的 字 体 。

3 ) 图 标 服 务

通过 图 标 的 名 称 选择 图 标 , 在 地 图 制 图 中 的 样 式 文 件 中 设 置 图 标 的 名 称 ,修 改地 图 渲 染 的 图 标 。 图 标 服 务 响 应 同 字 体服 务 , 在 此 不 再 赘述 。

3.4 辅助功能

系 统在 配 图 过程 中 除 了 数据 的 处 理和 服务 发 布 外 , 还 需 要 制 作 字 体 、 图 标 和 样 式文 件 。 本 节 讲 述一 下 图 标 、 字 体 和 样 式 文 件 的 制 作 。

3.4.1 字体转换

地 图 制 图 过程 中 需 要 加 载 字 体样 式 , 由 于 没有 Mapb ox 的 字 体 , 需 要 通过 转 换 的 方法将现有 字 体样 式转 换 为 Mapb o x 字 体 。 Mapb o x GL 米 用 分段 式进 行 字 体加 载 , 防 止 因 字 体 加 载 时 间 过长 影 响 客 户 端 响 应 , 降 低 用 户 的 体验 。 本 系 统 通过 no de - fo nt ni k 工 具将 TTF ( Tme Typ e F o nt ) 字 体数据 转 换为 . pb f 字 体 。 将 . pb f 字 体应用 于 服 务 器 , 客户 端请求 字 体 时 服 务 器 加 载 . pb f 字 体 响 应服务 , 完 成地 图 的 渲 染 。

3.4.2 制作图标

地 图 渲 染 需 要 图 标 , Map b o x G L 的 图 标采 用 图 像拼 合技 术 , 系 统在 正 常运 行 前 首 先 要 制 作 图 标 , 包 括 单个 图 标 融 合后 的 图 片 和 记 录 图 标 的 j s o n 文 件 。 系 统 通过 Ph o t o s h o p 软件进 行 图 标 设计 , 然 后 通过 s pr i t e 工 具将 图 标 融合 成 一 张 图 片 和 一 个 j s o n 文件 。 如 果 不 进 行 图 标 融合 , 用 户 在 多 次请 求 图 标 时 会 降低 服务 器 的 响 应 速率 。 应用 图 像拼合 技 术 后 只 会请 求 一 次 数据 , 且 图 标 和 j s on 文 件 小 , 基 本 不 影 响 客户 端 图 片 的 加 载速率 , 提 高 了 用 户 体验 。

3.4.3 制作样式文件

在 系 统运 行 之 前 , 需 要 完 成样 式文 件 的 配置 , 用 户 根据地理要 素 的 制 图 要 求对样式 文 件 进行配置 , 调 节 图 层 之 间 的 上 下 层 关 系 , 设置 图 层 要 素 的 渲 染 属 性 , 生 成 决 定 地 图 渲 染 效 果 的 j s o n 文 件 。 地 图 的 渲 染是 后 台 返 回 数据 和 前 端 样 式文 件对 数据 进行 渲 染 的 结 果 , 如 果 用 户 修 改 了 样 式文 件 , 前端 的 渲 染 就 会 发 生 变化 。 比 如 用 户 修 改 了 字 体 的 c o l or 属 性值 , 字 体 的 颜 色 就 发 生 相 应变 化 。

3.5 数据库设计

数 据 库 主 要 是 地 理 空 间 数 据 库 , 地 理 空 间 数 据 库 通 过 支 持 地 理 对 象 的 Po s t G I S 将地理数据 添 加 到 P o s t gr e S Q L 对 象 关 系 数据 库 中 。

地理 空 间 数据 库 中 的 地理数据 包括基础 地 图 数据 和 制 图 数据 。 基础地 图 数 据 主 要 包 括 中 国 行政 区 划 图 、 区 域 界线 、 道路 网 数据 、 河流湖 泊 、 海 洋数据 和 点 状地 物 等 。 对基础 数据 进行 筛选 、 矢 量 化等 处 理后 , 确 定 每 个要 素 类 的 字段名 及 其类 型 和 属 性 , 并 建 立属 性表 。 所有地 图 数据 均采用 WG S 8 4 We b 墨 卡托 投影坐标 系 。 通过属 性表对 制 图 数据 加 以 区 分 , 对 不 同 类 别 的 地理数据 进行制 图 。

对于道路要 素 , 字段 中 主 要包含类 别 、 名 称 、 标 号 、 级 别 等 。 类别 是为 了 区 分不 同 要 素 , 主要 包括 国 道 、 省 道 、 高 速 、 县 道 、 乡 道 和 人 行 横道等 ; 名 称 用 来进行道 路 名 称 的 标注 ; 标号 是道 路 的 简 写 , 如 国 道 1 0 8 简 写 为 G 1 0 8 。 级 别 表示道路 的 最 小 的 显 示 级 别 , 如 级 别 为 8 , 当 地 图 级 别 大于 等 于 8 时 道路才 显 示 。 道路 网 图 层 的 属 性字段和 属 性表 如 图 3 . 3 和 图 3 . 4 所示 。

对 于 点 状地 物 , 字段 中 主 要包 含类别 、 名 称 、 标 号 、 级 别 和 图 标名 称等 。 类 别 是 为 了 区 分 不 同 要 素 , 主 要 包括商 店 、 医 院 、 酒店和 景 区 等 ; 名 称 用 来进 行地名 的 标注 ; 级 别 表示地物 的 最 小 的 显 示级 别 , 如 级 别 为 8 , 当 地 图 级 别 大 于 等于 8 时 地物才 显 示 ; 图 标 名 称来确 定地物 的 图 标 。 点 状地物 的 属 性 字 段 和 属 性表 如 图 3 . 5 和 图 3 . 6 所示 。

对 于 区 域 界线 , 字 段 中 主 要 包 含类 别 、 名 称 和 级 别 等 。 类 别 是 为 了 区 分 不 同 的 省 市 界 线 , 主 要 包括 省 级 、 市 级 、 县 级 和 乡 镇 级 等 ; 名 称 表 示界 线 的 名 称 ; 级 别 表 示 界线 最 小 的 显 示级 别 , 如 省 边 界线 级 别 为 8 , 当 地 图 级 别 大 于 等于 8 时 区 域 省 边 界 线 才 显 示 。 区 域界线 的 属 性 字 段 和 属 性表 如 图 3 . 7 和 图 3 . 8 所示 。

对 于河流湖 泊 和 海洋数据 , 字段 中 主 要 包含 类别 、 名 称 和 级 别 等 。 类 别 是 为 了 区 分 不 同 的 水 系 , 主 要包 括河流 、 湖 泊 和 海 洋等 ; 名 称表示水 系 的 名 称 ; 级 别 表示 界 线 最 小 的 显 示级 别 , 如 湖 泊 的 级 别 为 8 , 当 地 图 级 别 大于 等 于 8 时 湖 泊 才显 示 。 水 系 的 属 性字段和 属 性表如 图 3 . 9 和 图 3 . 1 0 所示 。

3.6 本章小结

本 章 主 要 介 绍 了 基 于 Ma p b o x 的 We b 制 图 系 统 的 设 计 , 主 要 内 容 包 括 We b 制 图 的 功 能 、 s e rv i c e 服 务 、 制 图 构 成 中 辅助 功 能 、 数据库 设 计和 系 统流程 的 设 计 , 并对 设计 流程进行 详细 的 介 绍

4. 关键技术实现

4.1 Shapefile格式 向MVT格式转换

4.1.1 数据格式转换流程图

为 了 将 S h ap e fi l e 格 式 文件转 换为 Ma p b o x 的 MV T 格 式 的 文 件 , 以 达 到 快 速高 效 显 示 高分辨率地 图 的 目 的 。 首 先 需 对 S h ap e fi l e 数据 根据 切 片 地 图 We b 服务 ( WMT S ) 标 准 进行 解 析读取 和 切 片 处理 , 然 后 在 I n t e l l i J I D EA 的 开 发环 境 下 利 用 o r g . o p e n g i s 类库 、 c o m. v i v i d s o l ut i o n s . j t s 类库 和 Ge o To o l s 进 行 二 次开 发 , 对 S h ap e fi l e 数据 进行 遍 历 读入 内 存 ; 接着读 取切 片 数据 , 分 别 对地理 空 间 信 息 和 属 性进 行转换 , 其 中 , 地理 空 间 信 息 按 点 、 线 和 面 分 别 进 行 投影和 编 码 转换 , 属 性转换 为 t a g s 整 数对 和 k e y/ v a l u e 键值对 ; 最 后 , 经过 Go o g l e P r o t o bu fs 编 码 , 保存 为 MVT 格式 , 自 动 完成 数据 格 式 的 转 换 。

如 图 4 . 1 所示 , Shapefile向MVT数据 批量 自 动 转 换 的 具 体技 术流程包括如 下 六 步 :

1 ) 通过 o r g . o p e ng i s 类 库对 S hap e fi l e 进行 数据 解 析 , 获取 其地 理 空 间 信 息 和 属 性信 息 , 其 中 , 地理 空 间 信 息 包 含 点 、 线 和 面 几 何要 素 ;

2 ) 根据 WMT S 标准对 S hap e fi l e 进行切 片 , 获取切 片 数据 ;

3 ) 通过投影转换 , 将地理 空 间 坐 标 的 经纬 度转换为 瓦 片 像 素 坐标 ;

4 ) 将 几 何 图 形转换为 ge o me t ry ;

5 ) 遍 历 属 性信 息 , 转 换 为 以 ke y/v al ue s 键 值对存 储 的 Has hMap ;

6 ) 对 ge ome try 和 ke y/ va l ue 键值对进 行编 码 , 生 成 MVT 格 式数据 。

4.1.2 投影转换

几 何 图 形 在 数据 渲 染 时 通过 空 间 参考 以 及 经纬 度 坐标 确 定 具 体 位 置 , 以 保 证 数据 的 正 常 显 示 。 S hap e fi l e 本 身 具 备 空 间 参 考信 息 , 而 MVT 数据 不 包 含 空 间 投影 参 考 和 瓦 片 的 边 界 [ 6 8 ] , 因 此 需 要 进 行 投影 转 换 。 MVT 几 何 图 形 坐 标 系 是 以 瓦 片 的 左 上 角 为 坐标 系 原 点 , X 轴 向 右 为 正 , Y 轴 向 下 为 正 的 坐标 系 来 计 算 的 像 素 值 。 可 首 先 参 照 WMT S 标 准 计 算 出 瓦 片 的 地 理 范 围 , 筛 选 出 s hap e fi l e 中 符 合 瓦 片 范 围 内 的 几 何 图 形 , 再将 几 何 图 形 地理 坐 标 转 换 为 瓦 片 坐 标 。 具 体 流程 如 图 4 . 2 所示 。

1 ) 由 瓦 片 的 级 别 和 WMT S 标准 计 算本 级 别 地 图 包 含 瓦 片 的 行 数和 列 数 , 行数 : r o ws = 2 ( 瓦 片 级 別 一 丄 ) , 列 数 : c o l umn s = 2 ( 瓦 片 级 别 ) ;

2 ) 由 瓦 片 行 列 数计算单个 瓦 片 的 宽 高 , 即 瓦 片 所 占 经度纬 度 的 大小 , 宽 度 ( wi dt h ) 为 3 6 0 度经度 除 以 歹ij 数 : wi d t h = 3 6 0 / c o l umn s , 高度 ( h e i ght ) 为 1 8 0 度 纬 度 除 以 行数 : he i g ht = 1 8 0 / r o ws ;

3 ) 由 瓦 片 的 行 ( x ) 列 ( y ) 号 和 单个 瓦 片 宽 高计算 瓦 片 的 范 围 , 包含 瓦 片 的 最 大 最 小 经 炜 度 , 瓦 片 最 小 经度 ( mi n Lo n g i t u de ) 为 单 个 瓦 片 的 宽 带 乘 以 行 号 得 到 瓦 片 左 边 界 距 地 图 经 度 1 8 0 度 的 距 离 , 再 减 去 1 8 0 度 : mi nL o n gi tud e = wi dth * x - l 8 0 ; 瓦 片 最 大 经 度 为 最 小 经 度 加 上 瓦 片 宽 度 : ma x L o n g i tud e = wi d t h * ( x+ 1 ) ; 瓦 片 最 大炜 度 为 瓦 片 的 长度 乘 以 列 号 得 到 瓦片 上边 界距 北 炜 9 0 度 的 距离 , 再 用 9 0 度 减去 这个距 离 : ma xL at i t ud e = 9 0 - he i ght * y ; 瓦 片 最 小 纬 度 为 瓦 片 的 上 边 界 炜 度 减 去 瓦 片 长 度 : mi nLat i tud e = 9 0 - he i ght *( y+ 1 ) ; 生 成 的 瓦 片 范 围 数组 ;

4 ) 根据 瓦 片 范 围 数组计 算 S ha p e fi l e 的 几 何 图 形坐标 在 瓦 片 中 的 比 率 , 经 度 在 瓦 片 中 的 坐 标 比 率 ( r at i o X ) 为 几 何 图 形地 理 经 度 减 去 瓦 片 的 最 小 经度 得 到 几 何 图 形 坐 标 距 瓦 片 左 边 界 的 距 离 , 再 除 以 瓦 片 的 宽 度 得 到 比 率 : r at i 〇 X= ( l o ng i t ude - mi nLon g i tud e ) /wi dt h ; 炜 度 在 瓦 片 中 的 坐 标 比 率 ( rat i o Y ) 为 瓦 片 最 小 维度减 去 几 何 图 形地理纬 度 得 到 距瓦 片 上边 界 的 距 离 , 再 除 以 瓦 片 长度 得 至l j 比 率 : r at i o Lat i tude = ( max Lat i tud e - l at i tud e ) /he i ght ;

5 ) 根据 经纬 度 比 率 计 算 几 何 图 形 的 瓦 片 坐标 , 即 比 率 乘 以 瓦 片 宽 度 , 几 何 图 形 的 瓦 片 横 轴 坐 标 ( t i l e X ) : t i l e X= wi d t h * r a t i o Lo ng i tude , 纵 轴 坐 标 t i l e Y : t i l e Y=h e i ght * r at i o L a t i tude ;

4.1.3 空间信息几何编码

几 何 数据 经 过投影转 换后 , 生成 矢 量 瓦 片 坐 标 , 按 MVT 数据 格式 要 求 , 需 将 瓦 片 坐 标 按 Go o gl e Pr ot o c o l B ufe r s 规 则 进行 空 间 几何编 码 , 对 应 图 4 . 1 的 编 码 , 生成 MVT 格 式 。 瓦 片 坐 标 在 MVT 数据 格 式 中 对 应 ge o me try 字 段 , 该 字 段 被 编 码 为 3 2 位无符 号 整 数 序 列 , 每 个 整 数都 是 一 个 指 令 ( C o mman d l nt e g e r ) 和 一 个 参 数 ( P ar ame t e r l nt e g e r ) 。 矢 量 瓦片 在 编 码 过 程 中 , 可 以 根据 不 同 的 缩 放 级 别 和 细 节 , 不 同 程度地 简 化坐标 。 当 地 图 进 行 小 级 别 的 缩 放 时 , 无 需 将 所 有 数据 都 返 回 , 而 是在 服务 器端 简 化 数据 再 返 回 , 缩 短 了 数据 传输 时 间 , 加 快 了 数据 解 析速度 和 效 率 , 使 地 图 渲 染 显 示 过 程 更 为 顺 畅 。

由 于 MVT 文 件 可 存 储 点 、 线 、 面 等 多 种 几何 类 型 , 而 S hape fi l e 文 件 只 能 存 储 一 种 几 何 类 型 。 将 S hape fi l e 文件批 量 自 动 转 换 成 MVT 文 件 时 , 需 判 断 并 根据 S h ap e fi l e 文 件 的 几 何 类 型 ( 点 、 线 、 面 等 ) 分 别 进 行 转 换 。 本 文 在 Int e l l U I D EA 开 发 环 境 基 于 Ma p b o x 的 解 析 器 和 生 成 器 , 结 合 MVT 特性 , 分 别 对 点 、 线 、 面 等 不 同 几何类 型 进 行转 换 。

1 ) 点 类 型 。

通过 o rg . o p engi s 类库 读 取 S hap e fi l e 的 点 数据 ; 将 点 数 据 经 投 影转换 为 瓦 片 坐 标 , 将投影 转 换 后 的 瓦 片 坐标 通过 c om . vi vi d s o l ut i o n s . j t s 类 库 生 成 点 图 形 ; 通过 no . e c c . ve c t ort i l e 进 行 编 码 。

2 ) 线 类 型 。

通过 or g . op e ngi s 类库 读 取 S hap e fi l e 的 线 数据 , 获 取 线 数 据 的 节 点 坐标数组 ; 遍历 节 点 数组 , 并通过 投 影 转换 为 瓦 片 坐 标 ; 将 瓦 片 坐标 数 组通 过 c o m. v i v i ds o l ut i o n s . j t s 类 库 生 成线 图 形 ; 通过 no . e c c . v e c t o rt i l e 进 行 编 码 。

3 ) 面 类 型 , 分为 简 单面和 复 杂 面 。

对 于 简 单 面 , 通过 or g . op e n g i s 类 库 读 取 S hap e fi l e 的 面 数据 , 获 取面 数据 节 点 坐 标 数组 ; 遍 历 节 点 数 组 , 通 过投影转 换 为 瓦 片 坐标 数 组 ; 将 瓦 片 坐标 数组 通 过 c o m . vi v i d s o l ut i o n s . j t s 类库 生 成 面 图 形 ; 通 过 no . e c c . ve c t or t i l e 进 行 编 码 。 复 杂 面 又 包 含 外 部 面 和 内 部 面 , 通 过 o r g . o p e n g i s 类库 读 取 S hap e fi l e 的 复 杂 面数据 , 生 成 一 个 外 部 面和 一 组 内 部 面 , 将 外 部 面 按 简 单 面方法生成面 要 素 , 遍 历 内 部 面 , 获 取 面 数据 节 点 坐标 数 组 ; 遍 历 节 点 数 组 , 并 通 过 投 影 转 换 为 瓦 片 坐 标 数 组 ; 将 瓦 片 坐 标 数 组 通 过 c o m . v i v i d s o l ut i o n s . j t s 类库 生 成 内 部 面 图 形 ; 通过 no . e c c . v e c t orti l e 进行 编 码 。

4.1.4 属性信息编码

属 性 信 息 编码和 几 何 图 形 编 码类 似 , 属 性 中 的 ke y 记录 和 val ue 记 录 分别 编 号 , 属 性 被编 码 为 一 对 t ag s 整 数进 行 存 储 。 当 重 复 的 字段 名 和 属 性值 的 数 量 大 较 多 时 , 编 码 可 避 免重 复 信 息 的 产 生 , 减 少 数据 冗 余 。 本方案 通过 o rg . o p e ngi s 类 库 读 取 和 遍 历 S h ap e fi l e 的 属 性 数据 , 获 取 有 用 信 息 生 成 map 对 象 , 并 通 过 n o . e c c . v e c t ort i l e 进 行 编 码 。

4.2 地 图渲染技术

4.2.1 矢置瓦片边界融合

随 着 互 联 网 GI S 的 发 展 , 网 络 GI S 极 大 地方便 了 用 户 , 从 人 们 出 行 时 的 路 径 导 航 到 出 行 规划 , 从 目 的 地寻 找 到 附 近 热 点 推 荐 , 人们 越 来越依 赖 网 络地 图 , 更 重 视矢 量地 图 切 片 方法及 切 片 渲 染 融 合 的 研 宄 , 以 获 得更 高 需 求 的 图 渲 染 效 果 和 用 户 体验 。 上 文 说 到 两类矢 量地 图 切 片 的 方法 , 一 是 完 全 保 留 要 素 , 保存 完 整 的 信 息 ; 二 是对 要 素 进行切 割 , 保 留 要 素 的 部 分信 息 。 单纯 的 完 全 保 留 要 素 信 息 数据 冗 余量太 多 , 数据 加 载及 渲 染 时 效 率低 。 由 于 实 际情 况 下 很 多 地 图 要 素 数 据 大 , 比 如 一 条 河流跨越 整个 地 图 , 每 个河 流流 过 的 瓦 片 都要 包 含 整条 河流 , 数据 量 冗 余 太大 , 缺 乏 实 际 可行 性 。 对 瓦 片 内 的 要 素进行切 割 , 只 保 留 要 素 内 的 数据 , 操 作 简 单 , 数据 量 小 , 在 地 图 渲 染 时 瓦 片 交 界 处 会 出 现 隔 断 现 象 , 影 响 用 户 的 视觉 体验 , 效 果 如 图 4 . 3 所示 , 沈塘 高速在 { 1 8 , 2 3 9 5 6 , 4 9 5 2 } 瓦 片 和 其 上 方 、 左 方 的 瓦 片 交接 时 出 现 要 素 截 断现 象 。 针对数据 量 冗 余大和 地 图 渲 染会 出 现 截 断 问 题 , 本 文在 矢量 瓦 片 只 包 含 瓦 片 内 信 息 的 基础上进 行 升 级 ,采用 矢量 瓦 片 切 片 时 , 既 包 含 瓦 片 内 要 素 信 息 , 也 包 含 了 瓦 片 一 定 缓冲 区 域 内 的 数据 , 虽然 这样 程序 复杂 度 上 升 , 但 相 对包含 整 个 要 素 的 瓦 片 数据量少 , 也 不会 出 现 瓦 片 拼接渲 染 时 的 截 断 问 题 。 效 果 如 图 4 . 4 所示 。

矢 量 瓦 片 既包含 瓦 片 数据 , 又包含 瓦 片 边缘一 定 缓冲 区 内 的 数据 , 是 在 正 常矢量 瓦 片 范 围 的 基础 上 , 保持 瓦 片 的 中 心 不 变 , 对 瓦 片 的 上 下 左 右 进 行 一 定 范 围 的 扩 充 , 在 瓦 片 切 割 要 素 时 实 际 包 含 的 要 素 是扩展 范 围 内 的 要 素 , 瓦 片 的 中 心 位置不变 , 确 保 了 数据在 返 回 渲 染 时 不 会 出 现 瓦 片 拼接错误 , 这样 既 减 少 了 数据 量 , 又避 免 了 瓦 片 渲染时 的 截 断现 象 , 如 图 4 . 5 所示 。

Map b o x 按 照 ( l e ve l , X , Y ) 的 方 式进 行 数据 请求 , l e v e l 代 表 瓦 片 的 层 级 数 , X 代表 行 数 , Y 代表 列 数 。 本 文 Map b o x 每个 瓦 片 的 像 素 为 2 5 6 * 2 5 6 。 服 务 器 通过 ( l e ve l , X , Y ) 和 金字塔规 则 , 计算 瓦 片 的 经纬 度 范 围 。 直接对 瓦 片 范 围 内 的 数据进行切 割 , 会 出 现渲 染截 断 的 问 题 , 针对这一 问 题 , 采用 上面 的 方法对 瓦 片 范 围 进 行 边缘扩充 , 实 现方 法 如 下 。

1 ) 确 定 缓 冲 像 素 大小 。

只 有 保证每 次 缓冲 的 像 素 大 小 相 等 , 才 能 保证 地 图 瓦 片 拼接渲 染 不 出 现截 断 。 假定 为 N 个像 素 。

2 ) 在给 定 层 级 下 , 确 定 每个像 素所 占 地 图 的 经纬 度 宽 。

根据 当 前 瓦 片 的 像 素 值 , 计算 在 当 前 层 级 数每个 像 素 代表 的 经讳 度 宽 度 。 使 P i x e l 代表 像 素 值 , Z 代 表层 级 , L 代 表 每个 像 素 所 占 经讳 度 。 经 讳 度 : L= 3 6 0 / ( Mat h . p o w( 2 , Z ) * P i x e l ) 〇

3 ) 计算 带 有 缓冲 像素 的 瓦 片 大 小 。

通过 Mapb o x 客户 端 的 请 求 计算矢量 瓦 片 的 经纬 度 范 围 , 在 计算 范 围 的 基础 上进行 范 围 扩 充 , 以 保证地 图 渲 染无截 断 。 上 文 己 说 明 瓦 片 范 围 的 计 算 , 这 里 假 设 己 经 计 算 出 范 围 , 用 o ri g i nx Mi n 、 o r i g i ny Mi n 、 o r i g i nx Max 、 o r i g i nyMax 代表 瓦 片 的 最 小 经度 、 最 小 炜 度 、 最 大经 度 、 最 大 维度 范 围 。 扩 充后 的 范 围 Xmi n 、 Xmax 、 Ymi n 、 Ymax 代 表 瓦 片 的 最 小 经度 、 最 小 炜 度 、 最 大经度 、 最 大 维度 范 围 。 最 小 经度 : Xmi n = o r i g i nx Mi n - N * L ; 最 大经 度 : Xmax = o r i g i nx Max + N * L ; 最 小 维度 : Ymi n = o r i g i ny Mi n + N * L ; 最 大 维度 : Yma x = o r i g i nyMax - N * L 。

4 ) 对矢量地 图 瓦片 范 围 内 的 地理要 素进行切 割 。

4.2. 复杂多边形的绘制

由 于 Map b o x 地 图 渲 染 引 擎 的 原 因 , 在 大 比 例 尺地 图 渲 染 中 , 对 于 复杂 多 边形 , 存在 忽 略 多 边形节 点 的 渲染 问 题 , 将 复杂 多 边形 渲 染成 简 单 多 边形 , 更 改 了 要 素基 本轮 廓 。 对用 户 来说 这 是 一 个错误 , 不 能在 此 基础 上进 行 正 确 的 应 用 分 析 , 因 此对于 复 杂 多 边形 要 进 行 特殊处 理 。 考虑 到 分 析应用 是在 小 比 例 尺 的 基础 上进行 的 , 大 比 例 尺进行 简 单 的 阅 读 , 因 此在 大 比 例 尺 下 采用 复杂 多 边 形抽 稀 的 方法进行 数据 精 简 以 解决这 一 问 题 。 因 此 , 在 读取 s hape fi l e 数据 时 , 需 要进 行 要 素 判 断 , 对 复 杂 多 边形进行节 点 筛检 , 在 保证地 图 阅 读 的 情况下 减 少 复杂 多 边 形 的 节 点 数 , 实现过程 如 下 。

1 ) 根据 请 求 计 算 瓦 片 范 围 ;

2 ) 通过 瓦 片 范 围 进 行 数据 库 筛选 ;

3 ) 在 筛 选结 果 中 进行 复 杂 多 边 形抽 稀 , 每十个 节 点 中 选 出 一 个 节 点 代表 本 节 点 , 在 地 图 渲 染 时 就 不会 出 现 复 杂 多 边形 完全 变形 的 问 题 。

4.3 Web在线制图

Mapb o x 的 单 个 MVT 数据 文件 中 图 层 中 必 须 至 少 包 含 点 、 线 、 面和 未 知 四 种 要 素 中 的 一 种 , 也 可 同 时 包 含 多 种 要 素 。 对 于 点 要 素 在 制 图 时 主 要 配置 图 标 、 字 体 、 颜 色 等 。 对于 线 要 素在 制 图 时 主 要 配置颜 色 、 宽 度 、 线 线 交 接 方 式 和 字 ' 体等 。 对 于 面要 素 在 制 图 时 主 要 配 置颜 色 、 字 体 和 图 标 等 。 对 于 不 同 要 素 制 图 要 求 不 同 , 因 此要 对 不 同 要 素 的 制 图 进 行 研 究 。

4.3.1 点制图研究

地 图 世 界 中 点 要 素 具 有 重 要 的 作 用 , 代表 地物 中 重 要 的 景 点 、 商 店 、 酒 店 和 公 共 设 施 等 。 为 了 在 地 图 中 清 晰 简 洁 且 能 完 全 表达地理 信 息 , 不 能将 所 有 的 点 要 素 按 统 一 规 则 进 行地 图 配 置 , 即 图 标 、 字 体 、 大 小 颜 色 等 一 样 , 要 进 行 合 理规 划 , 主 次 分 明 , 对 于 不 同 点 要 素 和 同 一 点 要 素 的 不 同 级 别 , 要 进 行 不 同 的 配置 。 例 如 , 对 于 重 要 地物 要 进 行 着 重 显 示 , 对 于 次 要 地物 , 只 显 示地 物 名 字 等 。 针对 以 上 分 析得 出 下 面 五 种 情况 。

1 ) 有图标有文字的配置

用 户 对 于 地 图 中 的 图 标 具 有 较 强 的 识 别 性 , 一 目 了 然[ 6 9 #] , 对 于 地标 性 的 点 要 素 , 既 要 有 图 标 也 要 有 文 字 , 使用 户 在 快速定 位 到 图 标后 , 再 通 过地物名称 判 断 是 否 是 需 要 的 地物 。 比 如 , 餐 馆 添 加 “ 刀 叉 ” 的 标 志 M , 用 户 可快速 定 位 到 刀 叉 的 图 标 位置 , 再 进行餐馆 名 判 断 , 从而 可 以 快速找 到 目 标 。

2 ) 有图标没文字的配置

图 标 具 有单 义 性 , 一 种 图 标 只 能 表达 一 种 事 物[  ̄ 。 对 于 用 户 潜 意 识 中 知 道 的 地物 , 又不 需 要 知 道 名 字 的 , 可 以 只 进行 图 标标 识 , 而 没 有 地物 名 称 。 这样 设计可 提高用 户 的 可读性 , 也 是地 图 界 面 简 洁 。 比 如 , 厕 所 标 志 , 用 户 只 需 要 知 道厕 所 的 位置 , 能在 需要 的 时 候找 到 即 可 , 而不 需 要知 道厕所 的 具 体 名 字 。

3 ) 没图标有文字的配置

对 于 一 般地物 , 知 名 度低 没有 标 志 性 , 用 户 在 粗 略定 位 时 不 会用 到 , 会 先 找 到 周 围 比 较 有代 表性 的 地物 , 只 有在 放 大 到 一 定 级 别 时才会显 示 , 因 此 只 需 要 进行 文字 标 注 。

4 ) 同一点要素不同级别的配置

对于 同 一 地物在 不 同 级 别 时 配置 也 不相 同 , 在 小 比 例 尺 下地 图 界 面包 含 的 内 容 多 , 不 可 能把所 有 的 地物 包 括进 来 , 也 不 可 能 将 所有 的 地物 都进 行 图 标和 文 字 标 注 , 只 是提 供 一 个 简 单 的 地 图 概 略 图 , 因 此与 大 比 例 尺 相 比 , 有 的 地物 不进行 文 字 标注 , 或 图 标形状 不 同 。 比 如 , 台 州 市政府在地 图 1 1 级 时 , 标注 “ 红 点 ” 图 标 和 “ 台 州 市 ” 标注 。 在 1 6 级 时 , 标注 “ 红 点 ” 图 标 和 “ 台 州 市 人 民 政 府 ” 标注 。

5 ) 不同地物配置不同

对于不同地物进行不同的配置 , 对 于 显 著 性 和 应 急 性地物 要 进 行 显 著 标 志 , 在 字 体 、 颜 色 和 大 小 等方面进行 设 置 , 保证用 户 在 使用 地 图 时 , 能够 以 最 快 的 速度 找 到 。 比 如 , 医 院 是 具 有应 急 性 的 地 物 , 在 同 等级 下 , 其他地 物 字 体采用 黑 色 , 医 院 标 志 采用 红色 , 起 到 醒 目 的 作 用 , 便于 用 户 查 找 。

4.3.2 线制图研究

线 要 素 在 地 图 制 图 中 占 有重 要 地 位 , 是连接各个地物 的 桥 梁 , 线 要 素包括 道 路 、 水系 中 线 、 行政 区 域 界 线 、 桥 梁和 匝 道 等 。 根据线 要 素 不 同 类 型进行不 同 的 线 要 素 配 置 , 线 要 素渲 染 效果 受 图 层 的 上 下位置 、 线 的 宽 度 、 线 的颜色 、 线 的 端 口 样 式 、 截 断线 ( 铁路 ) 、 中 线 、 边线 、 线 标注 和 透 明 度 等 的 影 响 。 为 了 在 地 图 中 清 晰 简 洁完 全表达地 理信 息 , 在 地 图 制 图 中 要 充 分 考虑 线 要 素 的 类型 ,分级 别 分类 型地对 线 要素进 行 配置 。 针对 以 上 分 析 制 图 做 到 了 :

1 ) 等级分明

在线 要 素 中 , 主要 是各 级 道路 , 如 地铁 、 铁路 、 国 道 、 省 道 、 高速 道 路 、 乡 镇村道 、 县道 、 匝 道 、 乡 路 小路 机耕路 、 9 级 路 、 人 行 路和 其 它 道路 。 通过 道路等级对道路进 行 分类 , 针对 每 一 类道 路 , 制 定 一 套制 图 规 则 。

2 ) 确定图层的上下位置

在 显示世 界 中 , 道路有地面 的 、 地 下 的 和 地上 的 , 它 们 可 能 会 交 叉 , 但 是 不 是 连接在 一 起 了 , 会有 上 下 层 关 系 。 对 于 上 下 层 道 路 在地 图 中 不 能在 一 个平 面 上 , 要在 地 图 上展 现 出 来 , 因 此 要 确 定 上 下 层 关 系 。

3 ) 中线边线

在 地 图 制 图 渲 染 中 , 对 于 国 道 、 省 道和 高 速 道路等 类 型 的 道路 要 有 中 线 和 边 线 , 增 加 了 视觉 效 果 , 边线 在 道路上 下 层 交 叉 渲 染时 , 体现道路 的 上 下 层 关 系 。

4 ) 标注方向

在道路标注时 , 沿 道路方 向 标 注 , 在地 图 旋 转 时 标 注始 终 保持 正 常 视 角 的 方 向 。

4.3.3 面制图研究

面 要 素 在 地 图 制 图 中 起 基本框 架 作 用 , 相 对 于 点 要 素 和 线 要 素 , 面 要 素 制 图 相 对 简 单 , 但 同 样 需 要 分类 , 按 类 别 进 行 制 图 。 面 制 图 要 进 行颜 色 、 标 注 、 边 线 和 透 明 度 的 设 置 。 地 物 中 的 面 要 素 按 制 图 规 则 分 为 居 民 地 、 水 系 和 草 地 三 大 类 。

4.4 创建字体

地 图 制 图 过 程 包 含 字 体 的 选 择 , Map b o x G L J S 使用 pr o t o b u f 格 式 的 . pb f 字 体 。 Map b o x 没 有 字 体提 供 商 , 市 场 流 行 的 字 体 是 TTF ( True Ty pe F o nt ) , TT F 是 App l e 公 司 和 Mi c r o s o ft 公 司 共 同 推 出 的 应用 在 wi ndo ws 上 的 字 体文 件 格 式 [ 7 2 ] , Mapb o x GL 无法 直接加 载使 用 , 要 用 Mapb o x GL J S 进 行地 图 制 图 字 体 渲 染 , 需 要 将 TTF 字 体转 换 为 . pbf 。 本节研 宄 如 何将 TTF 字 体转 换 为 Map b o x 的 . p b f 字体 。

Mapbox GL J S 加 载文字 不 是 一 次性加 载整 个字 体库 , 而 是 采 用 的 分 段 式 的方法 加 载 。 采 用 分 段 式 加 载字 体 可 以 避 免 客 户 端 响 应 时 间 过长 , 影响 用 户 体验 。 对 于 英 文 字 体 , 整 个 字 体 库 不 大 , 一 次 性 加 载 不 会 出 现 响 应 时 间 过 长 的 情况 。 若 是 中 文 字 体 , 微 软 雅 黑 字 体 有 1 0 多 兆 , 一 次 性 加 载 肯 定 会 出 现 加 载 时 间 过长 的 问 题 。 Mapb o x G L J S 具 体分 段 加 载 步骤如 下 :

1 ) 根据 字 符编 码 范 围 进行 分 段 , Uni c o d e 字 符采 用 2 个字节 编 码 , 所 以 字 符 的 编 码 的 范 围 是 [ 0 , 6 5 5 3 5 ] 。

2 ) Mapb o x GL J S 按 照 每段 长度 2 5 6 的 方式 , 平均 分 为 若干段 。 每 一 段字 体 请 求 的 命 名 方 式 为 s t art - e n d . p b f 。 比 如 第 一 段 是 0 - 2 5 5 . p b f , 则 第 二 段 是 2 5 6 - 5 1 1 _ pb f , 第 三段 是 5 1 2 - 7 6 7 . p b f 直 到 e S l S C XS S S S . p b # 7 3 ] 。 no d e - fo n t ni k 工 具 是 Gi t h ub 的 开源 库 , 不 是 可 以 直接运 行 的 可 执 行程序 , 工 具 里 面 的 AP I . md 文 件 列 出 可 供使用 的 接 口 , 用 于 把 T TF 字 体转 换 为 Mapb o x G L 使 用 的 p r o t o bu f 格 式 的 . pb f 字 体 。

按 照 工 具 内 的 README . m d 文件 说 明 , 对 no de - fo nt n i k 进 行 环 境 配 置 。 最 后 借助 接 口 写 代码实 现待转 换 字体 的 最后 转换 , 输 出 转 换 结 果 。 下 面 是转 换 代 码 。

4.5 创建图标

Mapbo x GL 的 图 标采用 图 像拼 合技术 。 图 像 拼 合 就 是 单 个 图 像 的 集 合 , 将 所 有 的 地 图 图 标 制 成 一 幅 图 片 和 一 个 j s o n 文件 , 图 片 中 包 含 所有 的 图 标 , j s o n 文 件 中 有 图 标 的 描 述属 性 信 息 , 可 以 通过 j s o n 文 件 准 确 的 在 图 片 中 取 出 图 标 。 对 于 有 许 多 图 像 的 网 页 可 能 需 要 很 长 的 时 间 来 加 载 和 生成 多 个 服 务 器 的 请求 , 使用 图 像拼 合会 降 低 服 务 器 的 请 求 数 量 , 并 节 省 带 宽

Mapb o x 图 标 生 产 通 过简 单 人 工 P h o t o s hop 合成 和 j s o n 文 件 配置太 复 杂 , 且 易 出 错 , 通 过 G i t H u b 提 供 的 s p r i t e 工 具 进 行 制 作 既 方便 又 准 确 。 下 面 是 s p r i t e 的 图 标 拼 合 过 程 。

1 ) 图 标 制 作 。

根据 地 理 要 素 的 性质 设 计 生 产 图 标 , 图 标 大 小 格 式相 同 , 在 Ma p b o x 制 图 过 程 中 , 通过 s pr i t e 生 成 的 j s o n 文 件 的 p i x e l Rat i o 属 性 统 一 调 节 图 标 的 大 小 , 方便 快捷 。

2 ) 图 标 合 成 。

通过 s prit e 进行 图 标 合成 , 生成 图 片 和 j s o n 文 件 。 图 片 中 包 含 所有 的 图 标 。 j s o n 文 件 中 包 含 图 标 的 描 述信 息 : 图 标 的 名 称 、 p i x e l Rat i o 、 wi dth 、 h e i g ht 、 x 和 y 。 图 标 的 名 称 是 图 标 的 唯 一 i d , 用 来 筛 选 图 标 ; p i xe l Rat i o 是 图 标 的 像 素 信息 , 用 来 调 整 图 标 的 大 小 ; wi dt h 和 h e i ght 代 表 图 标 的 宽 长 ; 以 图 片 左 上 角 为 坐 标 原 点 , 向 右 为 y 轴 , 向 下 为 x 轴 的 坐标 系 , x 和 y 代 表 图 标 左 上 角 在 图 片 坐标 轴 中 的 位置 。

4.6 本章小结

本 章 主 要 研 宄 了 基 于 Mapbo x 的 We b 制 图 过程 中 的 关键技术 : 数据 格 式转 换 、 地 图 渲 染过程 中 遇 到 的 问 题 、 不 同 要 素之 间 We b 制 图 研 宄 以 及字 体 图 标 的 制 作 问 题 , 并 针 对 问 题 提 供 了 解 决方案 。

5. 系统实现

5.1 矢量瓦片转换

矢 量 瓦 片 转换 是服务器端重要 的 功 能 , 本节 主 要 讲述 矢 量 瓦 片 转换 的 实 现 类 图 。

矢 量 瓦 片 生成 中 涉及 到 的 主要类 的 关 系 如 图 5 . 1 所示 。 I Ti l e Wri t e r 负 责 矢 量 瓦 片 数据 的 生成 。 I F e a t ur e P r o v i d e r 的 对 象 生 成 Z F e a t u r e s 对 象 , I Ti l e Wr i t e r 包 含 对 ZF e a tur e s 转 换 为 瓦 片 坐 标 和 对 矢 量 瓦 片 进 行 编 码 的 操 作 接 口 wri t e 。 Ge oj s o n Ti l e Wr i t e r 和 MVTTi l e Wr i t e r 实 现 I Ti l e Wr i t e r 规 定 的 接 口 , 分 别 负 责 生 成 G e oj s o n 和 MV T 格 式 的 矢 量瓦 片 。 本 系 统 瓦 片 数据 是 以 MVT 格 式存 储 的 , 主 要 生 成 MVTTi l e Wr i t e r 类 。

与 I Ti l e Wr i t e r 类 有 着 组 合 关 系 的 类 主 要 有 G e o Ut i l 、 Ve c t o r Ti l e En c o d e r 、 Z F e atur e s 等 , 如 图 5 . 2 所示 。 其 中 , G e o Ut i l 是 s hape fi l e 要 素转 换 为 瓦 片 坐标 的 类 , 主 要 针对 的 矢 量 瓦 片 地理 要 素 的 坐 标 进 行操 作 , 用 户 拿 到 该对 象 , 就可 以 调 用 t r ans fo rm 函 数 , 对 要 素 进 行 相 应 的 操 作 ; Ve c t o r Ti 丨 e En c o d e r 是通 过 e n c o d e 函 数对 矢 量 瓦 片 进 行编 码 生 成 MV T 的 操 作 类 ; Z F e a t u r e s 是 s hap e fi l e 的 要 素 。 下 面主 要 介 绍 Z F e at ur e s 的 生 成 。

Z F e atur e s 是 Z F e at u r e 的 集合 。 Z F e at ur e 是 经 过 数据 读取 、 瓦 片 范 围 筛选 和 投影转换 获 得 的 。 ZF e atur e s 与 I F e at ur e P r o v i d e r 、 〖 P r oj e c t i o n 、 Ti l e 等 函 数 有 关 。 I F e at ur e P r o v i d e r 主 要 负 责 连接 数据库 , 负 责 生 成 Z F e at ur e s 。 I P r oj e c t i o n 主 要 负 责 地 理 要 素 数 据 投 影 转 换 。 Ti l e 主 要 提 供 瓦 片 标 号 。 P o s t g i s P mvi d e r 和 S hap e fi l e P r o vi d e r 是 I P r oj e c t i o n 接 口 的 实现类 , 针对 不 同 的 数据 存 储 , 实 现 不 同 的 类 。 P o s t g i s P r o v i de r 连接阿 里 云 的 P o s t G I S 数据 库 , S h ap e fi l e P r o v i d e r 连接 本 地数据 。 本 文采用 阿 里 云 数据 库 , 实现 P o s t g i s P r o v i de r 类 , 通过 g et F e at ur e 函 数 生成 ZF e at ur e s 。 I P r oj e c t i o n 主 要 负 责 要 素 的 投影转换 。 C GC S 2 0 0 0 是 的 实现 类 。 P r oj e c t F a c t o ry 是 C GC S 2 0 0 0 的 生产 工 厂 。 C GC S 2 0 0 0 将要 素地理坐标转换 为 瓦 片 坐标 。 类 图 如 5 . 3 所示 。

image-20220316001609980

5.2 客户端功能

系 统不仅 实现 了 地 图 操 作 的 基本 功 能 : 地 图 放大 、 缩 小 、 平 移 、 刷 新 、 复 位 、 距 离量测 和 面 积量测 等 , 还实现 了 在 线 地 图 配 图 、 样 式文 件加 载导 出 、 地 图 切 换 、 查 询 和 地 图 制 图 对 比 等功 能 。

5.2.1 系统主界面

系 统 的 主 界面主要 包括 地 图 显示 、 地 图 基本 操作 、 查 询 和 制 图 等 相 关 功 能 , 系 统 的 主 界 面 如 图 5 . 4 所示。

5.2.2 在线地图配图

在 线 制 图 功 能 分 别 实 现 了 对 点 、 线 、 面三 种 地理要素 的 制 图 功 能 。 G I S 中 地 图 制 图 就 是将要 素 的 颜色 、 大 小 、 宽 度 、 走 向 、 图 标名 等作 为 参 数 , 按 属 性 对地 图 的 要 素 进行渲 染 。 要 素 的 渲染流程 图 如 图 5 . 5 所示 。 要 素 渲染主 要 步骤 如 下 :

1 ) 属 性赋值 判 断 :

判 断用 户 对属 性 赋 值 是 否 正 确 ;

2 ) 地 图 渲 染修 改 :

通过 Map b o x G L 修 改地 图 渲 染方 式 ;

3 ) 内存中样式表修改 :

修 改 内 存 中 样 式表 的 相 关属 性 , 以 方便样 式表 的 导 出 保存 。

1 . 点要素制图

用 户 设置参数 , 系 统便对其进行地 图 渲染 , 然后修 改样 式表 内 容 , 以 方便 样 式表 的 输 出 , 参数 分 为 函 数 型 和 非 函 数型 。 非 函 数 型 参数 , 参数 内 容 只 有 一条 参数值 。 函 数 型 参 数又分 为 级 别 - 值 函 数和 属 性- 级 别 - 值 函 数两类 , 级 别 - 值 函 数 参数是对 同 一 图 层 内 同 一 要 素不 同 级 别 赋参 数值 , 根据 参 数值渲 染要 素 , 不 同 级 别 渲 染方 式不 同 。 属 性- 级 别 - 值 函 数 参 数 是 由 属 性值 、 地 图 级 别 和 渲染 值 三部 分组成 , 首 先通 过属 性值 筛选 出 要 素 , 再对 要 素不 同 级 别 赋参 数值 , 达 到 不 同 级 别 不 同 属 性要 素不 同 的 渲 染方 式 , 制 图 更 灵 活 。 对 于 不 同 的 参 数 类型 , 系 统 设计 完成 不 同 的 功 能 , 图 5 . 6 ? 图 5 . 1 0 是 以 点 要 素 中 的 兴 趣 点 的 颜 色 属 性 为 例 的 制 图 界面 。

图 5 . 6 为 点 要 素 的 兴 趣 点 图 层 , 整个 图 层 字体 设 置 为 黑 色 , 由 图 可见字 体 颜 色都 为 黑 色 。

由 图 5 . 7 和 图 5 . 8 可 以 看 出 , 点 要 素 的 兴趣点 图 层采用 级 别 - 值 的 参 数赋值 方法 , 同 一 图 层 内 要 素 不 同 级 别 采 用 不 同 的 渲染方式 , 例 如 台 州 市 黄 岩 区 第 三 人 民 医 院 在 1 4 和 1 5 级 要 素字 体颜色不 同 , 用 户 在 配 图 过程 中 还 可 以 点 击 “ 添 加 ” 按钮 , 添加 一 组包含级 别 和 值 的 参 数 , 客户 端 会根据 参数重新对 本 图 层进 行渲染 , 这极 大地 方便 了 对 同 一 要 素不 同 比 例 尺不 同 渲染方式 的 制 图 。

由 图 5 . 9 、 图 5 . 1 0 可看 出 兴趣 点 图 层 在 不 同 级 别 不 同 属 性 的 要 素渲染方 式 不 同 。 首 先 通过 “ s ty l e name ” 属 性进 行 筛选 , 在 1 4 级 别 时对 “ s t yl e n a me = 医 院 ” 的 要 素 赋 值 为 r gb a ( 1 7 9 , 8 0 , 1 1 3 , 1 ) , “ s t y l e n am e =公 园 ” 的 要 素 赋值 r gb a( 1 7 9 , 8 0 , 1 1 3 , 1 ) , 其 它 要 素 赋值 为 r gb a( 1 1 5 , 8 1 , 5 7 , 1 ) 。 在 1 5 级 别 时 只 将 “ s t y l e n ame = 医 院 ” 的 要 素 赋值 为 r gb a ( 1 9 , 8 0 , 1 1 3 , 1 ) , 其 它 不变 。 用 户 可 以 点 击 “ 添加 节 点 ” 增 加 一 组包含属 性和 值 的 参 数 , 点 击 “ 添加 ” 增 加 一 组包含 级 别 、 属 性 和 值 的 参数 , 客户 端会 根据 参数 重新对本 图 层 进 行渲 染 。

2 . 线要素制图

线 要 素 同 样按 照 点 要 素 的 分类进 行 设计实现 , 分为 非 函 数 型 参 数 和 函 数 型 参 数 两 大类 , 函 数 型 参 数 又 分 为级 别 - 值 函 数 和 属 性- 级 别 - 值 函 数 两 类 。 线 要 素 的 制 图 功 能 与 点 要 素 相 似 , 限 于 篇 幅 , 本 小 节 以 国 道 为 例 , 只 展示级 别 - 值类 型 的 颜色 制 图 功 能 实 现 图 , 展示 图 为 5 . 1 1 、 图 5 . 1 2 。

由 图 5 . 1 1 和 图 5 . 1 2 可 以 看 出 , 线 要 素 的 国 道 的 中 线 图 层 采用 级 别 ? 值 的 参 数赋值 方法 , 同 一 图 层 内 要 素 不 同 级 别 渲染方式 不 同 , 例 如 二环 南路在 1 4 和 1 5 级 要 素道路 的 颜色 不 同 , 与 点 要 素制 图 类似 , 用 户 可 以 点 击 “ 添 加 ” 增 加 一 组参 数 , 客户 端对本 图 层 进行重新渲染 。

3 . 面要素制图

面 的 制 图 功 能 同 点 要 素 和 线 要 素 相 同 , 本节 不 再 赘述 , 图 5 . 1 3 是面要 素 中 水 系 的 功 能 实现 图 。

图 5 . 1 3 展 示 了 水 系 中 河流面 的 制 图 功 能 , 由 于 采用 了 非 函 数 的 参 数方法进 行 赋值 , 河流面 颜色在 地 图 中 始 终 以 一 种 颜色 呈现 。

5.2.3 样式文件加载导出

系 统实 现 了 制 图 样式表 的 加 载 和 导 出 功 能 , 用 户 可 以 加 载 以 前 配置好 的 样 式表 , 快速 查看配 图 效 果 , 并可 以 通过编 辑 功 能制 图 , 将编 辑 的 样 式 保 存 到 新 加 载 的 样式文件 中 。 用 户 可 导 出 修 改后 的 样 式 文件 , 进 行保 存 , 再 次加 载 可直 1 接使用 。 图 5 . 1 4 为 导入样 式 文件示 例 图 , 图 5 . 1 5 为 导 出 样 式 文 件示例 图 。

5.2.4 地图样式切换

系 统提 供 了 地 图 样 式切 换 功 能 , 通过 点 击不 同 的 样 式 , 客户 端对 数据 重 新 渲 染 , 不 需 要重新加 载 数据 , 便可 以 快速 切 换地 图 风格 , 图 5 . 1 6 为切 换到 深 色 系 风格 的 地 图 示 例 图 。

5.2.5 查询功能

1 ) 属性查询

位置 系 统实现 了 通过要素 名 称定 位 到 要 素 的 功 能 , 在地 图 制 图 过程 中 , 方便快 速 定位到 指 定 位置 , 查看 制 图 效果 , 图 5 . 1 7 为 定 位 到 台 州 市 的 示例 图 。

2 ) 位置查询

属 性 系 统 实现 了 点 击地 图 要 素 查 看 属 性 的 功 能 , 在 制 图 过程 中 , 对 渲 染效 果 不 满意 的 , 可 以 点 击 要 素 查看 属 性 , 通过属 性 查 询 数据库 快速找 出 问 题 , 图 5 . 1 8 为 点 击 要 素 查看 属 性 的 示 例 图。

5.2.6 地图制图对比

系 统 实现 了 地 图 制 图 对 比 功 能 , 在 制 图 过 程 中 , 可 以 通过 与 已 有 的 地 图 进 行对 比 , 对 比 的 两 幅地 图 同 等级 同 范 围 , 方便 查 看制 图 的 不 足 , 快速修 改 , 提 高 制 图 效率 。 图 5 . 1 9 中 左 边地 图 为 要 配置 的 地 图 , 右侧 为 天地 图 , 两 幅地 图 进 行对 比 。

5.3 辅助功能

地 图 制 图 需 要 地理数据 、 字 体和 图 标数据 , 本小 节讲述 了 字 体 和 图 标 的 创 建功 能 。

5.3.1 创建字体

系 统 通 过 桌 面 端 程序 , 安 装 no d e - fo nt n i k 工 具 , 将 tf 格 式 文 件 转 换 成 Map b ox 的 字 体 。 图 5 . 2 0 为 转换 后 的 文件截 图 。

5.3.2 创建图标

首 先通过 P ho to s h op 技术 制 作 小 图 标 , 然后 借助 s p r i te 工 具 , 编 写 桌面程序 ,将 图 标生成 Map b o x 的 图 标 文件 , 包括 p ng 图 标 符 号 合 成 图 片 和 j s o n 图 标 符 号 索 引 文 件 。 图 标 符号 原 始 文 件 如 图 5 . 2 1 所示 , 图 标符 号 合 成 图 片 如 图 5 . 2 2 所示 , 图 标 符 号 索 引 文件如 图 5 . 2 3 所示 。

5.4 性能测试

通 过对 比 , Ma p b o x 渲 染 天 地 图 与 传 统 切 片 天 地 图 渲 染 效 果 相 似 , 可 以 通 过 图 5 . 2 4 对 比 看 出 , 其 中 图 ( a ) 为传 统切 片 天地 图 , 图 ( b ) 为 Ma p b o x 渲染 天地 图 。 但 Ma p b o x 的 地 图 数据 编 码 后 的 体积更 小 , 数据 加 载更 快 。 在 浏 览器 通 过 Ma p b ox 渲 染和 样 式 文件生成地 图 , 用 户 体验 更好 。 下 面 是对两种 切 片 方 式 的 性 能 测 试 。

通过搭 建 了 测 试环 境对 传 统切 片 天地 图 和 Ma p b o x 渲 染 天 地 图 进 行 比 较 , 评价 Map b o x 渲 染服务 的 效 率 。 测 试客户 端采用 J me t e r 来模 拟地 图 瓦 片 访 问 操 作 , 测 试服务 器 端选用 8 G B 内 存 、 E 5 - 2 6 5 0 双 核 至 强 处 理器 2 . 6 0 GHz C P U 、 S S D 固 态硬 盘 , 网 络 采用 1 0 0 Mbp s 网 络 连接 。 在测 试 数据 方面 , 使用 天地 图 浙江 的 矢量地 图 , 占 用 空 间 约 为 4 . 1 5 G 。 测 试方法采 用 对 比 测 试 。 针对 己 经做 好 的 数据 服 务 , 分 别 对 单 个 瓦 片 数据 连续访 问 2 6 0 次 , 测 试结 果 从服务 器 响 应 时 间 方面进 行评 价 。 Map b o x 植染天地 图 与 传 统切 片 天地 图 的 测 试结 果如 图 5 . 2 5 所 示 , 其 中 , 横 轴 表示 2 6 0 次测 试 中 , 统 计 的 服务器 响 应 时 间 的 上 限 , 纵轴 表示服 务 器 响 应 次 数 , 每 个条 柱表示 服 务 器 响 应 时 间 在 大 于 上 一 个 时 间 上 限 到 小 于 此 响 应 时 间 的 次 数 。

由 图 5 . 2 5 可 以 看 出 , Map bo x 渲 染天地 图 服务在 O ms ? 1 5 0 m s 时 间 之 内 响 应 的 为 1 8 6 次 , 约 占 总 测 试 的 7 1 . 5 4 % ; 传 统切 片 天 地 图 服 务在 0 ms ? 1 5 0 m s 时 间 之 内 响 应 的 为 1 5 6 次 , 约 占 总 测 试 的 6 0 % , Map b o x 渲 染天 地 图 用 时 短 的 次 数 明 显 比 传 统切 片 天地 图 多 。 通 过 以 上 测 试 , 基 于 Map b o x 渲 染 天地 图 从 视 觉 上 加 快 了 数据 加 载速度 , 提 高 了 用 户 体验 。

5.5 本章小结

本 章 实现 了 基 于 Ma p b o x 的 We b 在 线 制 图 的 具 体 功 能 , 通过 设 计 类 图 、 分 析制 图 需 要 和 制 图 个 辅 助 功 能 , 系 统编 程实 现 了 矢 量 数据 格式转 换 、 在 线 地 图 制 图 、 辅 助 地 图 快速制 图 等功 能 。

6. 总结与 展望

6.1 总结

本 文 根据 地 图 制 图 的 需 求 , 针对制 图 过程 中 存 在 的 地 图 数据 加 载缓慢 、 地 图 数据 时 效 性 、 地 图 渲 染存在 边界 融 合和 复杂 多 边 形 问 题 、 地 图 We b 制 图 点 线 面 制 图 问 题 等 , 对 制 图 的 相 关 理 论进行 了 研 宄 , 并 设计 研 发 了 基于 Map b o x 的 矢 量 瓦 片 We b 的 制 图 系 统 , 为 其他 类 似 的 We b 制 图 系 统 的 实 现 提供 了 一 种 可 行 的 解 决 方案 。

本 文 主 要 做 了 以 下 三个 方面 的 工 作 :

( 1 ) 完 成 了 s hap e fi l e 数据 向 MVT 数据 的 格式转换 , 创 建 了 字 体 , 创 建 了 图 标 。

( 2 ) 完成基 础 地 理数据 的 属 性 表 设计 , 建立 了 基 础 地理信 息 数据 库 。

( 3 ) 实 现 了 在 线 地 图 制 图 功 能 , 样 式 文件 的 加 载 和 导 出 功 能 , 样 式 文 件切 换 和 查 询 等 功 能 。

6.2 展望

本 文 实 现 的 基 于 Mapb o x 的 矢 量 瓦片 We b 制 图 系 统 是 一 个非 常 复 杂 庞 大 的 系 统 , 系 统 功 能 基本 完 备 , 但每 个功 能模块都 有 继续完 善 的 空 间 , 主 要 从 以 下 几 方面着 手 进 行 改进 。

( 1 ) 增 加 系 统 功 能 。 今后 将 进 一 步 完 善 系 统 , 增 加 系 统 功 能 。

( 2 ) 完 善 系 统交 互 界 面 。 今 后 将进 一 步完 善 系 统 的 交 互 界 面 , 使 界 面 更加 人 性 化 、 更 加 美 观 , 满 足用 户 的 需 求 , 用 户 操 作 更 加 便捷 。

本文作者:风帆远航

本文链接:https://www.cnblogs.com/flying-birds-xyg/p/16011309.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   风帆远航  阅读(1645)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.