要素级地图服务权限控制策略与技术研究
2021-09-27冯推亮熊小青王春晓
冯推亮,熊小青,王春晓
(1.自然资源部海南基础地理信息中心,海南 海口 570203)
近年来,随着计算机、通信、网络等技术和测绘地理信息技术的快速发展以及国家政策的支持,各地市“数字城市”建设已基本完成,“智慧城市”、物联网建设也相继开展,对于基础地理空间数据的需求将会不断增长[1]。目前基础地理空间数据的提供方式为地图服务,ArcGIS Server作为地图服务器,已被各政府机关、企事业单位和公众认可,并得到了广泛应用。为了保护数据所有者的权限,必须对空间数据进行安全保护[2],针对不同的用户,需配置不同的地图服务,因此需要相关的运维管理平台对地图服务访问进行管理[3]。 ArcGIS Server平台服务器具有对应的运维管理模块,包括地图服务管理、权限管理和日志记录等,但其地图服务权限管理功能只能控制到用户是否能访问某些地图服务的级别,无法对地图服务中的要素访问范围和切片访问范围起到控制作用,需要进行二次开发才能实现该功能。鉴于此,为了满足实际业务对数据细粒度的控制要求,本文设计并开发了基于ArcGIS Server的要素级地图服务权限控制系统。系统在ArcGIS Server扩展接口的基础上进行二次开发,采用REST接口[4]、SOI服务对象拦截器技术和OpenCV开源轻量级且跨平台的视觉处理技术[5]等进行开发。系统建成后已应用到具体的业务中,实现了对地图服务要素访问范围和切片访问范围的有效控制。
1 权限控制架构设计
地图服务权限控制采用SOA架构,包括基础层、数据层、服务层和应用层,如图1所示。SOA架构便于实现跨平台和互操作,利用 REST接口实现一种松散耦合的异构式环境的集成,采用OGC标准规范接口构建面向服务的集共享服务提供方、使用方和管理方于一体的地理信息数据共享框架体系结构,实现基于统一注册和分级授权的服务组织模式与运行管理机制,从而实现地理信息共享交换的持续发展[6-8]。
图1 系统架构设计
基础层包括存储、网络、系统、数据库、安全设备等,为数据层、服务层和应用层的建设与运行提供基础保障。数据层采用Oracle关系型数据库为基础地理空间数据和应用系统数据提供高效存储,采用文件系统存储地图切片数据。服务层基于Web API开发框架,利用RESTful风格构建地图服务目录、服务代理、切片访问控制、要素访问控制、切片处理和地图服务权限管理等模块,负责数据层业务逻辑的实现,为应用层的数据展现和功能实现提供服务接口。应用层包括外部的App移动端和Web应用程序端的服务使用方以及框架内部的地图服务运维系统的管理方。
2 权限控制策略设计
权限控制策略主要由地图服务目录、服务代理、切片处理、地图服务权限管理端、切片访问控制和要素访问控制等模块组成。具体控制策略和流程结构如图2所示。
图2 权限控制策略流程图
App移动端或Web客户端通过访问地图服务目录提供的服务地址访问系统提供的地图服务,目录服务将客户端的请求提交给服务代理,由服务代理根据请求的服务类型调用对应的处理程序,若是请求切片则调用切片访问控制模块来处理客户端的请求,切片访问控制模块再调用切片处理工具,根据级别和行列号参数提取原始切片并进行空间关系运算和透明化等处理,最后将处理后的切片返回给客户端;若是请求要素查询则调用要素访问控制模块来处理该请求,根据客户端传递的查询参数进行要素查询,并根据用户的可访问范围对要素查询结果进行空间过滤处理,最后将处理后的结果返回给客户端。
2.1 权限控制数据库设计
权限控制数据库用于保存用户、地图服务、权限范围信息。数据库表结构主要包括用户表、用户组表、地图服务表、范围表、用户与地图服务关系表、用户与范围关系表、业务系统表、业务系统秘钥表等,具体结构如表1所示。
表1 数据库表结构说明
2.2 地图服务目录
REST是一种软件架构风格,由Roy Thomas Fielding 博士于2000年提出,是一种针对网络应用的设计和开发方式,可降低开发的复杂性,提高系统的可伸缩性。通俗地说,即网络中的所有资源都有唯一的网络地址与其一一对应[9]。
地图服务目录模块的主要功能是采用REST架构风格将系统的地图服务通过REST接口对外提供地图服务的调用地址和详细信息,类似于ArcGIS Server 的Services目录服务,从而方便用户快速查找相关的地图服务。相关部分代码为:
2.3 服务代理
服务代理模块的主要功能是接收来自地图服务目录提交的服务地址。通过服务地址提取Token(ArcGIS 的令牌)、key(秘钥)和userid(用户id)参数验证 key 的有效性,通过Token验证用户是否有权限访问该地图服务以及该服务是否设置了要素可访问范围的限制;再根据服务地址识别请求的服务类型,若请求切片,代理则将调用切片访问控制模块进行切片访问控制操作,同时将传递范围信息给该模块,若请求要素查询,代理则将调用要素访问控制模块进行要素查询控制操作,同时将传递范围信息给该模块。
2.4 切片访问控制
切片访问控制模块的主要功能是接收来自服务代理模块传递的服务地址和访问范围信息。通过服务地址和访问范围信息进行数据库查询,得到切片处理工具处理好的切片存放路径,并根据切片请求地址中的行列号和级别信息调用后台切片读取程序读取相应的切片文件,再将切片以二进制流的形式返回给客户端。
2.5 要素访问控制
要素访问控制模块的主要功能是接收来自服务代理模块传递的服务地址和访问范围信息。以Query查询为例,将访问范围与用户输入的图形进行空间关系运算,若访问范围与输入图形无交集,则结束请求并提示超出权限范围;若访问范围包含输入图形,则将Query的geometry参数设置为用户输入的图形;若访问范围与输入图形相交,则将Query的geometry的参数设置为访问范围与输入图形相交计算的交集。然后,调用ArcGIS Server 的对应接口获取要素查询结果,若客户端请求地址的参数中设置了需对查询结果进行裁剪,则将访问范围与查询结果进行相交运算,只保留访问范围内的要素,最后将结果以JSON格式返回给客户端。
2.6 切片处理
切片处理模块的主要功能是对ArcGIS Server生成的切片文件进行二次处理。读取boundle文件中的每张瓦片,并与访问范围进行空间关系运算,将访问范围之外的部分进行透明化处理;然后将每张瓦片重新存储到新的切片文件中。对每个服务切片、每个级别、每行每列进行相同处理,最终生成指定访问范围的地图服务切片。相关部分代码为:
2.7 地图服务权限管理端
地图服务权限管理端的主要功能是集成ArcGIS Server发布的地图服务。集成业务系统获取其用户和角色数据,通过服务权限配置功能可为每个用户配置可访问的地图服务以及每个服务里用户能访问的空间范围,同时提供切片处理工具运行的启动按钮和工具运行相关的配置项管理。相关界面如图3 所示。
图3 地图服务权限管理端界面
3 关键技术
3.1 SOI技术
ArcGIS Server平台服务器提供SOI扩展开发接口,即服务对象拦截器接口,目前支持使用.NET或Java进行二次开发。利用拦截器可拦截到客户端发送的地图服务要素查询请求或服务响应的结果,在拦截器中开发者可修改客户端发送请求的参数再继续请求服务,也可修改地图服务查询结果再将修改后的结果返回给客户端。本系统采用拦截器拦截了客户端的请求,并对查询的参数进行了修改;再继续请求服务;然后对服务响应的结果再次进行拦截,并修改查询的结果;最后把修改后的结果返回给客户端。
3.2 OpenCV技术
OpenCV是一种开源轻量级且跨平台的视觉处理库,支持C#、Java、C++等主流开发语言 。利用OpenCV可实现图像处理操作、构建图形用户界面、视频分析、人脸和目标检测以及形状分析等功能。本系统采用OpenCV的图像处理功能进行瓦片处理,将每张瓦片转换为图片,再利用特定的访问范围与瓦片图片进行比较,对超出访问范围的图片部分进行透明化图像处理,最后将瓦片图片保存到新的切片文 件中。
4 技术实现与对比实验
4.1 技术实现
技术实现时,实验网络环境采用局域网,开发环境采用DotNet Framework 4.5+VS 2013,数据库采用Oracle关系型数据库,实验数据采用地理国情普查地表覆盖数据。系统利用ArcGIS Server SOI扩展接口进行二次开发,开发语言选用C#。
4.2 要素控制对比实验
本文将某地区两个行政区交界区域的地表覆盖图层发布为要素服务,通过上述要素访问控制技术进行控制,并进行不同行政区划下数据控制的对比实验。实验结果如图4、5所示,可以看出,未对访问范围进行控制时,可同时查看两个行政区的数据,空间点选查询均正常;对其中的一个行政区的访问范围进行限制时,该行政区以外的数据没有显示,点选也无法查询,能保证无限制访问区域数据的显示效果,点选效果正常。实验结果表明,对用户设置访问范围前,用户可查询全省要素,而设置访问范围后用户只能查询指定范围内的要素。
图4 要素访问控制前效果图
图5 要素访问控制后效果图
4.3 切片控制对比实验
本文将上述地表覆盖图层发布为切片服务,通过切片访问控制技术进行控制,并进行不同行政区划下数据控制的对比实验。实验结果如图6、7所示,可以看出,未对访问范围进行控制时,可同时查看两个行政区的数据,空间点选查询均正常;对其中的一个行政区的访问范围进行限制时,该行政区以外的数据没有显示,点选也无法查询,能保证无限制访问区域数据的显示效果,点选效果正常。实验结果表明,对用户设置访问范围前,用户可查看该服务全省的切片,而设置访问范围后用户只能查看指定范围内的切片。
图6 切片访问控制前效果图
图7 切片访问控制后效果图
4.4 结果分析
针对该地图服务,在未对用户设置访问范围权限时,用户可查看全省的切片和进行全省的要素查询,但在对用户设置访问范围权限后,用户只能看到指定区域的切片和进行指定区域的要素查询。通过切片访问控制效果对比图和要素访问控制效果对比图可知,本系统提出的权限控制策略可根据用户可访问范围进行切片显示和要素查询的空间范围控制。
5 结 语
针对当前ArcGIS Server的地图服务权限管理体系只能控制到用户是否有权限访问某些服务的级别,无法满足对地图服务中指定空间范围内要素的访问控制问题,本文基于SOI服务对象拦截器技术和OpenCV开源图像处理技术等关键技术,提出了基于ArcGIS Server的要素级地图服务权限控制策略,利用DotNet Framework 4.5+VS 2013的开发环境、Oracle关系型数据库环境和局域网网络环境进行了技术实现,并利用地理国情普查地表覆盖数据进行了实验。实验结果表明,该策略可对地图服务进行要素级别和访问范围级别的精细化权限控制,加强了地图服务权限的管理。该策略建成后经过不断的测试和完善,已运行稳定并及时应用到实际生产环境中,满足了实际业务对地图服务访问更精细化控制的需求,增强了地图服务权限精细管理能力。