基于WebGIS的自然资源“一张图”管理信息系统设计与实现
2020-09-09魏佳楠林华剑龚祎垄傅俊豪
魏佳楠 吴 勇,2* 林华剑 龚祎垄 宋 昀 傅俊豪
1(福建师范大学地理科学学院 福建 福州 350007)2(福建省陆地灾害监测评估工程技术研究中心 福建 福州 350007)3(福建师范大学数学与信息学院 福建 福州 350117)
0 引 言
近年来,“一张图”工程已成为国土资源领域研究的热点,它主要利用GIS技术将多种信息有机地综合到一个地图界面上,并提供这些信息的交互查询和相应的空间分析[1]。其根本目的是充分发挥已有基础空间数据的作用[2],对实现数据的共享使用具有重要意义。“一张图”系统已广泛应用于水文水资源[3]、林地[4]、煤矿地测[5]等领域。2018年国务院机构改革方案提出,不再保留国土资源部,组建自然资源部。新组建的自然资源部整合了原国土资源部、原国家海洋局、原国家测绘地理信息局、国家发展改革委、住房城乡建设部、水利部、农业部和原国家林业局的相关职责,对自然资源数据进行科学高效的信息化建设就显得尤为重要。为了将更多的资源数据与部门内工作流程对接,构建满足自然资源管理新时代、新形势下新要求的“一张图”系统的需求应运而生。“一张图”系统不但应具备更合理的空间数据和业务数据的访问机制,还应更加关注数据和系统的安全管理问题。
目前,已有学者在“一张图”系统建设中的权限管理和日志管理方面展开研究。在权限管理方面,张娜娜[6]采用基于角色的访问控制技术(RBAC),实现基于角色的权限管理;任建刚等[7]设计的系统提供权限、角色的设置和管理,实现各类型数据的同步管理。在日志管理方面,吴庆双等[8]设计的日志管理模块用于记录用户的登录信息,仅系统管理员具有查看日志信息、删除用户日志和导出用户信息等功能的权限;许等平等[9]结合日志审计系统,通过日志记录对事故进行追根溯源。目前权限管理的多数研究集中在角色和系统功能权限的关系,较少涉及角色和空间数据权限的关系,进一步将角色、系统功能和空间数据权限的关系有机结合的研究更为缺乏。在日志管理方面,记录用户在系统中的功能操作是多数系统的关注内容,而较少涉及对服务端空间数据访问的记录,不利于日志审计和系统故障排查工作的开展。
针对上述问题,根据龙海市自然资源局的需求,本文结合Angular、Node.js、Koa2和Redis等开源框架,设计并实现基于WebGIS的自然资源“一张图”管理信息系统。系统实现多源异构数据的集成与共享,提供数据查询、辅助审核、统计分析、制图、数据更新和系统管理等功能。更为重要的是,系统具有对服务端空间数据与数据库业务数据的统一访问机制,具备统一管理角色权限、数据权限和功能权限的能力,并能将用户使用系统的操作和对服务端空间数据的访问统一记录在日志中,为龙海市自然资源局内数据共享和高效管理提供支持。
1 系统设计
1.1 相关技术
WebGIS是传统的GIS在网络上的延伸和发展[10],已应用于堤防[11]、灾害评估[12]、地质[13]等领域。本文系统基于WebGIS实现,利用ArcGIS Server进行图层的发布和管理,并将空间数据与业务数据存储在PostgreSQL数据库中。前端采用ArcGIS API for JavaScript技术,结合Angular、Node.js、Koa2和Redis等开源框架进行系统的架构与研发。本文使用的开发框架可令系统具有良好的可维护性和可扩展性并能够提升系统的性能。下面对涉及的技术做简要介绍。
Angular是一个用HTML和TypeScript构建客户端应用的平台与框架。它遵循基于组件的体系结构,其中每个组件都是独立可重用的。Angular还具有双向数据绑定的功能。本文设计的系统使用Angular 6进行前端Web页面的构建,使系统具有很好的可维护性和可扩展性,组件化的构建令开发更加高效。
Node.js是基于JavaScript语言和Chrome V8引擎的运行环境,采用模块化管理[14],具有单线程、非阻塞I/O(Input/Output)、事件驱动的特点和轻量、可伸缩的优势。Koa2是基于Node.js平台的下一代Web框架,可实现异步流程控制,免除重复繁琐的回调函数嵌套。本文系统使用Koa2进行后台框架的构建,实现了路由分配、数据传送等功能,利用Async、Await和Promise实现异步流程控制。同时,Koa2对系统日志的记录具有良好的支持效果,提升了系统的性能。
Redis是一个高性能的Key-Value数据库,支持多种类型的数据结构,可实现数据的缓存。本文系统使用Redis将高频访问的数据如功能、图层、角色等信息进行缓存,在系统登录初始化时对用户的权限进行判断并展示对应数据,提升了系统性能。
1.2 总体架构
系统的构建遵循相关规范和安全策略,总体架构分为展示层、业务层、数据层和基础设施层四部分,具体如图1所示。
图1 系统总体架构图
(1) 展示层:直接面向用户的使用,用户将系统中不同功能的请求发送至业务层。通过Angular 6的组件化实现系统具体UI界面的设计与交互,并通过UI组件请求业务层的服务,以完成展示层的功能。展示层具备数据浏览、数据查询、辅助审核、统计分析、制图、数据更新、系统管理等功能。
(2) 业务层:业务层利用Node.js、Koa2、Redis和ArcGIS Server进行构建,借助Redis将权限和使用频率高的信息进行缓存,并使用ArcGIS Server进行空间数据的发布和管理,为展示层提供服务。业务层构成了系统架构的核心部分,满足数据资源共享的需求。业务层由通用业务、功能业务和ArcGIS Server服务三部分组成。通用业务包括数据访问业务、权限管理业务和日志管理业务。功能业务包括数据浏览业务、数据查询业务、辅助审核业务、统计分析业务、数据更新业务等。Node.js和Koa2为通用业务和功能业务的实现提供基础。ArcGIS Server服务包括Map Service、Feature Service和Geoprocessing Service,为空间数据的访问和分析提供基础。
(3) 数据层:数据层是系统数据管理的基础支撑,包括地理空间数据、业务数据和系统管理数据三类。数据库使用PostgreSQL。数据层具有存储、备份等功能,为系统功能的应用提供数据支持。
(4) 基础设施层:包括计算机、服务器、打印机和网络设施等,是系统安全稳定运行的保障。
本文系统具有“统一数据访问、统一权限管理、统一日志管理”的优势,解决了权限管理不完善、日志记录不完整的缺陷,在增加系统安全性的同时,也为系统日后的维护、扩展提供便捷。统一数据访问是统一权限管理和统一日志管理的基础。下面分别对数据访问、权限管理和日志管理的运行机制和过程进行介绍。
(1) 统一数据访问:将系统对空间数据和业务数据的访问有机地结合,避免了对两类数据的独立访问,有利于对空间数据和业务数据访问和信息获取的控制。Redis中缓存的数据包括功能、图层、角色等信息。统一数据访问过程如图2所示。
图2 统一数据访问过程
对空间数据、业务数据的访问时,由客户端发送请求给Koa2服务器,Koa2服务器在Redis中对功能-图层表、属性信息表进行查询,如果有对应的查询结果,将结果返回客户端,否则,在数据库中进行查询。若对业务数据进行访问,则在数据库中查询业务数据信息,得到查询结果后将信息记录在Redis中并返回客户端。若对空间数据进行访问和查询,Koa2服务器将在数据库中对图层的服务地址进行查询,对查询到的服务地址进行解析,将图层地址头、地址路径等信息进行拼接组成完整的访问地址。Koa2将拼接后的地址返回给客户端,客户端携带此地址访问ArcGIS Server服务端并进行查询,查询得到的信息返回客户端。
(2) 统一权限管理:将角色、功能和图层三者有机地建立起关系,方便对用户的权限进行控制,用户仅可以使用权限内对应的功能和数据,提升了系统的安全性,为数据共享提供了权限支撑。Redis存储的内容包括与权限有关的信息。统一权限管理过程如图3所示。
图3 统一权限管理过程
实现统一权限管理的具体方法是用户登录系统时,将请求发送到Koa2服务器,然后在Redis中进行权限信息的查询,若Redis中有对应的信息,将获得的查询结果返回给客户端进行系统初始化,否则,在数据库中进行查询,得到查询结果后返回给客户端并且存入Redis中。查询得到的不同结果令不同用户登录后的系统展示不同的功能界面和图层界面,即用户在使用系统时的权限信息由登录时的权限判断进行确定。
(3) 统一日志管理:统一日志管理是在统一数据访问的基础上实现的。系统日志不仅可以记录用户访问业务数据和使用系统功能等操作信息,而且能够记录访问的图层服务的地址。统一日志管理过程如图4所示。
图4 统一日志管理过程
在统一数据访问的基础上,Koa2服务器可从Redis、数据库中获取相应信息。若对ArcGIS Server服务器进行访问,在接收返回的空间数据时记录地图服务的地址。Koa2将获取的用户信息、时间、客户端的IP地址等信息与系统操作信息整合成完整的日志记录到日志表中,日志表存储在PostgreSQL中。
统一日志管理避免了前端访问ArcGIS Server图层服务却无法被记录的情况,能够提高日志记录的实时性、完整性和准确性,有利于检查错误发生的原因,为保障数据的安全性提供基础。
2 数据库建设
数据资源在信息化建设中具有基础性、支撑性、核心性的作用[15]。数据库建设是系统建设的基础环节,包括数据收集与整合以及数据库的设计。
2.1 数据收集与整合
数据收集来源于龙海市自然资源局各职能部门。根据数据类型划分为地理空间数据、业务数据和系统管理数据三类。地理空间数据包括土地数据、矿产资源数据、地质灾害数据等自然资源数据,如遥感影像图、行政区划图、地灾点图等;业务数据包括相关项目数据等;系统管理数据包括角色数据、权限数据、日志数据等。
数据整合主要将收集到的数据进行清理和规范化处理,并设置统一的空间参考和数据标准,空间数据统一采用2000国家大地坐标系。将处理后的空间数据发布到ArcGIS Server服务端,服务形式包括WMTS、WMS、WFS等,通过访问图层服务地址将数据对接入系统中。
2.2 数据库设计
数据库的分析和设计必须满足用户的具体要求[16]。为保障数据库的可管理性和可维护性,提升系统的效率,在遵循数据表中的数据相互独立、数据冗余度低、数据库命名规范等原则的情况下,对数据库的概念结构设计、逻辑结构设计和数据库物理设计展开具体研究。
数据库的概念结构设计是从现实世界到虚拟世界过渡的过程。根据龙海市自然资源局内不同科室及部门的职责,系统需为不同科室及部门提供不同的功能和使用图层的权限。此外,图层在组织形式上应满足灵活可变的需求,并支持不同的展示方式。在综合考虑系统功能及其所涉及的各种实体以及实体之间关系的基础上,构建数据库实体—联系(E-R)模型,以展示各种数据及其之间的联系。
数据库的逻辑结构设计根据概念结构设计中的E-R图为依据向关系模型进行转换。本文系统所使用的数据具有多类型和时空性的特点,故将数据库中的数据分为空间数据、业务数据和系统管理数据三部分。空间数据遵循相关空间数据标准并基于概念结构设计中图层与图层的关系进行组织。本文重点介绍与统一权限管理、统一数据访问、统一日志管理相关的数据表设计。
(1) 统一权限管理的关键是如何有效地结合角色、空间数据和系统功能三者之间的关系。统一权限管理涉及的数据表包括角色表、图层表、功能表、角色-图层表、图层-功能表和角色-功能表。其中:角色表与角色-图层表、角色-功能表分别为一对多的关系;图层表与角色-图层表、功能-图层表分别为一对多的关系;功能表与功能-图层表、角色-功能表分别为一对多的关系。通过6张表的相互关系建立视图,在此基础上实现角色、图层和功能之间关系的管理。统一权限管理涉及的数据表关系如图5所示。
图5 统一权限管理相关数据表关系图
(2) 统一数据访问包括对空间数据和业务数据的访问。对空间数据访问时,主要利用图层表、图层字段表、功能-图层表和图层选用属性字段表。本文系统对空间数据中属性信息的查询方式是在其对应的ArcGIS Server服务中进行查询。通过图层表获得图层服务地址,利用图层字段表、功能-图层表和图层选用属性字段表获取不同功能对应的属性字段信息。访问业务数据时将涉及其他相关的系统管理表和业务数据表。统一数据访问涉及的数据表关系如图6所示。
图6 统一数据访问相关数据表关系图
(3) 统一日志管理涉及的数据表是在统一权限管理的6张数据表的基础上,增加了用户表和日志表。系统将用户使用的功能以及访问的ArcGIS Server中图层的服务地址记录在日志表中。日志表的内容包括用户名、用户工号、操作类型、IP地址和时间等信息。统一日志管理涉及的数据表关系如图7所示。
图7 统一日志管理相关数据表关系图
数据库物理设计包括建立索引、视图以及存储过程。为了提高系统的数据访问速度,在数据表中的主码、外码上建立索引,并在数据表中使用频率较高的字段上建立索引。为了有效地关联角色、图层、功能三者的关系,并简化对数据的访问,建立对应的视图。为了提高系统页面初始化的速度,通过设计存储过程获取权限信息、功能展示等信息。
在完成数据库的概念结构设计、逻辑结构设计和数据库物理设计后,将收集与整合后的数据在检查无误后录入数据库,经过数据库测试后完成数据库的建设。
3 系统实现
系统由业务应用子系统和系统管理子系统构成。业务应用子系统集成了各类自然资源数据,对数据进行直观展示;系统管理子系统作为业务应用子系统的辅助系统,满足不同职能部门对不同数据的多样需求,可对用户和系统进行便捷的管理。
3.1 业务应用子系统
业务应用子系统的功能模块包括数据浏览、数据查询、辅助审核、统计分析、制图和数据更新功能模块。业务应用子系统功能模块介绍如表1所示。
表1 业务应用子系统功能模块
3.2 系统管理子系统
系统管理子系统可根据需求实时对系统进行配置和管理,设置仅管理员具有使用权限。功能模块包括用户管理、角色管理、图层配置、软件功能配置、权限管理、日志管理、属性表字段管理和服务器管理等功能。系统管理子系统功能模块介绍如表2所示。
表2 系统管理子系统功能模块
续表2
下面就“统一数据访问、统一权限管理、统一日志管理”设计模式下涉及的图层配置、权限管理、日志管理功能模块进行介绍。
(1) 图层配置:图层配置功能可实现对ArcGIS Server图层服务地址的修改,以完成图层的替换。功能界面左侧是图层树,可进行增加、删除、修改图层分类等操作,图层分类和图层对应的信息显示在右侧信息栏中。图层信息包括图层名称、图层描述、时间、ArcGIS Server地址以及选择是否为影像图。图层配置功能界面如图8所示。
图8 图层配置功能界面
(2) 权限管理:权限管理功能将角色、图层和功能三者的管理有机地结合起来,根据角色的不同进行图层权限和功能权限的配置,角色仅可使用权限管理中勾选的功能和图层。使用权限管理功能能方便管理不同角色与功能和图层的关系。权限管理功能界面如图9所示。
图9 权限管理功能界面
通过权限管理的设置,不同角色具备不同的权限。例如管理员具有业务查询和定位查询这两项功能的使用权限,而设置用户“信息中心”不具有使用这两项功能的权限,则“信息中心”登录后系统界面中对应的功能显示为灰色且不可选择。管理员具有使用2.5维电子地图、地名地址的权限,设置用户“信息中心”不具有使用这些图层的权限,其界面右侧图层列表中则不显示这些图层。不同权限下功能和图层差异对比如图10所示。
图10 不同权限下功能和图层差异对比
(3) 日志管理:日志管理功能记录了用户在系统中的各种操作。日志管理具有查询、导出和日志统计的功能,不仅可以记录功能使用,涉及到图层访问时,还能够记录具体访问的图层服务地址,有助于系统发生错误时的问题排查。日志统计功能使地图服务访问以及功能访问的频度直观可见,有利于确定使用频率较高的功能和图层,为今后功能完善提供参考。日志管理功能界面如图11所示。
图11 日志管理功能界面
4 结 语
本文结合先进的开源框架,实现了基于WebGIS的龙海市自然资源“一张图”管理信息系统。系统具有“统一数据访问、统一权限管理、统一日志管理”的优势,为数据的访问和获取提供便捷,有利于检查系统发生错误的原因,提升了系统的安全性、可扩展性和可维护性。
本文系统将自然资源空间数据和业务数据相结合,针对龙海市自然资源局各职能部门设计了不同的功能,在数据查询、统计分析、辅助审核、制图和数据可视化展示等方面具有实际应用价值。通过使用本文系统,龙海市自然资源局各职能部门可快速准确地掌握该地区土地、矿产、地质灾害等各类自然资源的布局和具体信息,有效提高了工作人员的办公效率,提升了数据共享程度,达到了增强自然资源数据管理水平的效果。本文构建的系统同时可为其他领域的“一张图”系统的建设提供有效的借鉴和参考。