地图是一种特殊而重要的文化产品, 它鲜明地体现着一个国家的主权意志和外交立场, 具有严肃的政治性、严密的科学性和严格的法定性, 尤其中国地图因其特定的轮廓直观反映了中华人民共和国领域和管辖的其他海域, 以直观易读的特点体现了国家的主权神圣不可侵犯的宪法精神[1].
目前, 市场上广泛流通的地图产品共有200多种, 主要有地图册、地图集、各类书刊、报纸、影视作品中的地图示意图等. 面对如此丰富的地图产品, 对于如何做好地图监管工作是一项艰巨的任务. 传统的监管手段以人工为主, 通过样图抽查、定期检查的办法, 从现在看, 已经不能满足地图市场日益增长的应用需求.
鉴于目前“问题地图”范围广、存量大、使用率高等问题, 将监管工作信息化、流程化与数字化才是最优解决方案. 采用微信小程序作为前端框架, 群众用户可通过手机拍照上传, 实现对问题地图的精准举报. 系统根据问题地图属性信息自动甄别并发送至辖区监管部门, 实现对问题地图的快速审查. 执法部门可根据审查结果, 依照举报线索和地图申请单位等信息, 快速精准执法. 系统提供全网统一的标准地图下载入口, 地图申请单位或制图单位可按需下载, 促进问题整改以及防止问题重现, 从根本上有效解决问题地图的发生.
1 系统设计 1.1 系统架构本系统采用4层架构的模式, 分别为: (1)云基础设施层. (2)数据层. (3)组件层. (4)应用层. 系统架构如图1所示. 云基础设施层选择租用阿里云服务器ECS, 提供弹性基础设施服务, 包括云数据库资源、云计算资源、云存储与快照、网络安全资源及运维监控服务等. 数据层是指存储系统数据的层, 包括用户注册数据、系统逻辑结构数据以及业务数据. 用户注册数据具体为审图单位信息、申请单位信息、制图单位信息、监管与执法单位信息等. 系统逻辑结构数据具体为系统菜单与权限配置数据、表结构数据、数据字典等. 业务数据具体为标准地图数据、法律法规数据、地名地址数据、国家版图知识数据、地图审核审批意见以及地图批准书附件文档材料以及地图备案数据等. 组件层, 使用组件式开发框架的模式, 提供加密解密组件, 图像切片组件, 图像加载显示组件, 移动端与PC端之间数据传输与接引服务转换组件, 数据查询与统计组件, 数据编辑与导出组件等. 每个公共逻辑组件都是一项微服务, 提供标准JSON格式的数据接口. 应用层也称为应用实体(AE), 提供了包含移动端和PC端两种应用实体, 移动端包含了我的任务, 在线检定, 自检自查, 在线举报模块. PC端提供了图件检定管理, 举证管理, 地图教育管理, 应急地图用图管理, 地图备案管理, 系统配置管理6个应用模块.
1.2 技术架构
技术框架结构如图2所示,分别为基础设施层、存储管理层、服务层、应用层共4层, 每一层级运用的相关技术如下:
(1)基础设施层
本层为切片服务的正常运行提供了基本保障, 包括架设云存储设施、数据库服务器集群、Web应用服务器集群、网络及安全设施, 其中详情如下: ① 服务器操作系统: WindowsServer; ② Web应用服务器: Apache Tomcat; ③ 数据库平台软件: PostgreSQL+PostGIS, MongoDB; ④ 负载均衡/代理服务器: Nginx.
(2)存储管理层
存储管理层主要包括存储空间数据、业务数据和切片数据是数据库, 其中空间数据和业务数据采用的是开源的PostgreSQL数据库来存储和管理, PostgreSQL是目前功能最强大、最先进的开源数据库管理系统[2,3]. 切片文件数据量庞大、服务组件调用频繁, 通过架设MongoDB分布式集群方式来进行部署. MongoDB是一个基于分布式文件存储的数据库, 内核由C++语言编写,可以为Web应用提供可扩展的高性能数据存储解决方案[4]. MongoDB分布式集群[5], 也称之为分片集(sharded cluster). 当数据量比较大的时, 把数据分片运行在不同的机器中, 以降低CPU、内存和IO的压力, 从而提高可用性. 高可用性H.A. (High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间, 以提高系统和应用的可用性.
(3)服务层
系统服务层主要包括基于矢量数据发布的满足OGC标准的WMTS和WebService (Soap、Rest)服务接口, 包括发布的切片服务、切片渲染服务. Web Services是一个平台独立的、低耦合的、自包含的、基于可编程的Web的应用程序, 可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序, 用于开发分布式的互操作的应用程序[6,7]. 在移动应用的数据接引方面, 移动接入网关负责处理移动终端的服务请求, 移动接入网关提供Rest风格的标准Web Service. Rest是一种面向资源的访问架构风格[8,9], 该技术强调系统组件之间交互接口的可伸缩性、通用性、组件的独立性以及用来增强系统的安全性、减少客户端与服务器端的交互延迟、封闭原有遗留系统的中间组件.
(4)应用层
系统应用层为面向行业用户进行, 构建了切片服务系统, 提供面向Web端和移动端的地图切片服务应用.
1.3 功能设计根据业务场景需求, 地图监管的功能设计分为移动端小程序和PC页面端两个部分, 具体如下:
(1)移动端功能
① 我的任务: 面向执法部门, 查收群众举报或者其他监管部门的委托信息, 需要实地核查的工作事项. 提供基于手机端的事项内容的基本描述、图件审查意见以及问题发生地等信息的查看与定位.
② 在线检定: 对授予审图号的地图建立身份识别信息, 并备案地图申请单位与负责人相关信息. 执法人员通过手机扫码审图号二维码, 在线核查地图申请单位、地图版次、图幅内容等是否与审图号匹配, 是否存在违规修改地图内容、冒用审图号或私自篡改审图号等现象, 实现监管工作的移动便捷执法.
③ 自检自查: 建设问题地图线上智库. 提供常见问题地图的描述、国家版图相关知识、地图相关法律法规、因问题地图引发社会关注的相关案例教育以及地图监管工作领域相关通知文件等内容, 并提供全文搜索与详情查看等功能.
④ 在线举报: 提供问题地图拍照和实时上传功能, 提供问题地图文字描述以及自动定位举报地址等功能.
(2) PC端功能
① 图件检定管理: 面向地图审查管理部门, 提供图表化的图件检定的综合管理功能. 提供历史图件检定的查询回溯, 任务图件正在执法的进度查看, 还未开展执法任务图件的线上审查等.
② 举报信息管理: 面向执法及监管部门, 统计来自群众对问题地图信息举报的综合管理功能, 基于管理页面能查看和甄别举报信息, 委派图件监管任务到具体执法人的功能等.
③ 地图智库管理: 面向系统管理员提供文档在线编辑与发布的功能. 将常见的问题地图类型、国家版图知识、地图相关法律法规、地图敏感地名以及地图监管工作相关文件通过系统进行编辑与发布, 为移动端在线智库提供内容上的支撑保障.
④ 应急地图管理: 提供系统中成品地图的入库管理和应急调度管理功能. 入库时将每张地图进行身份信息登记, 按照行政区、地图版次、地图用途、地图申请单位进行排列, 提供快速查询和下载打印功能. 并提供第三方应急平台的对接接口, 实现应急地图的在线调用和查看.
⑤ 图件备案管理: 地图备案是地图审查和地图监管工作衔接中的重要一环, 系统向涉图单位提供公开出版地图在线备案的入口功能, 向地图监管部门提供备案数据的查看审核功能以及标准地图下载的功能.
⑥ 平台配置管理: 面向系统管理员的综合管理页面, 保障系统的正常运行, 提供用户的注册管理、权限管理、数据管理、接口管理以及日志管理等功能.
2 系统关键技术 2.1 Spring Boot微服务架构技术(1)微服务
微服务是一种用于快速构建应用的架构方案, 区别于传统的单体式方案, 微服务架构可将系统应用拆分成多个核心功能. 每个功能都被视为一项微服务, 可独立构建和部署, 因此, 各个微服务在底层业务构架上是不存在相互影响的. 在这个基础之上, 抽取系统公共逻辑业务, 把这些业务编制成框架库组件, 并发布形成微服务. 这种低耦合的方法可以大范围减少服务调用的频率和性能损耗, 也为系统业务延展性提供了基础支撑. 同时将数据库也进行完全拆分, 各个数据服务采用异构的拆分技术, 实现业务逻辑的真实意义上的解耦.
(2) Spring Boot架构
Spring Boot是大量开源库的集合, 它能够被任意项目的构建系统所使用. 通过在MAVEN项目的pom.xml文件中添加相关依赖包, 然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期, 减少了系统开发的繁琐. Spring Boot 框架下有着完善的MVC设计模型支持, 采用了约定优于配置策略, Convention over configuration, 是一种由Spring Boot本身来配置目标结构, 由开发者在结构中添加信息的软件设计范式, 使得在Spring Boot环境下进行 MVC 模式的开发变得尤为简单[10]. 因此, 面对将公共逻辑业务变成的公共的框架库组件, 满足系统的单独或者快速组装调用, 该项技术具备了所有优势.
2.2 RSA非对称加密算法技术RSA是目前使用最广泛的公钥密码体制之一, 于1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的. RSA加密解密流程如图3所示, 明文经过转码后形成字节流, 在加密算法中引入公钥编译成密文数据流. 数据调用即进入解密操作, 通过服务端的私钥和二进制转码, 将密文转译形成解密明文. 系统中将加密算法封装形成加密组件, 前端动态传入公钥参数明文, 系统后台通过私钥参数动态解译明文, 实现数据的安全加载.
(1)算法公式描述
随机取不相等的质数A和B, 取得两者的乘积:
$ N = A \times B $ | (1) |
取乘积N的欧拉函数:
$ \varphi (N) = (A - 1)(B - 1) $ | (2) |
取随机正整数P为加密钥, 要求:
$ 1 < P < \varphi (N) $ | (3) |
且P与
$ {\rm{gcd}} (P,\varphi (N)) = 1 $ | (4) |
计算P对于
$ PS \equiv 1(od \varphi (N)) $ | (5) |
在已知值P和
$ PS - 1 = K\varphi (N) $ | (6) |
根据“扩展欧几里得算法”求解一元二次方程方法, 就可解出模反元素S的值, 即为解密钥的值, 算法如下:
$ {\rm{gcd}} (S,K) = {\rm{gcd}} (K,Sod K) $ | (7) |
将参数(N,P)设置为公钥, 将参数(S,P)设置为私钥.
(2)算法加密
对明文M按照ANSI编码, 转化为二进制分组, 使得每个分组对应的十进制数小于N, 然后依次对每个分组做一次加密, 所有分组的密文构成的序列就是原始消息的加密结果. 即M满足
$ C \equiv {M^P}od N $ | (8) |
(3)算法解密
解密算法, 即为将密文C解密成明文M的过程, 算法如下:
$ M \equiv {C^S}od N $ | (9) |
Vue.js是一套用于构建用户界面的渐进式JavaScript框架, 使用node.js 技术, 安卓 vue-cli 脚手架构建工具, 由 vue-router 配置路由, 使用 Axios 插件封装的 Ajax 进行数据交互, 实现数据持久化[11]. 它可根据项目的需求, 可选择在package.json (组件库配置文件)中在的dependencies (依赖包)选项中填入第三方组件名称和版本号, 系统根据写入的内容并自动下载对于的组件版本并进行加载校验. 比如, 写入element-ui组件库, 实现前端页面的模块风格统一和快速灵活的开发能力. 写入echarts组件库, 实现前端页面数据快速可视化表达功能. 写入jszip组件库, 实现前端页面能够加载解译zip压缩文件的功能. 因此, 选用该项技术能够灵活地面对后端微服务的存在频繁变更的需求, 实现敏捷的迭代和高效的运维.
2.4 WXSS/WXML小程序框架技术微信小程序的开发框架基于MINA框架, MINA框架是一个通用的网络通信框架, 采用MVVM模式, 框架核心是一个实时响应的数据绑定系统. 微信小程序开发框架如图4所示. 逻辑层采用JavaScript语言实现微信小程序逻辑行为, 视图层由微信官方提供的WXML (WeiXin Mark Language)和WXSS (Wei Xin Style Sheet)语言来编辑, 视图层和逻辑层之间的交互依靠数据传输和事件系统完成[12]. 微信小程序的特点是无需下载、触手可及、用完即走不占用手机内存. 因此, 系统在建成之后, 用户可基于小程序实现问题地图拍照, 问题自查、在线举报、在线检定等功能, 实现问题地图的快速定位和监管.
3 成果应用
以广西的地图市场监管工作为研究对象, 在阿里云(ECS)服务器上部署了基于Spring Boot框架的地图监管系统. 在南宁市、柳州市等地开展试点, 用户通过微信小程序拍照问题地图上传云端, 监管部门人员在PC端自动接收到该照片数据, 并选取对应的标准地图图片进行配准比对, 在问题地图的图面上标绘出错误的信息, 并形成审核意见通过微信、短信通知返回的制图与申请单位, 相关涉图单位可基于审核意见及标准地图数据对问题地图做快速更正, 形成问题地图在线举证、检定、整改的信息化监管效果.
系统启动运行以来, 为第17届中国-东盟博览会提供了地图在线监管服务. 据统计, 在博览会期间总共收到涉图材料57件, 共计220幅地图. 监管人员通过系统在2天时间内, 查出问题地图数量157幅, 其中以“南海诸岛问题”、“钓鱼岛、赤尾岛问题”类型的“问题地图”居多. 完成审查后, 系统自动将涉图材料的审查意见以邮件形式, 实时发送给申请单位进行修改, 保证了博览会的如期举办.
系统的运行发布, 为当地的监管部门对于地图监管工作提供了一个可执行的解决方案, 也间接的从源头上减少了“未经审核”和“错误表示”的问题地图的出现, 受到用户的好评. 问题地图监管数据统计如图5所示.
4 结语在使用传统的Spring框架去做Java EE (Java Enterprise Edition)的开发, 大量的 XML 配置文件存储于项目之中, 导致JavaEE项目变得异常笨重, 繁琐的逻辑结构配置与引用第三方框架的配置, 导致了开发和部署的变得异常困难. Spring Boot继承Spring声明事物的支持、AOP编程的支持等优良特性的基础上, 集成了大量常用的第三方库配置, 零配置的开箱即用(out-of-the-box)的开发模式, 让开发者能够更加专注于业务逻辑研究.
当前, Spring Boot微服务框架在互联网行业应用十分广泛, 微服务灵活性注定是未来发展的趋势, 信息化项目会从传统架构慢慢转向微服务架构, 因为微服务可以让不同的团队专注于更小范围的工作职责、使用独立的技术、更安全更频繁地部署. 在需求日益增长的地图市场应用与监管领域, 基于Spring Boot微服务框架下开发的地图监管系统, 在技术上提供了更灵活的底层逻辑和快速开发能力. 在业务上, 建设包含了微信小程序和PC端应用服务, 实现了问题地图线索举报、查证检定、后续整改以及成图备案等信息化办公业务, 能够为当前的地图市场监管的主管部门提供一套可行的解决办法.
[1] |
刘戈青. 新形势下加强地图市场监管的若干政策的思考. 中国测绘学会测绘经济与管理专业委员会全体会议暨学术交流会学术论文集. 北京, 中国. 2003. 6.
|
[2] |
陈玮. 基于开源GIS的多源数据管理系统设计与开发[硕士学位论文]. 北京: 中国地质大学, 2013.
|
[3] |
宋海萍. 基于开源GIS软件的矿山基础测绘空间数据管理和服务[硕士学位论文]. 太原: 太原理工大学, 2011.
|
[4] |
Jose B, Abraham S. Performance analysis of NoSQL and relational databases with MongoDB and MySQL. Materials Today: Proceedings, 2020, 24: 2036-2043. DOI:10.1016/j.matpr.2020.03.634 |
[5] |
MongoDB, Inc. Sharded cluster. https://docs.mongodb.com/manual/sharding/#sharded-cluster. [2019-07-09].
|
[6] |
贺甲宁, 范雯. 基于LDAP的WebServices统一身份认证系统设计. 陕西职业教育与应用技术研究, 2020, 15(2): 12-16, 26. |
[7] |
祝翔, 董启文, 郁可人. 基于WebSocket的PK答题的设计与实现. 华东师范大学学报(自然科学版), 2018(2): 89-100. |
[8] |
Rahmatulloh A, Sulastri H, Nugroho R. Keamanan RESTful web service menggunakan JSON Web Token (JWT) HMAC SHA-512. Jurnal Nasional Teknik Elektro dan Teknologi Informasi, 2018, 7(2): 131-137. |
[9] |
Warsito AB, Ananda A, Triyanjaya D. Penerapan data JSON untuk mendukung pengembangan aplikasi pada perguruan tinggi dengan teknik restfull dan web service. Technomedia Journal, 2017, 2(1): 26-36. DOI:10.33050/tmj.v2i1.313 |
[10] |
裴宏祥, 于晓虹. 基于微服务架构的系统设计与开发. 中国科技信息, 2019(10): 91-92. DOI:10.3969/j.issn.1001-8972.2019.10.036 |
[11] |
何军, 陈倩怡. Vue+Springboot+Mybatis开发消费管理系统. 电脑编程技巧与维护, 2019(2): 87-88, 10. DOI:10.3969/j.issn.1006-4052.2019.02.025 |
[12] |
李哲, 周灵. 微信小程序的架构与开发浅析. 福建电脑, 2019, 35(12): 66-69. |