谢文君 ,刘 复 ,李俊杰 ,张 文
(1. 水利部信息中心,北京 100053;
2. 武汉大学遥感信息工程学院,湖北 武汉 430072;3. 广州市城市规划勘测设计研究院,广东 广州 510030)
湖泊和水库(以下简称湖库)是大气圈、生物圈、土壤圈和陆地水圈相互作用的连接点,是全球环境变化的敏感区域[1,2]。近年来,经济社会的迅速发展伴随着湖库生态环境的严重恶化,加强水域监管、改善和保护湖库生态环境迫在眉睫。遥感与GIS 相结合的方式是当前水资源监测的重要手段之一,可以快速全面地获取地面信息,实现湖库水域常态化监测[3]。对此,国内外大量专家学者对其进行了研究。JeanFrançois 等[4]利用 300 万景 Landsat卫星图像量化了过去 32 a 来全球地表水的变化,分析了气候变化和人类活动对地表水发生的影响;Verpoorter 等[5]使用高分辨率卫星图像制作了一个Global Water Bodies 数据库,描述了湖泊的丰富度和面积等指标,可有效辅助量化全球碳循环与生态变化;臧菁菁等[6]使用 Landsat 影像提取了 1975—2014 年间巴尔喀什湖水体,分析了其面积变化趋势及影响因素;马艳敏等[7]利用 2000 年以来的MODIS 数据,采用目视解译的方法监测吉林省西部主要水体面积动态变化。
近些年我国在卫星遥感监测应用方面进步较快,但相较于国外,国外学者已尝试建立全球范围的多源水体综合存储、分析与管理模型[8],而国内多以单一湖库、区域的水体长时序变化驱动机制与环境响应研究为主,系统化、自动化、智能化程度有待提升。为此,本研究尝试探究自动化的湖库监测方法,并采用高分 1,2 号卫星数据综合应用遥感监测和 WebGIS 技术设计实现全国重点监测湖库可视化分析平台(以下简称平台)。
面向的重点监测湖库包括全国水利普查涵盖的大中型水库与面积在 1 km2以上的湖泊,数据时间范围为 2016—2018 年,数量多达 7 500 余个。相较于一般的水资源监测,具有监测湖库数量多、范围广、精度要求高和时效性强等特点。其中,湖库面积及其水域范围是湖库监测的重要指标,能够客观反映干旱内陆流域内的水量平衡过程[8],对于了解湖库周边生态环境动态变化、防洪抗旱等都具有重要意义。因此,利用遥感监测周期短、范围广、效益高等特点,不仅能够分析不同时相下湖库面积和水域范围等指标的动态变化过程,结合 GIS 技术还可以实现全国重点湖库数据的高效组织管理与可视化,方便用户直观、清楚地掌握水体的变化规律,有助于降低监测成本,有效辅助水利部门决策,充分发挥时序遥感监测产品的应用价值。
重点湖库监测的主要流程如图1 所示。首先使用长时间序列的高分辨率遥感影像利用自动化的水体提取算法进行水体提取,然后通过一系列的数据后处理生成不同时相的湖库矢量,并对这些矢量进行组织和管理,存储至空间数据库并建立空间索引。最后结合原始的遥感影像,引入空间分析方法实现湖库的长时序动态监测,包括湖库面积时序、水域范围变化分析等。采用流程化的重点湖库监测技术,有利于协助水利部门快速掌握我国重点湖库基本情况,系统把控湖库的开发治理和保护状况,为经济社会发展提供可靠的基础水信息支撑和保障。
图1 重点湖库监测技术流程
基于遥感影像进行重点湖库的监测,其主要监测要素是湖库的水域范围、形态和变化情况,这些要素非常适合于通过可视化的方式进行展示和表达,具有更加直观、便于分析理解等优势。因此,结合重点湖库遥感监测的动态性、连续性等需求,可充分利用 WebGIS 开发框架构建重点湖库监测系统,建立统一的 Browser/Server 模式重点湖库监测信息管理、发布、表达与分析平台。服务器端专注于重点湖库监测信息的统一管理及更新,浏览器端则强调监测信息的动态表达与交互分析,从而有力支撑海量湖库监测信息的及时更新与高效分析利用。
为了更好地支撑重点湖库的表达与分析功能,除了管理全国重点湖库的矢量数据,还需要更多气象水文信息,因此将符合中华人民共和国水利行业标准 SL 323—2011《实时雨水情数据库表结构与标识符标准》的水利部全国水雨情数据库中的气象站点和指标记录与湖库建立映射,并进行统一管理。为便于开发和移植,选择采用成熟的 PostGIS/PostgreSQL 作为平台后端信息数据库。PostGIS 是在对象关系型数据库 PostgreSQL 上增加了存储管理空间数据能力的开源 GIS 数据库,是目前功能最强大、特性最丰富和最复杂的开源软件数据库系统。
湖库矢量的属性表字段如表1 所示,包括了湖库的名称和代码、提取湖库所使用的影像产品号、景号、湖库面积等信息。湖库矢量表不仅存储了湖库本身的属性信息,还记录了相关的影像来源信息,方便溯源和质量控制。
为了提高空间数据库查找和检索特定表的速度,提升数据库的整体性能,PostGIS 默认对矢量数据建立 GiST(Generalized Search Trees)索引。GiST是一种平衡的树状结构访问方法,适用于多维和集合数据等多种数据类型。
气象数据中,与水域面积变化关系最为密切的为降水量、蒸发量、气温与水温等信息,具体包括测站基本属性表、降水量统计表、蒸发量统计表和气温水温多日均值表。其中,测站基本属性表用于存储每个测站的测站代码及经纬度等基本信息。降水量(如表2 所示)、蒸发量统计表存储雨量站(含测报雨量的其它站)测报的每旬或每月的累计降水量及蒸发量。气温水温多日均值表存储冰情观测站报来的有关气温与水温的日、旬、月和年的平均值。PostGIS 支持高效的空间/非空间数据多表联合查询,故可快速实现指定湖库特定时间、距离范围内的气象站点筛选及指标查询。2.2 水体数据服务及其调度优化方法
表2 降水量表
B/S 模式中,空间信息服务的发布需要依赖于地图服务器。GeoServer 作为一款优秀的地图服务器,支持多种数据源的管理与发布,可为平台提供重要的空间信息服务支撑。
GeoServer 提供了基本的矢量和栅格文件存储支持,用户需要预先将需要查询、显示的数据上传到GeoServer 的数据存储中。但是,当需要操作大量Shapefile 文件时,重复性的数据上传工作就显得效率低下。
GeoServer 集成了 3 种数据请求与查询的方式,分别为自带的 WFS/WMS 请求、OpenLayers 封装的 WFS 接口和结合 PostGIS 的 SQL 视图。其中,SQL视图是调用 SQL 查询语句将数据库中的数据表以图层形式发布的一种手段。SQL 视图可以调取PostGIS 中同一数据库下的任何数据,从而使用户无需在 GeoServer 中重复发布数据存储。该方法可以设置多个通过 WMS 或 WFS 请求的 URL 传递的参数变量,可以解决前 2 种方法 WMS 无法进行过滤的问题,同时也极大发挥了空间数据库的分析能力,其查询响应较快,适用于数据量较大的查询。
湖库监测系统请求的 WFS 服务返回的是包含湖库所有的坐标点的 GeoJSON 文件。由于湖库矢量形态复杂,动辄包含数万甚至数 10 万个坐标点,故需要通过优化服务调度性能提高系统前端的查询和响应效率,故本研究提出了一种 WMS + WFS 混合查询优化策略。
WMS 主要以图片形式返回给客户端,相对于GeoJSON 文件体量更小,多旬湖库矢量数据叠加对前端造成的显示压力显著低于 WFS。同时,湖库的属性信息通过不返回空间位置信息的 WFS 进行二次查询,GeoServer SQL 视图查询速度较快,即可克服 WMS 不包含属性信息的问题。此外,针对 WMS无法在客户端渲染样式的问题,采用了 GeoServer +uDig 的渲染方式。uDig 是一款开源的桌面 GIS,在uDig 中可以制作 GeoServer 中专门针对 WMS 的样式文件.sld。在 GeoServer 中将此文件发布为 style,直接应用到 SQL 视图对应的图层中去,则请求该图层的 WMS 服务时可自动渲染相应样式。
OpenLayers 是一个专业面向的 WebGIS 可视化的 JavaScript 库,用于显示地图和地理空间数据,并实现了丰富的交互功能。OpenLayers 支持 OpenGIS协会制定的 WMS 和 WFS 等网络服务规范,可以通过远程服务的方式,在浏览器中加载显示以 OGC服务形式发布的地图数据。OpenLayers 封装了大量交互操作接口,支持空间与属性分析,可充分支持湖库监测应用中大量的用户交互性分析需求。同时,可视化图表能够通过图形化方式对信息进行直观的表达分析,是交互可视化的重要支撑工具。尽管 OpenLayers 能够支持一定的可视化图表绘制,但是其展现方式和动态性还存在局限性。因此,为了支持强有力的在线可视化分析图表的动态、交互绘制,还需引入开源 Web 绘图库 Echarts 与 CanvasJS。
平台需要将水体提取矢量与分析结果提交到前端进行展示,故需要选择合适的空间数据库、网络服务器与开源 WebGIS 框架,以实现水体矢量、气象数据与多种统计结果的 Web 端可视化,并完成 GIS 常用分析、联合过滤查询与交互等功能的开发。平台采用三层架构设计,如图2 所示,自下而上分为数据层、业务层和表现层。数据层是湖库监测系统的基础,定义了矢量、遥感影像、气象统计数据的组织结构,通过空间数据库存储。业务层是系统的核心功能部分,负责处理系统前后端数据交互规则,包括调用地图瓦片和要素服务、矢量和影像数据管理等基础系统功能。表现层是展现在客户端并且能够与用户交互的最外层,水利部门工作人员能够直观地在地图上浏览全国重点湖库的矢量和统计信息,同时查看不同时相地湖库面积等指标的统计图表,实现高效便捷的动态监测。
图2 湖库监测系统总体架构图
系统工作流程如图3 所示。
图3 系统工作流程图
湖库监测系统的功能主要包括以下 3 个方面:
1)湖库矢量查询。湖库矢量结果查询与可视化是本系统的核心功能。为方便用户进行清晰和体验良好的查询,系统应提供多种参数的过滤查询方式,包括时间范围、水域面积过滤等。在此之上,提供 2 种数据查询组织方式:空间与精细查询。空间查询为按湖库所属行政区划组织的查询方式,用户可按省、市、县级行政单位搭配其他过滤参数进行水体矢量的查询,横跨行政区界的湖库应均予以考虑入内,涉及同一湖库在多旬内均有记录的情况,应将其叠加显示;精细查询为按指定湖库组织的查询方法,用户须在查询栏输入湖库的名称或代码,根据提示信息选择要查询的湖库,客户端即展示时序范围内此湖库的全部记录。2 种查询完成后除了要展示图形信息外,其属性信息也应以表格形式呈现在界面上,以便用户整体把握,同时提供交互操作选项实现指定矢量结果的视角放缩,对被选中的湖库记录,应予以高亮显示。
2)在线分析制图。在线分析制图旨在综合展示湖库随时间的变化情况及周边气象统计数据。该功能只可在精细查询激活的状态下使用。当用户完成精细查询时,右侧结果栏上 2 个制图按钮将被激活。用户点击面积变化按钮后,页面将弹出 1 个模态框,该模态框的主体将包含 1 个显示湖库水域面积随时间变化的插值曲线图。用户点击气象信息按钮后,系统将首先执行空间查询,查找该湖库周边1 km 范围的所有气象站点,以兴趣点扩散的形式加载到地图上,用户点击这些兴趣点时,站点上将会弹出 1 个气泡,站点全年的气象记录将被以柱状图或表格的形式展示出来,具体包括降雨量、蒸发量和气温水温等。通过可视化的分析制图功能可以使用户更准确地理解湖库面积与各种气象指标的相关程度,掌握指定时间范围内湖库的变化趋势。
3)地图交互。地图交互功能是一个完整的 GIS不可或缺的部分。系统需要提供地图基本的放大、缩小、全屏、拖动及其他交互等功能。同时,系统还需提供基本图元绘制、修改、测量距离和面积及地图切换等基础功能。
整个系统功能模块详细架构如图4 所示。
系统主界面底图为开源的 Stamen地形图,分为地图、交互操作栏、查询条件栏和查询结果栏 4 个部分。用户可在交互栏切换为 OSM 或影像地图,查询条件栏和结果栏均提供展开收起等交互操作,条件栏默认打开,结果栏默认收起,并在执行查询后立即弹出。
1)基本交互。主界面右上方为交互分析操作栏,除了常规的地图缩放、漫游等功能,还设计了“全屏”“画线”“画多边形”“删除绘制”“编辑图元”“测量距离”“测量面积”等交互功能。其中绘制图元的效果如图5 a 所示,测量功能如图5 b 所示。
图4 系统功能架构图
图5 基本交互功能
2)矢量查询。矢量查询分为空间和精确查询2 种方式,均通过左侧查询面板实现。空间查询支持按经纬度和行政区划查询,以北京市为例进行空间查询的结果如图6 所示。查询结果在页面右端以列表显示,放大后如图6 a 所示,左侧以眼睛形状呈现的按钮即可直接高亮对应矢量并将系统视角缩放到对应范围与层级,其效果如图6 b 所示(以官厅水库为例)。考虑到存在湖库同名的情况,精确查询需要用户在输入栏输入湖库的名称或代码。
3)统计制图。统计制图为专门针对精细查询实现的后续分析操作,由查询结果栏上方 2 个按钮实现。图7 a 展示了查询湖库在所查时间范围内的面积变化 3 次样条插值结果,图7 b 以点扩散的形式显示出该湖库附近 1 km 范围内的气象站点位置信息,点击站点将弹出该气象站点降水量统计信息,包括柱状图和折线图,如图7 c 和 d 所示。
以全国重点湖库为监测对象,综合利用遥感技术和 GIS 技术实现了湖库面积等指标的动态监测和可视化展示,设计实现了全国重点湖库监测系统。通过使用高分卫星影像进行湖库水体提取。试验表明,设计的湖库水体提取流程能够较好地提取出重点湖库,且通过矢量切片技术和 WMS + WFS 混合查询策略实现了大量湖库矢量的高效网络传输和前端显示,能够协助水利部门快速、直观地掌握全国范围内的湖库变化情况,降低了监测成本。全国重点湖库监测系统虽然满足了当前需求,但仍存在改进的地方,主要包括 GIS 空间分析和自动化制图有待完善,融合多源数据的数据管理架构设计有待改进等,改进后的湖库监测系统可以为我国水利部门大范围水资源管理系统建设提供参考。
图6 空间查询结果
图7 统计分析制图