基于B/S 的行政区划界线界桩地名信息系统设计与实现
2024-01-23郭星涛彭莲香
郭星涛,彭莲香
(内蒙古自治区大数据中心,内蒙古 呼和浩特 010010)
0 引 言
行政区划是国家为便于行政管理而分级划分的区域,中华人民共和国的行政区划由省级行政区、地级行政区、县级行政区、乡级行政区组成。行政区划界线界桩是指由行政区域毗邻的各方人民政府共同埋设并用于指示行政区域界线实地位置的标志物[1]。
地名是中华民族文明史的特殊记录与见证,是传承优秀传统文化的重要载体。地名管理应当有利于维护国家主权和民族团结,有利于弘扬社会主义核心价值观,有利于推进国家治理体系和治理能力现代化,有利于传承发展中华优秀文化。使用标准地名可以在服务群众生活、社会治理、科学研究、国防建设等方面起到积极作用[2-3]。
为进一步提高行政区划界线界桩管理工作的信息化水平,推广标准地名的大众普及率,充分利用物联网、北斗系统等新技术,设计开发了基于B/S 架构的行政区划界线界桩地名信息系统,实现了多项技术融合应用于行政区划管理和地名服务工作,提高了管理服务的信息化、智能化和便捷化水平。
1 系统架构与开发平台
1.1 B/S 架构
B/S 架构即浏览器和服务器架构模式[4-6],是Web 兴起后的一种网络架构模式,Web 浏览器是客户端最主要的应用软件[7]。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。在B/S 结构中,每个节点都分布在网络上,这些网络节点可以分为浏览器端、服务器端和中间件,通过它们之间的链接和交互来完成系统的功能任务。三个层次的划分是从逻辑上进行的,在实际应用中多根据实际物理网络进行不同的物理划分。总之,B/S 结构就是将数据分布到某个数据服务器,将程序分布到应用(程序)服务器或者Web服务器,而客户端(浏览器)只需要加载应用服务器的部分程序,用于数据的显示和命令输入,如图1 所示。
1.2 MVVM 模式
MVVM 是前端视图层的概念,主要关注于视图层分离,它把前端的视图层分为三部分: Model、View、ViewModel(VM)。它是一种软件架构设计模式,是一种简化用户界面的事件驱动编程方式,提供了数据的双向绑定。在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者。ViewModel 是连接View 和Model 的中间件,具有低耦合、可复用、独立开发、可测试等特点,具体如图2 所示。
图2 MVVM 架构
1.3 MVC 模式
MVC 是后端的分层开发概念,如图3 所示。以系统采用的后端NodeJs 语言为例,前端的View 视图层通过后端app.js 进行请求处理;然后调用router.js 进行路由分发,如果涉及业务逻辑处理操作,则调用controller 模块进行业务处理,业务处理过程中如果涉及数据的CRUD,则调用Model层进行数据库操作,其中路由分发与业务逻辑处理位于controller 层。
图3 MVC 模式
1.4 Vue 和Express 框架
Vue是一套用于构建用户界面的渐进式轻量级JavaScript框架。最核心的功能包括组件化开发和响应式的双向数据绑定。除此之外还有前端MVVM 模式、虚拟DOM、前后端分离部署等优势。Vue 框架采用自底向上增量开发的设计,通过与Vue 生态系统的支持和第三方库的整合,可以为复杂的单页面应用(SAP)提供驱动。相较于其他框架,Vue 具有学习难度低、易使用、开发效率高等优点。
Express 是一个保持最小规模的、灵活的 Node.js Web 应用程序开发框架,提供了一系列强大的特性来帮助开发者创建各种Web 应用,主要有以下特性:开发快速、灵活的拓展机制、使用简单、支持路由和多模块[8-9]。
1.5 基于北斗系统的物联网技术
物联网(Internet of Things, IoT)是一个基于互联网、传统电信网的信息承载体,让所有能够被独立寻址的普通物理对象之间形成互联互通的网络,可以被视为互联网的延伸和扩展。人们通过物联网的应用可以获得一个新的沟通维度,即从任何时间、任何地点的人与人的沟通联接扩展到人与物、物与物之间的沟通联接,其架构可划分为感知层、网络层、应用层[10]。
北斗系统本质上是全球化的天基时空基准,是构建信息社会必不可少的信息来源和信息提供者,北斗系统提供的精准时间和位置信息可为广泛的用户提供定时、授时、授频等全天候、全天时可感知信息,是信息时代最为核心的关键基础数据。
通过将北斗系统取得的位置点、位置关系、时间统一和时空分析这些时空元素与物联网有机结合,必将对万物互联的智能时代起到巨大的支撑和推进作用,由北斗高精度服务提供的时空信息也必将成为智能化进程中的重要推动力。
1.6 系统开发平台
行政区划界线界桩地名信息系统的开发平台为Visual Studio Code,前端页面使用VueJs 框架、OpenLayers 开源前端GIS 库、Element 组件库、ECharts 开源可视化图表库等进行快速开发,后台使用NodeJs 语言,数据库使用PostGIS 空间数据库和MongoDB 非关系型数据库,地图服务器使用免费开源的GeoServer。前后端认证使用Json Web Token 进行认证鉴定。
2 系统设计与分析
2.1 系统设计开发流程
系统的设计开发共分为6 个环节,如图4 所示,包括需求分析及现状调查、确定系统架构和技术路线、设计功能与界面、搭建开发环境、开发和测试、部署与应用等。
图4 系统设计流程
2.2 系统功能模块
系统设计包括行政区划、地名地址、界桩、北斗定位设备、通用地图、设置共6 个模块,包括15 个功能点,如图5 所示。
图5 系统功能模块
2.3 行政区划模块
行政区划模块主要包含了省市县乡四级查询、行政区划界线展示、辖区情况与历史沿革三大功能。行政区划查询支持省市县乡四级选择栏和地图双击选择,行政区划界线包含省市县乡四级矢量要素的空间数据库、地图服务接口以及前端配置样式后的地图图层等一系列数据资源支撑。辖区情况与历史沿革支持选中某一级行政区划后的详细信息和历史沿革展示,例如政府驻地、辖属政区、行政区划代码、人口数量、设立年份等信息,行政区划地名罗马字母拼音、少数民族语言拼写、地名含义及历史沿革等信息。
2.4 地名地址模块
地名地址模块包含地名地址库调用、地名地址查询展示两大功能。其中,地名地址库使用民政部主管的中国·国家地名信息库的接口服务,地名地址查询展示支持搜索、列表分页展示、地图上的地名标识和详细信息,主要数据项为地名地址相册、罗马拼音、来历和历史等信息。
2.5 界桩模块
界桩模块包含界桩数据管理与展示、图表统计分析两大功能。界桩数据分为省、县、乡三级,平台可支持界桩数据的录入、修改、删除等操作,支持界桩数据地图图层显示、点击显示详细信息等操作,支持按行政区划统计界桩类型、材质以及相邻地区分布等图表展示。
2.6 北斗定位设备模块
北斗定位设备模块包含设备绑定与数据展示、设备异常处理与记录、设备轨迹地图展示三大功能。北斗定位设备支持实时返回经度、纬度、角度X、角度Y及振动入侵等参数,通过将其与界桩绑定,可充分利用物联网、北斗定位等新技术来实现界桩的信息化管理,同时平台支持设备参数值异常报警、处理、记录等功能,并支持设备移动轨迹展示。
2.7 设置模块
设置模块包含管理员身份设置。访问平台登录须输入管理员账号和密码,平台所有页面均设置了访问权限。
2.8 数据库及HTTP 接口设计
数据库主要包含空间数据库PostGIS 和非关系型数据库MongoDB。其中,行政区划界线和界桩等矢量数据借助ArcGIS 10.2 软件连接postgresql 创建并操作PostGIS 空间数据库来实现;地图服务使用GeoServer 进行发布。矢量数据的属性表内容见表1 所列。MongoDB 数据库以类似Json 的bjson 格式来存放行政区划基本信息和历史沿革、管理员账号和密码信息,见表2 所列。
表1 PostGIS 数据库设计
表2 MongoDB 数据库设计
HTTP 接口服务主要包含地图API 和数据API。其中地图API 包括两类:一是依据OGC WMTS 标准的天地图矢量、影像及地形等切片地图服务;二是依据WFS 标准、通过GeoServer 发布的行政区划界线界桩的网络要素服务。数据API 是指调用中国·国家地名信息库的公开接口服务中的地名搜索、详情及字符串解密等。具体项见表3 所列。
表3 HTTP 接口服务表
2.9 接口鉴权设计
系统的客户端与服务端的跨域认证采用Json Web Token(JWT)。JWT 的原理是在服务器对用户名和密码验证成功后,由服务器生成一个Json 对象,并对其签名加密生成Token 返回给客户端。在之后的请求中,客户端将这个Token 放于HTTP 请求头中发送给服务端,一般是将它放入HTTP 请求的Header Authorization 字段中,服务端对Token 进行解析,并验证其中的信息,包括用户名、密码、有效期等。若验证成功,返回相应状态码,否则返回错误信息。
3 系统功能实现
3.1 涉及的相关技术
系统涉及的相关技术见表4 所列,共有前端、后端、地图服务器以及数据库四部分内容。
表4 涉及的相关技术
3.2 功能模块实现与应用
本文以内蒙古自治区行政区划界线数据、基本情况和历史沿革等信息、基于内蒙古自治区界线等距离生成的随机点和属性信息作为界桩数据来实现功能模块、验证系统的运行效果。内蒙古自治区共有12 个地级行政区划、103 个县级行政区划(旗县区)、1 024 个乡级行政区划(街道、乡镇、苏木)。
服务器上安装ArcGIS、PostGIS、MongoDB 软件存储界线界桩及管理员身份数据,GeoServer 设置服务地址并发布界线界桩服务,NodeJs 设置地址并发布后端服务,VueJs 启动前端项目并联通天地图、中国·国家地名信息库、北斗定位模块的接口,完成系统部署。部分源代码片段如图6 ~图7 所示。
图6 获取要素地图服务算法
图7 获取北斗定位设备信息
行政区划基本情况与历史沿革、界桩录入、北斗定位设备参数、地图测距测面等功能界面如图8 ~图11 所示。
图8 行政区划基本情况与历史沿革
图9 界桩数据录入与设备绑定
图10 北斗定位设备参数值
图11 测距测面工具
4 结 语
本文利用B/S 架构,使用VueJs 和NodeJs 搭建前后端分离项目,建立JWT 的前后端身份认证机制,同时结合ArcGIS、PostGIS、GeoServer 及OpenLayers 等技术实现地理信息系统的落地,设计并实现了具有地图、可视化图表、北斗定位应用等功能的行政区划界线界桩地名信息系统。系统运行稳定,实现了行政界线界桩的信息化管理以及地名的推广应用,为民政部门关于行政区划的信息化建设提供了借鉴,同时为不同政务部门业务融合服务提供了基础数据。但是对于服务界桩管理一线工作者的便捷性不足以及数据纠错等问题,还有待进一步研究。