张雯钰,戴梓萱,丁聿铭,周 杰,2
(1.华中师范大学 城市与环境科学学院,湖北 武汉 430079;2.华中师范大学 地理过程分析与模拟湖北省重点实验室,湖北 武汉 430079)
洪涝灾害具有突发性强、发生频繁、危害性大和季节性强等特点,是对人类生命和财产威胁最大的一种自然灾害。因此,对洪灾的监测与预警是开展洪灾应急响应的重要保障。专家学者们主要关注应用遥感数据获取洪涝信息,采用气象模型、水文模型等构建洪涝监测预警系统[1]。发达国家洪涝灾害监测系统的研究相对较为成熟,许多国家都建立了完善的洪涝监测体系,其中一些系统已经应用于实际的洪涝预警和救灾工作。例如美国国家海洋和大气管理局(NOAA)的全球洪水监测系统(Global Flood Monitoring System, GFMS)、欧洲气象卫星应用组织(EUMETSAT)的洪水响应计划、亚洲防灾减灾中心基于Hydrafloods开源程序包,在湄公河流域实现对洪水的近实时监测系统。这些系统都利用了先进的遥感、气象和水文等技术手段,结合实时的观测数据和数值模型,为区域乃至全球范围内的洪涝监测和预报提供了重要的支持和服务。国内近年来也在洪灾快速监测领域取得了较大进展,但由于数据共享不畅和数据质量不佳等原因,在实际应用中部分地区的洪涝灾害监测数据不足,难以满足实际需求。加之目前国家尚未建立面向公众服务的洪水监测与预警系统,导致公众对区域洪水的发生发展态势缺乏足够的了解。
相比于地面监测、气象预报等传统监测手段,卫星遥感技术在大范围洪灾快速监测与评估应用中具备巨大潜力[2]。卫星遥感数据覆盖面广,可以在全球范围内实现对重大自然灾害及其影响宏观、动态、快速准确地监测和评估。实时性高,可快速获取数据并进行处理,发布监测结果,使相关部门在短时间内获得大量洪涝灾害信息。成本低,不直接接近灾区,避免了一定的风险和损失。常见的基于卫星传感器得到的光学数据、雷达数据和地球重力场数据等都能从不同侧面对洪水进行监测与评估。光学遥感影像光谱分辨率和时空分辨率较高,主要通过结合多光谱信息来获取地表水信息[3],对洪涝淹没范围的边缘提取具有一定优势。雷达遥感影像利用微波辐射原理[4],通过水体反射和散射的信号同其他地物的巨大差异,提供地表高分辨率水体覆盖范围产品。热红外卫星通过红外辐射来监测地表水体的温度变化,可以较为准确地判断水体位置[5]和洪灾范围。重力卫星数据通过重力场测量来追踪水体运动常用于地下水储量监测[6],比如GRACE卫星,但其空间分辨率相对较低,一般为数百千米,难以对洪涝灾害的具体范围进行细致的监测和预测。
目前大多数快速提取陆地表面水体的工作基于光学卫星影像和雷达影像展开。光学影像对天气条件非常敏感,当出现云雾等天气现象时,影像的质量和解译精度会受到较大程度的影响。大部分洪灾是由于持续时间较长的强降雨造成(除由于自然灾害、工程事故等导致的突发性洪灾和冰洪灾等),特别是在季风驱动的环境中,暴雨往往伴随着云层的厚积广布,故光学卫星影像经常面临云层遮挡的问题[7],难以获取灾害时刻下垫面信息。此外,夜间往往是洪灾发生和发展的关键时期,但光学影像需要光线成像,因此无法在夜间进行准确的观测。合成孔径雷达(Synthetic Aperture Rader,SAR)数据不受云雾、降水和光线的影响,能够对地表进行全天候的观测[8]。但雷达波在与地表相互作用时会受到地形影响,产生复杂的干扰[9]。雷达信号在回波过程中会与地面上的微小物体(如地面粗糙度、建筑物和树木等)相互作用,这些微小物体会散射信号产生干扰,使得原本应是同一种类型的区域(如水体)出现了灰度值不同的局部明暗区域,形成散斑,因此需要进行大量的数据预处理。目前主流用于监测洪灾的数据集各有优劣,不同数据集有不同的应用特性。对洪灾进行高精度、近实时的快速监测评估,不仅要根据具体的应用场景选择合适的卫星数据,还要融合多源卫星数据综合分析。在生态梯度更大的范围内考虑数据融合方法,充分结合光学和雷达数据的优点。在小范围内,雷达数据更适合在阴天有效、及时地监测水域范围;而光学数据适合在云量较小的条件下监测水库和小范围水体的状况[10]。在连续降雨情境下,2种数据都可与历史同时期平均水域范围进行比较分析。历史水体数据使用欧洲空间局和联合国粮农组织等多个国际机构和组织基于多源卫星数据联合开发的Global Surface Water 1984—2021高分辨率历史全球地表水数据集(JRC数据集)[11]。
在洪涝淹没范围提取时,一般将洪灾发生后的影像称为灾后数据,发生灾害前的影像称为灾前数据。灾后数据一般情况为近实时遥感数据提取出的水域范围,灾前数据可以是灾害发生前的近期水域范围,也可以是该区域JRC数据集中历史同期平均水域覆盖范围。通过对灾后数据与灾前数据水体范围的比较,可识别出潜在的洪水淹没区。故洪涝监测的核心任务是水体范围的准确识别。使用遥感数据提取水体时的一般步骤为:获取数据、数据预处理、计算水体指数、设置阈值、进行像元分类、进行影像后处理。
完成淹没范围提取后,对洪灾造成的损失进行评估是一个相对复杂的过程[12],需要考虑损失范围、值守财产、经济影响、环境影响和社会影响等各个方面的因素,且各因素之间紧密相关。在具体的评估过程中需要根据不同地区、不同场景来确定评估因素的权重和价值[13]。目前洪灾的灾情评估模型及方法主要包括:灰色聚类分析模型、熵权-灰色关联度分析和模糊评价模型等[14]。以上模型大多适用于洪灾发生后收集一定信息再进行评估,实现对洪灾影响范围的快速评估可将洪水淹没范围与淹没区人口密度、社会经济等数据叠合进行空间统计。
基于以上分析,本文旨在利用开源工具包开发一个基于Web的洪灾快速监测与灾情初步评估系统,实现洪灾信息的分发和共享,为普通民众和国家政府各级部门开展洪灾管理与应对提供决策依据。
实现洪水的快速监测依赖于水体提取方法的自动化,从而可避免耗时耗力的手动图像解译。在由NASA和USAID联合资助的SERVIR-Mekong项目框架下,杨百翰大学(BYU)Markert等[15]开发了Hydrologic Remote Sensing Analysis for Floods (Hydrafloods) 开源Python应用程序包用于融合多源卫星观测数据开展近实时洪水监测。该程序包基于Google Earth Engine(GEE)和Google Cloud Platform(GCP)构建,利用谷歌云计算对遥感数据进行大规模计算并处理[16],近实时提取高精度地表水体覆盖范围,还可以融合多个遥感数据集来提供每日地表水图[15],实现对地表水的每日监测。为了方便用户使用高基于云计算的地表水提取算法,项目开发人员在GEE的Python API(Application Programming Interface)的基础上提供了更高一级API以减少代码重复。本系统基于该程序包的API实现区域洪水淹没范围提取。接入系统的部分API如表 1 所示。
表1 Hydrafloods程序包主要API参考Tab.1 Main API reference for Hydrafloods package
1.1.1 卫星观测数据描述
在卫星观测数据集模块,系统接入常用于提取水体的6类公开数据集:Landsat7、Landsat8、Sentinel-1、Sentinel-2、MODIS、VIIRS。在Python环境中连接Earth Engine服务,即可从GEE平台调用以上数据集。在调用每一个数据集时程序还可加入质量评估的方法,用以屏蔽质量差的像素。
受卫星重访周期限制,实现高分辨率每日监测较为困难,对于已接入卫星数据空缺期观测数据,系统接入每日地表水融合功能(Daily Surface Water Fusion Process,DSWFP)接口。该功能实现主要包括3个步骤:数据融合、预测地表水的长期趋势和用短期趋势完善地表水的估计[7]。整个处理过程分为三部分:输出雷达-光学数据融合样本、利用谐波分析输出长期地表水动态和预测每日地表水范围。
1.1.2 淹没范围提取方法
淹没范围提取基于GEE Python接口实现。在获取了经过质量控制的卫星数据后,调用Hydrafloods程序包提供的API对数据进行校正、计算水体指数、对水体指数设置阈值,将图像二值化分割为水体和非水体区域。比较洪灾发生前后的水体范围得到研究区淹没范围。总的来说,淹没范围的提取分为2个主要过程:提取单时相水域范围与提取灾后淹没范围。
在提取水体时,在程序中将图像处理方法应用到所选数据集中,对选择的数据集进行相应的矫正处理,再选择水体指数和水体指数的阈值分割方法可快速得到水体范围。提取水体流程如图1所示。
图1 提取水体一般流程Fig.1 General flowchart of extraction of water body
一般情况下,辐射校正、大气校正2种数据矫正在数据集发布时已经进行,选取数据集后,如果为光学数据则使用照明矫正函数进行数据预处理,该函数基于太阳和视角几何对光学图像应用地形校正,专门用于处理来自Landsat8和Sentinel-2 传感器的图像。与光学影像预处理步骤不同的是,雷达数据中的斑点通常会降低图像分割和分类的准确性,因此应用散斑过滤器是常见的预处理步骤。在Hydroflood 程序包实现了gamma_map、lee_sigma、refined_lee等斑点过滤算法以消除噪声影响[17]。数据预处理后,选用合适的水体指数和参数进行计算以便更容易识别和提取水体。接着对水体指数进行阈值分割,Hydroflood 程序包中接入的常用的阈值分割算法有Edge Otsu算法,可以自动选择适当的阈值进行阈值分割进一步提取水体[18]。水体指数和阈值分割方法的选取影响水体提取的精度,需要根据具体的应用场景和数据特点来调整,以获得最佳的水体提取效果。最后返回水体指数图像和水体掩膜图像的影像数据,进行后续分析和处理。
提取洪灾发生后淹没范围的基本思路为洪灾发生前后水体变化的对比,有3种实现方式。第1种方法是洪灾近期多时相比较。为灾前灾后数据选择合适的卫星数据集,定义灾前灾后数据时间应最大程度同灾害发生前后时间接近。分别提取灾前灾后的水体范围,得到结果为二值化栅格数据,非水区域为0,水域为1。将灾后栅格数据减去灾前数据进行数组计算,即为所求淹没区。第2种方法是将灾后水体范围同历史同期平均水域范围比较。调用Hydrafloods包中extract_flood方法,使用JRC数据集中的过去5年季度性出现频次大于75%的水域范围作为灾前数据,选择灾害发生时近实时卫星数据作为灾后数据,将灾前灾后数据作差得到淹没范围。第3种方法需要获取不同时期2幅SAR图像,调用Hydrafloods包中lar_change_detection函数使用对数幅值比(Log Amplitude Ratio,LAR)变化检测方法提取淹没范围[19]。以上3种方法均在Python环境下实现。
1.2.1 评价指标
洪灾往往对农田、居民地和道路带来直接影响,本系统洪灾损失快速评估主要从四方面展开:人员伤亡、经济损失、生态破坏以及灾害救援损失。人员伤亡考虑受灾人口密度,经济损失数据通过统计分析受灾区域GDP反映。生态损失考虑农田、居民地受灾面积受洪灾影响较大的土地类型,救援损失统计受到洪灾影响的路网数据。系统拟用洪灾影响因子及数据来源如表2所示。
淹没面积数据来源于获取淹没范围后的统计数据。人口密度数据来源于World Pop,该数据集是目前精度最高、最可靠的长时间序列数据,数据单位为人/公顷,即一个栅格点代表1 hm2的人口数。农田数据、居民地数据来源于数据中国科学院地理科学与资源研究所二级分类数据。农田包括耕地、园地、林地和牧草地等。路网数据来源于高德地图网站,最小道路等级为最易受洪灾破坏的乡道,数据来源准确可靠。
1.2.2 模型描述
将人口密度、农田、居民地、GDP和路网数据存入PostgreSQL数据库方便后续数据更新和对洪灾情况的快速监测与评估。在Python程序中使用GDAL(Geospatial Data Abstraction Library)开源地理信息系统库将淹没范围与各项指标进行空间统计分析。评估模型框架如图2所示,使用Python中的psycopg2库连接到数据库,分别读取人口密度、土地分类、GDP等栅格信息和道路数据;使用GDAL库读取淹没范围数据,计算淹没范围的像素坐标后读取在淹没范围内的人口密度、农田等栅格数据的像素值,统计像素值的总和。对于矢量数据道路,连接到PostgreSQL数据库并创建游标,查询道路数据表并筛选出与水体范围相交的道路,输出道路名称,关闭游标和数据库连接。即可完成对洪灾影响范围的初步评估。
图2 损失评估模型Fig.2 Loss assessment model
WebGIS是一种可以通过Web浏览器访问的地理信息系统,它可以提供地图显示、数据查询、空间分析和数据共享等功能,使用户可以在Web平台上获取、分析和共享地理空间数据和信息。
本系统整体采用分层结构建立,系统架构如图 3所示,分为应用客户端UI层、服务层(Web服务与GIS服务)和数据库层[20]。总的来说,前端采用Vue框架结合Leaflet等前端组件实现,服务器端采用Python环境下Flask作为Web应用框架,GIS服务器使用GeoServer,所有GIS数据通过GeoServer渲染后以WMS标准格式提供给客户端访问。主要功能实现依赖于Hydrafloods、Wxee、GeoServer-rest等使用Python语言编写的开源程序包。Wxee程序包实现了将谷歌云平台处理结果快速简单地下载至本地文件夹。GeoServer-rest程序包实现在网页后端创建、更新和删除GeoServer工作空间、图层和样式文件方法。平台数据库使用PostgreSQL+Postgis存储用于快速评估洪灾的基础地理信息,包括栅格数据(人口密度、农田、建筑用地、GDP)和矢量路网数据。开发工具使用VScode。
系统界面如图4所示。界面主要部分为地图数据以及洪涝数据的可视化展示,底图数据来自于“天地图”。左侧工具条通过Leaflet组件实现研究区标注、选取。左下角为“全球地表水变化”不同图层对应的图例。右侧面板提供系统主要功能,包括不同卫星数据间的比对功能,水体范围提取、淹没范围提取、对研究区淹没情况进行受灾评估、历史水体数据重现等功能。
系统主要提供洪灾监测和洪灾损失评估两大功能,工作流程如图5所示。
图5 系统主要功能实现流程Fig.5 Flowchart of system main function realization
2.2.1 洪灾监测
平台提供多种数据集选择以适应不同的地理环境,选定数据集后,使用工具栏中的矩形框工具框选研究范围,在时间栏选择查询时间。为了提高程序的鲁棒性,当用户选择的起始时间内没有卫星影像生成时,系统将返回提示信息建议用户重新选择有数据生成的数据集或使用每日地表水影像来进行后续分析。
前端提供2个数据集选择接口,在获取淹没范围时,如果用户同时选择数据集1、2,默认数据集1为灾前数据,数据集2为灾后数据,分别为2个数据集指定起始时间后,得到2个时期水体范围进行求差运算后得到淹没范围。当用户只选择数据集1进行淹没范围提取时,默认灾前数据为同期历史水体数据。如果数据集1、2同时选择Sentinel-1数据,则使用数幅值比变化检测方法提取淹没范围。
当后端接收到前端获取淹没范围的指令后,系统启动谷歌云计算服务,依赖Hydraflood水文分析包进行淹没范围的提取,实现大规模计算和高质量输出。使用Wxee函数将云平台处理结果下载到本地,在平台后端经过数组运算后得到淹没面积。淹没影像通过GeoServer-rest API实现在GeoServer渲染后自动发布[21],以WMS标准格式供前端访问。
2.2.2 损失评估
损失评估功能基于淹没范围提取成功后使用。点击页面评估损失功能,将得到受灾人口密度、受淹农田面积、灾区居民地面积、灾区年GDP和受影响道路。当后端连接数据库后,基于GDAL统计出各项栅格数据在淹没范围的像素值总和,将统计信息转换为JSON格式返回前端,道路数据在查询后同样将结果转换为JSON格式返回到前端。右侧面板基于E-charts柱状图实现,使用GDAL分别统计淹没面积、灾前水域面积和灾后水域面积,将结果以JSON格式传入前端,更直观地展示水体淹没情况。
2021年8月12日03:00开始,柳林镇突发强降雨,降雨总量大、来雨急,降雨时间集中发生在凌晨。据气象部门统计,当地12 h累计降水量达503 mm,连续2 h降水量超过100 mm,均达到了有气象记录以来的历史极值。罕见的暴雨给柳林镇带来重创。
由于强降雨于夜间爆发,灾后数据考虑使用不受光照和云层影响的Sentinel-1数据集。根据卫星过境情况,2021年8月13日Sentinel-1卫星过境,使用Sentinel-1为观测数据,同月6号,Landsat 8卫星过境,灾前数据使用Landsat 8卫星数据。对灾前、灾后数据分别使用 “获取水域范围”功能,结果如图 6所示。图6(a)为灾害发生前2021年8月6日Landsat 8卫星数据,图6(b)为8月13日Sentinel-1观测数据,提取到的水域范围为蓝色。可以明显看出,灾害发生后卫星观测到的水域范围增大,且增加水域集中在柳林镇北部。
(a)灾前范围
使用系统“获取淹没范围”功能直接得到受淹区。根据卫星图像得出柳林镇三面环山,处于丘陵地区低洼地带,有必要对卫星数据应用坡度矫正函数提高准确性。等待约1 min后,页面会显示淹没范围(默认设置淹没区样式为红色)。将页面缩放到受灾最严重的柳林镇镇区,淹没范围提取结果如图7所示。可以看出,柳州镇镇中心居民地出现较为密集的水体,居民地外围农田也出现水体,放大图层可以清晰看到水体出现在桥梁、水库周围,具有极大的安全隐患。
得到淹没范围后,点击右侧面板中 “受灾评估”按钮, 评估结果如图 8所示。柳林镇受淹面积达43.328 km2,其中镇区受淹最严重,受灾人口达11 847,农田受损面积达837 hm2,居民地受影响面积为837 hm2,洪灾影响到了G240、许广高速、明金线、S263以及乡镇内部道路。
据当地政府统计报告,截至2021年8月15日14时,柳林镇受灾人口12 899,农作物受灾面积916 hm2,绝收面积474 hm2,一般损坏房屋2 064间,直接经济损失2.26亿元[22]。在系统评估结果中,受灾人口估计为11 847,受淹农田面积估计为837 hm2,受灾人口数量评估较为准确,但受淹农田面积相差94 hm2,误差较大。分析原因,此次暴雨在2021年8月12日上午水位基本退下,而在本次监测中灾后数据使用8月13日的Sentinel数据,距降水量最大的时间间隔将近24 h,加之水流流速快,会有渗入下垫面、流进居民楼、流入水库等情况,卫星监测得到的受淹面积比实际小,因此将淹没范围与农田数据叠置分析时,会导致少估计淹没农田面积近100 hm2。
系统在山洪暴发时,对地形复杂的小区域监测能力仍待提高。分析柳林镇镇区淹没范围可以得出,居民楼等其他地物会影响水体提取结果,系统呈现的结果不一定覆盖完整的受灾区。因此在实际应用中,当某一区域的提取结果出现连续零星分布小块水体时,需要结合当地土地利用类型等数据加以重视,进一步研判洪灾风险。
本文基于WebGIS技术和多源卫星遥感数据开发了洪灾监测与损失评估系统。该系统具备快速、准确的监测洪灾、灾情初步评估以及传播信息等功能。系统部署到服务器后可通过互联网将洪灾信息及时发布给公众,既面向受灾民众,也面向政府救灾部门、社会救援队伍,以期解决在灾害监测预报预警中信息互通与“最后一公里信息”传播问题,为灾害应急响应的高效开展提供有力技术支撑。
在洪水监测理论方面,系统根据不同的灾害背景提供多种方法进行淹没范围提取,包括洪灾近期图像对比,与历史同期水域范围对比等方法。系统依赖谷歌云平台海量公开遥感数据集提供多种观测数据源,为提高监测准确性,针对不同类型数据提供不同预处理方法与水体提取算法。云计算的高性能算力是淹没范围快速计算和发布的关键,提高了基于遥感数据的灾害预警信息的精准性、时效性。在实际应用于洪灾快速监测时,灾后影像获取时间受研究区卫星重访周期限制,且由于时间分辨率和空间分辨率之间的权衡矛盾关系,高精度分辨率影像往往时间分辨率较低,所以选择数据源时要根据卫星过境时间选择最接近灾害发生后的数据或考虑使用高分辨率的每日地表水监测模拟数据。进行淹没范围提取时,系统响应时间根据研究区范围大小而变化,但总体响应时间较常规淹没范围提取方法大大提升。例如第3节实例展示中柳林镇面积为197.49 km2,在洪灾发生的第二天Sentinel-1卫星过境,即可进行洪灾监测,选定受灾区域后出现淹没范围的响应时间为1 min左右,实现了对洪灾的快速监测。
在系统开发方面,本系统使用分层结构设计,完全基于容易定制和扩展的开源组件搭建,节省了开发和运维成本。前端采用轻量级框架Vue.js进行组件化开发,结合Leaflet等组件构建用户友好型界面。服务器端在Flask框架下接入云计算平台,基于HydroFloods、Wxee等开源工具包,实现了遥感数据自动下载、处理、发布一系列自动化流程。同国际其他洪灾监测系统相比,本系统侧重公开的多源卫星数据和长时间序列遥感数据的应用,以及在云计算技术支持下对全球区域近实时较高分辨率洪灾快速监测功能实现,开发和维护成本更低。虽然系统服务器设计已大大缩短数据处理和发布时间,但监测在洪灾发生后进行,获取的淹没范围的时效性受卫星回访周期限制严重。英国的Ambiental公司研发了一套同样利用卫星监测洪水的系统——FloodSat,实现了在洪灾发生时卫星已经对潜在风险区进行观测。该系统由洪水建模软件Flowroute-iTM和雷达卫星系统组成,通过感知网络获取全国范围的实时降雨量、地面积水量、河流遥测数据及天气数据,借助洪水建模软件提前预判可能发生洪水的区域,指令雷达卫星系统提前制定扫描监测计划,几乎可以实时地监测洪水扩散范围、流速和深度等数据,大大提高了监测的时效性。但这类系统的时效性通常需要投入大量资源来实现,包括卫星数据、模型开发和实时监测等,开发、运营维护成本激增,且这类系统通常不会免费提供给公众使用,而是面向政府、科研机构等利益相关部门出售。相比之下,本系统充分利用公开资源和开源技术,在兼顾经济性、开放性和普惠性的情况下尽力保证最大程度数据的时效性,但仅借助气象预报作为洪灾发生参考依据,缺失了洪灾预报功能。
由于实际洪灾监测与灾情评估中地理环境不同,数据预处理步骤和不同用地类型适用的提取水体算法不尽相同。未来进一步改进系统的方向要面向不同用户群体提供不同的淹没情况查询方法。对于普通民众,基于不同地理环境(城市、山地等)提供基本获取淹没范围方法,面向救灾部门或专业人员应提高淹没范围提取准确性。考虑到结合不同的地貌类型或环境条件来匹配不同的数据集、在系统中可选择不同的数据矫正方法、水体指数以及阈值分割算法。为了更好地掌握洪灾发生情况和变化趋势,还需要考虑结合成熟的洪水预测模型、气象和水文数据等多种数据源进行实时监测和分析。在洪灾损失评估方面,系统目前仅将常用评价指标与淹没范围做叠置空间分析,评估准确性方面会有所降低。由于不同区域房价、物价、人力资源差异,在进行区域直接经济损失评估时,应结合当地经济及其他指标使用成熟、较为准确的灾害损失智能分析、科学评估方法。
总之,本文为洪灾监测与灾情评估系统的建立提供了一种可行的实现途径,强调了融合云计算与遥感技术在洪灾监测领域的创新性应用,具有广泛的社会意义和前景。