基于Android的农田干旱遥感动态监测系统研制
2021-07-08龙泽昊张添源许伟秦其明
龙泽昊,张添源,许伟,秦其明,2
(1.北京大学地球与空间科学学院遥感与地理信息系统研究所,北京 100871;2.自然资源部地理信息系统技术创新中心,北京 100871)
0 引言
我国地域宽广,农业旱灾时有发生,以海量遥感数据为支撑,并对农田干旱进行有效监测是保证国家粮食安全和维护社会稳定发展的基础[1-2]。通过对农田干旱监测研究成果进行应用,建立起相应的农田监测系统可最大发挥研究成果效益,例如金川等[3]研制了一套基于桌面端的干旱监测遥感支持系统,并结合宁夏试验区的实际应用对监测结果进行了展示;Wu等[4]研发了全球农情遥感速报(CropWatch)系统,以遥感和田间观测数据相结合的方式,集成了作物面积、干旱和产量等多种监测指标,但是目前的农田干旱监测系统仍然存在着一些问题。
首先,农田干旱监测系统以桌面端居多,便携性差,无法满足用户实地农田作业的需求;而移动智能手机凭借易携带、触摸式交互等特点,具有信息获取及时和操作便捷等优势。并且随着5G通信技术的不断推近,通信延迟得到了极大的降低,也为移动端间的图像数据快速传输奠定了基础[5]。当前主流的移动端操作系统有Android,iOS和Windows Phone等,而Android操作系统由于强大的软件生态圈和良好的用户使用体验,占领了移动端市场的绝大部分份额[6],适宜作为农田干旱遥感监测系统的搭载平台。
其次,系统对农田干旱情况的动态监测能力弱。由于海量遥感数据亟待妥善管理和计算力不足,现有农田干旱监测系统主要以发布静态干旱监测成果的方式来为用户服务,该类系统缺少动态干旱监测分析的能力,无法满足实时监测的目的[7]。云计算技术为海量遥感数据妥善的管理提供了解决方案,通过与遥感技术相结合,孕育而生的遥感云计算平台不仅极大方便了多种遥感影像数据检索与获取,还将数据处理所需要的计算资源环境在云端实现,解决了本地计算力不够等问题[8-9]。谷歌地球引擎(Google Earth Engine,GEE)作为遥感云计算平台的先锋,不仅集成有多种系列卫星影像数据,而且也提供了实时处理、分析和可视化这些数据的强大功能,被广泛应用于农业作物监测、资源灾害评估、全球气候变化等方面的研究[10-11]。
为了改善农田干旱监测系统上述现存的问题,本文依托GEE云计算平台以及Android移动操作系统,搭建了一款与农业密切关联的移动端农田干旱遥感动态监测系统(farmland drought remote sensing dynamic monitoring system,FDRSDMS),对于农田干旱监测研究具有现实意义和参考价值。
1 系统设计
1.1 系统架构
FDRSDMS在多种开源技术框架支持下,以Android移动端为搭载平台,并利用GEE遥感云计算平台优势,实现了农田数据的录入、处理、存储和农田干旱的遥感动态监测。如图1所示,FDRSDMS结构分为显示层、服务层和支撑层3层,采用“瘦客户端”设计思想,显示层负责界面绘制、请求发送与响应等逻辑操作,模型计算、数据处理等操作交给服务层和支撑层完成,保证了系统的流畅运行。其中,显示层在OSMDroid开源地图库的支持下,以Retrofit通信框架高效进行客户端与服务端通信为基础,进行了不同业务功能的实现;服务层通过建立GEE遥感平台服务和农田数据管理服务两大模块,为显示层功能的实现提供服务支持;支撑层采用MySQL数据库管理农田作物数据,并结合GEE平台和Flask框架为服务层服务的部署提供了数据管理和计算资源支持。
图1 系统总体架构Fig.1 System overall architecture
1.2 业务功能
面向农田干旱监测需求,FDRSDMS划分为基础服务模块、农田数据采集管理模块和农田干旱遥感动态监测模块,其功能设计如图2所示。基础服务模块包括图层管理、地图操作与交互、全球定位系统(global positioning system,GPS)定位服务功能,上述基础功能为其他两个业务模块提供了基本技术支撑;农田数据采集管理模块针对户外作业需求,通过服务层的农田数据管理接口实现了数据测量与录入、数据修改与删除、数据查询与导出功能,为用户在野外无纸化快速采集农田作物数据提供了可能;农田干旱遥感动态监测模块通过服务层的GEE遥感平台服务接口,实现了基于植被指数、干旱指数和自定义模型的农田干旱动态监测,其中基础服务模块以及农田数据采集管理模块是基于现有成熟技术实现的,而农田干旱遥感动态监测功能则需要用到本研究团队所提出的监测模型,下一节将重点介绍农田干旱遥感动态监测模块功能的实现。
图2 系统业务功能Fig.2 System service functions
2 干旱动态监测关键技术与实现
GEE平台提供了基于Python的本地客户端库,通过在Flask服务器端对GEE平台Python接口进行开发,将农田干旱监测模型集成至Flask服务器端,可实现移动客户端上的动态农田干旱监测,技术方案如图3所示。
图3 基于GEE平台的农田干旱动态监测方案Fig.3 Scheme of farmland drought dynamic monitoring based on GEE platform
2.1 干旱监测模型实时计算
在Flask服务器端中,干旱监测模型实时计算先从移动客户端获得研究区域范围、监测时间范围、计算需要的遥感数据类型(如Sentinel-2)、不同波段组合方式和干旱模型等监测参数,之后利用GEE平台Python接口进行GEE平台初始化。其次,按照获取的监测参数进行研究区内的遥感影像动态检索,并进行时间过滤、区域过滤、影像除云、研究区域裁剪等遥感影像预处理操作。最后,对符合要求的影像进行干旱模型的实时计算,并由此得到GEE平台输出的唯一MapId信息,该信息可标识每次计算的干旱监测结果,也会用于2.2节的动态监测成果服务发布,具体计算流程如图4所示。
图4 干旱监测模型计算流程Fig.4 Calculation flow of drought monitoring model
在干旱模型实时计算步骤中,Flask服务器端利用GEE平台提供的自定义表达式计算接口进行实现。如下为支持植被指数、干旱指数和自定义模型的主要代码,通过采用lambda匿名函数来对每幅影像进行处理,在该函数中利用GEE平台提供的expression方法进行波段计算,其中param[′expression′]为模型计算表达式,支持蓝光、绿光、红光、近红外4个波段的计算。
cal_imgs =imgs.map(lambda image:ee.Image(0).expression(
param['expression'],
{'nir':image.select(param['band']['nir']),
'red':image.select(param['band']['red']),
'green':image.select(param['band']['green']),
'blue':image.select(param['band']['blue'])}))
FDRSDMS系统集成的植被指数包括归一化植被指数(normalized difference vegetation index,NDVI)、增强型植被指数(enhanced vegetation index,EVI)和土壤调节植被指数(soil adjusted vegetation index,SAVI),计算公式分别为:
(1)
(2)
(3)
式中:RBlue,RRed和RNIR分别为蓝光、红光和近红外波段的反射率。
如当用户进行实时NDVI计算时,上述代码中的模型计算表达式param[′expression′]值为float(nir-red)/(nir+red)。
FDRSDMS系统集成的干旱指数包括垂直干旱指数(perpendicular drought index,PDI)与改进垂直干旱指数(modified perpendicular drought index,MPDI)[12-13]。计算公式分别为:
(4)
(5)
式中:RRed,v和RNIR,v为纯植被像元在红光和近红外波段的反射率;M为NIR-Red光谱特征空间的土壤线斜率;fv为植被覆盖率。
这两种干旱指数需要提取土壤线斜率和计算植被覆盖率,实现相对较复杂,因此系统中土壤线斜率提取采用文献[14]中的土壤线自动提取算法,植被覆盖率计算方法来源于文献[15]。
2.2 动态监测成果服务发布
GEE平台以网络地图服务(web map service,WMS)为用户提供干旱监测结果,同时为了保证地图服务能正常被访问,利用Flask服务器端对GEE平台WMS服务进行了统一代理。这里利用2.1节干旱监测模型计算后生成的MapId信息,给出GEE平台WMS服务和Flask服务器端代理地图服务的URL模版,如表1所示。
表1 GEE平台和Flask服务器端地图服务URL模版Tab.1 GEE platform and flask server- side map service URL template
在Flask服务器端地图代理服务的基础之上,客户端中的OSMDroid地图框架提供了OnlineTileSourceBase瓦片数据源抽象类,该类可对Flask服务器端提供的代理地图服务进行处理,使用户请求的每块地图图片都能以正确的位置显示在Android客户端上,即可在客户端显示出干旱监测结果。
3 系统应用示范
3.1 遥感数据源选取
考虑到不同尺度的农田干旱监测需求,FDRSDMS采用了GEE平台中Landsat7,Landsat8,Sentinel-2和MODIS共4种不同分辨率的遥感数据源,用户可依据研究区域范围大小自由选取分析的数据源类型,如表2所示。
表2 系统采用的GEE平台遥感数据源及波段①Tab.2 Remote sensing data source and band of GEE platform used in the system
①数据说明来自https://developers.google.com/earth-engine/datasets。
3.2 农田数据采集与管理
FDRSDMS支持农田现场数据采集与管理。如图5(a)所示,数据测量与录入界面包括确定采样点位置、采样时间信息、采样点作物类型信息和采集实测参数等内容,其中经纬度坐标,系统会根据GPS定位服务自动填写,采样时间也会自动设置为当前北京时间,用户需要录入作物类型和实测参数。如图5(b)所示,若录入的数据需要进行修改或删除时,用户通过触碰数据点,即可进行采样点信息的处理。如图5(c)所示,数据查询与导出功能可将符合条件的数据导出为CSV文件格式,为用户更进一步的研究分析提供方便。
(a)数据测量与录入 (b)采样点显示 (c)数据查询与导出
3.3 农田干旱遥感动态监测应用
农田干旱遥感动态监测功能的应用首先需要进行研究区域的选取,如图6(a)所示,选取河南省漯河市某矩形地域为研究区并显示区域范围图。如图6(b)所示,一旦选定研究区,系统会自动跳转至农田干旱遥感动态监测界面,用户可进行遥感数据检索条件的设置,其中遥感数据源可选用3.1节介绍的4种数据源,如成像时间为2019年4月1日—15日期间的Sentinel-2影像数据,合成方法可选用均值、中值和最大值,此外在模型计算的设置中,用户可选用植被指数、干旱指数或者自定义模型计算公式,这里以Sentinel-2地表反射率影像进行MPDI干旱指数计算的参数配置为例。完成相关参数配置后,当点击界面计算按钮时,系统通过Flask服务器端,调用GEE平台进行遥感影像动态检索,经过区域过滤、影像除云、研究区域裁剪等遥感影像预处理操作,并运用MPDI干旱模型进行实时计算,计算结果显示为干旱专题图,以橘黄至深绿色标分别代表干旱由重逐级减低的程度,如图6(c)所示。
(a)研究区域绘制 (b)MPDI参数设置 (c)MPDI计算结果
4 结论
本文以Android为开发平台,综合运用了OSMDroid,Retrofit和Flask等开源框架,研制了从客户端至服务端一体的农田干旱遥感动态监测系统,实现了面向于农田作物监测的多种专业功能,其特色如下:
1)充分发挥了移动客户端进行农情观测方便快捷的特点,在服务端的农田数据管理服务支持下,针对用户农田观测作业的需求,在Android平台上实现了农田数据采集管理的一套完整处理流程,提高了用户野外观测后快速处理农田数据的效率。
2)以GEE平台提供的遥感数据为基础,建立了GEE平台Python接口接入方案,解决了目前系统难以进行动态干旱监测分析的问题。在监测过程中,用户可根据需求使用Sentinel-2,Landsat7,Landsat8和MODIS共4种遥感数据源,并支持植被指数、干旱指数和自定义模型的实时计算,实现了以动态输入反演模型的方式来进行实时计算的能力,整个监测过程用户占主导地位,可操作空间大。
基于Android的农田干旱遥感动态监测系统为农田干旱研究提供了新的支撑工具,对于农田作物信息快速采集与分析具有现实意义。本文下一步工作是将传统机器学习以及深度学习等复杂模型接入,以实现对农田干旱进行更加精确地监测与诊断分析。