高分遥感京津冀一体化服务平台设计与实现
2019-03-05,,3,,2,,3
,,3,,2, ,3
(1.北华航天工业学院 河北省航天遥感信息处理与应用协同创新中心,河北 廊坊 065000;2.北华航天工业学院河北 计算机与遥感信息技术学院,河北 廊坊 065000;3.北华航天工业学院 电子与控制工程学院,河北 廊坊 065000)
0 引言
国家高分辨率对地观测系统重大专项是《国家中长期科学与技术发展规划纲要》确定的十六个重大科技专项之一,于2010年批准启动实施[1]。高分专项的实施大力支撑了现代农业、林业资源监测、环境保护、国土调查等领域的应用需求,积极支持区域示范应用,快速推动了我国空间信息产业的发展。高分一号、高分二号卫星发射升空,实现了对高空间分辨率、多光谱与高时间分辨率结合的光学遥感技术的突破[2]。
WebGIS通过互联网对地理空间数据进行发布和应用,以实现空间数据的共享,核心是在GIS中嵌入HTTP标准的应用体系,实现Internet环境下的空间信息管理和发布,可采用多主机、多数据库进行分布式部署,通过Internet/Intranet实现互联,是一种浏览器/服务器(B/S)结构[3-5]。针对京津冀一体化协同发展对区域遥感监测信息化的需求,利用高分影像数据开展京津冀区域城乡一体化发展监测、资源环境承载力评价、环境要素提取与动态监测十分必要[6],为了实现国产高分卫星遥感信息产品快速、准确、高效地服务于京津冀一体化区域综合管理以及环境质量监测等需求,基于WebGIS技术设计与开发高分卫星遥感数据应用服务平台十分必要。
1 系统设计目标和主要功能
1.1 设计目标
为满足京津冀区域省、市、县、乡四级政府及行业不同用户对遥感监测的需求,首先需要把遥感影像数据、实地勘测数据、统计数据等多种空间和属性数据通过统一的编码规范进行标准化处理,其次,结合ArcGIS Server动态图层的海量数据便捷调用的功能以及SQL Server空间数据库的存储功能[7],最终实现多源数据在空间上的展示、统计和分析。因此,拟采用B/S结构下的3层架构,前端页面利用ArcGIS API调用发布在ArcGIS Server上的服务以及存储在数据库中的图层信息,并引入jQuery框架、ECharts控件等来达到美化界面、修饰图表的功能;数据层采用空间数据和属性数据存储于同一数据库的形式,使查询功能更加快速便捷;后台服务层采用ArcGIS Server为前端调用服务提供数据接口,主要利用ASP.NET技术来实现[8]。
1.2 主要功能
围绕设计目标,平台的主体功能可以分为两个模块:
1)空间信息管理模块:其一,实现对动态加载的省、市、县、乡四级行政区域多种资源图层的管理,包括资源图层间的切换;其二,实现同一行政区域内,同种资源不同时期的数据图层动态生成时间轴及时间轴的滑动切换。最后,可根据用户需要,实现数据的动态查询和统计。
2)基础信息展示模块:主要包括地图放大、缩小、平移、截图、对比、测量、打印、导航等功能,以及地形图与影像图的动态切换,多层目录树的区域选择等,并可实现同一区域不同时间数据的对比分析。
2 系统设计
2.1 系统框架设计
平台框架主要包括数据层、数据链接层、数据访问层、业务逻辑层、表示层、模型层,如图1所示。数据层是由空间数据库和属性数据库组成,二者统一存储于关系数据库SQL Server中[9]。数据链接层是数据访问层和数据层之间的桥梁,从数据层读取空间数据和属性数据,并将结果返回给数据访问层[10]。数据访问层主要实现对数据的“增删查改”等操作,为业务逻辑层和表示层提供数据服务。数据访问层对数据进行的操作通过业务逻辑层传送到表示层,再经应用平台在Internet上进行信息的浏览、展示和GIS查询、统计、分析。与此过程相反,用户可通过客户端进行信息输入,再通过Internet传送到应用平台,再经由业务逻辑层、数据表示层、数据链接层对相关数据库进行操作来反馈客户端的请求,实现交互式操作。
图1 高分遥感京津冀一体化服务平台框架
2.2 系统功能设计
平台基于ASP.NET面向对象的程序设计来开发,主要目的是为京津冀一体化区域综合管理提供科学合理、及时有效的数据参考。涉及面向对象的软件开发比较困难,可复用的面向对象的软件开发更难。必须找到相关对象,并把它们归类,然后定义类的接口和继承层次,建立对象之间的基本关系[11]。才能使设计的平台兼具对强调问题的针对性和对通用问题的普适性。
平台的空间查询、属性查询和统计分析方法主要是针对本平台服务对象的需求设计和实现。分为五个功能模块,分别为:用户管理、基本地图操作、空间查询、属性查询以及统计分析模块,每一模块独立存在,互不干扰,分别在自己的实现代码内加载所需的ArcGIS API,在实现功能的同时避免因初始化加载过多而造成网页加载缓慢的问题,模块间可通过参数的传递和主界面的调用相互联系,便于平台高效开发,如图2 所示。
对于多处加载资源图层、行政矢量图层,分页控件,ECharts图表结果等普适性需求,将代码提取封装成addResourceLayers.js、addRegionLayers.js、echarts.js等js文件,只需引入对应js文件,即可直接调用其方法实现特定功能,避免了代码冗余问题,并提高了方法的可复用性。
图2 高分遥感京津冀一体化服务平台功能模块
各模块功能分述如下:
1)用户管理模块:包括对省、市、县、乡四级行政结构和农业、林业、环保、国土四个不同行业的用户权限管理。根据不同行政级别和不同行业需求,分别赋予管理员、省、市、县、乡用户和游客等不同权限等级,再根据不同用户的权限等级在其对应的行政区域内,对遥感专题信息产品进行浏览、查询、统计分析等。用户登录后可以选择进入农业、林业、环保、国土等权限范围内的行业领域。
2)数据浏览与展示模块:根据省、市、县、乡,选择对应的行政区域和查看的资源类型,完成数据的加载、展示。具备地图放大、缩小、平移、测量以及同一区域不同时间影像的对比等功能。
3)数据查询模块:包括空间查询和属性查询。空间查询主要是选定需要查询的行政区域后,按照选择时间,利用多边形、矩形或圆形在地图上框选查询区域,执行完成后,选择区的资源高亮显示并将查询结果显示在列表中。属性查询主要是根据选择的政区、资源类型以及面积等查询要素进行检索,符合条件的资源高亮显示并将结果显示在列表中。
4)数据统计分析模块:包括行政级别统计和资源类型统计。行政级别统计主要是选定资源类型和统计时间后,根据需要可按省、市、县或乡级进行统计,统计结果图表显示在统计面板中,并可输出为文件。资源类型统计主要是选定资源类型和行政级别后,根据时间进行检索。
2.3 数据编码规范设计
平台数据源包括处理后的遥感影像数据、实地勘测数据、分类处理后的栅格影像、行政区划矢量数据、统计数据等。为保证对所有数据的自动批量入库以及方便对数据进行查询、统计、索引定位,对遥感专题信息产品等空间数据按照统一的编码规范进行标准化,其他数据对应归入到空间数据关联的属性数据表中。标准化命名规范如下:
数据类型(格式)_卫星类型_传感器类型_数据类型(用途/行业)_期数(年)_期数(月)_期数(日)_行政区划编码(省)_行政区划编码(市)_行政区划编码(县)_行政区划编码(乡)_行政区划编码(村)_空间范围(自定义区域代码)_制作时间(版本号)。定义字段如果在操作时为空,该字段用“#”代替。
2.4 数据库设计
空间数据和属性数据分开存储,属性数据通过属性表存储于SQL Server中,空间数据则通过ArcSDE空间数据引擎存储于SQL Server中。对于用户管理和部分属性查询模块,借助ADO.NET和数据库进行连接,完成数据交互功能,实现对属性数据库的检索、处理和更新。对于地图操作、空间查询和统计分析模块,借助ArcGIS Server中的动态图层对ArcSDE进行调用[12],实现对空间数据库的检索、定位和分析。数据库逻辑设计如图3所示。
图3 数据库逻辑设计
3 系统实现
在Microsoft Visual Studio 2013开发平台下建立一个LY.WEB解决方案,根据传统的三层框架模式建立表示层(WEB)、业务逻辑层(BLL)和数据访问层(DAL)。为了更好的体现面向对象的编程思想和系统框架,引入了数据链接层(CONN)和模型层(MODEL),即根据平台框架的功能差异,在解决方案下新建不同的项目。
3.1 空间数据与属性数据的关联
ArcGIS Server的动态图层功能需附加到地图服务上,方可实现对ArcSDE的调用,从而在属性查询时,达到属性信息和空间信息的有机结合。属性查询模块可以根据选择进行单条件查询和多条件查询,前端页面选择好查询条件后,平台通过Ajax的异步通信方式与后台服务器进行数据交互,利用Ajax可以部分更新网页内容的功能,无需刷新整个页面,即可实现结果刷新[13],减少了响应时间,提高了平台效率,关键点是必须协调好调用方法与Ajax执行方法之间的逻辑关系,当Ajax在与服务器进行异步通信时,要注意方法的执行顺序,否则会因为未返回正确通信结果而使调用方法得到错误执行结果。
目前,基于ArcGIS API for Javascript的WebGIS开发中,大都会用到Ajax技术[14]。与没有使用Ajax的传统Web应用程序对比,它通过http向服务器请求少量信息的功能使Web应用程序的可操作性更强、用户体验更友好。
由于ArcGIS API for Javascript实现对图表专题图的渲染以及遥感超大数据量的展现需求较为困难,选择操作简单、图表种类丰富、数据挖掘整合能力强大、可支持千万数据前端展示的ECharts控件较为可行,它满足了平台针对不同用户服务的需求,使图表展示更具灵活性,无需背景知识即可明白其表达的涵义。
部分实现代码如下:
//通过资源名称、行政区域以及时间获取符合该资源类型的信息
.ajax({
type: "Post",
url: "GF_MainMap.aspx/getResourceInfo",
data: "{'resourcename':'" + resourceName + "','districtcode':'" + districtCode + "','year':'" + year + "','month':'" + month+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
resourcesInfo = data.d;
if (resourcesInfo!="[]") {
//读取信息
var obj = "";
obj = eval("(" + resourcesInfo + ")");
……}
}
})
var attQuery = new AttributeQuery(MyMap, resourceName, districtCode, year, month);
attQuery.queryByCondition();
3.2 系统运行界面
图4为以管理员身份登录后,进入的林业系统主界面,左侧导航栏为主要功能模块,可以进行属性查询选择;中间为高分卫星遥感影像底图上叠加的京津冀行政区划图以及用户选择的遥感应用服务矢量图层,地理空间上的查询、统计和GIS分析等结果可在该区域内显示;右侧为地图浏览与展示模块,包括工具选择栏、地图切换、视图切换、鹰眼等功能小部件。
图4 高分遥感京津冀一体化服务平台属性查询功能
4 结束语
高分遥感京津冀一体化应用平台在基于对多源数据标准化规范设计和统一的空间、属性数据库管理的基础上,通过ASP.NET的三层架构、集成jQuery开源框架,融入Ajax技术,结合ECharts控件丰富的图表类型和直观、易用的交互方式,把挖掘和提取的国产高分遥感信息转化为直观的图、表,构建了高度集成化的WebGIS服务平台,实现了国产高分遥感信息的动态浏览、便捷查询、统计分析,以及遥感信息在空间上的可视化展示和时间尺度上的多期回顾,解决了京津冀区域协同发展中省、市、县、乡四级行政区域无法及时获取国产高分遥感信息服务的问题,为国产高分卫星遥感数据在京津冀不同区域尺度,尤其在县、乡小区域尺度上的应用,提供了快速、可靠的空间信息查询和分析手段。