基于
Google_Eart
遥感
数据
三维
可视化
研究
崔正刚
第 46 卷 第 1 期2023 年 1 月测绘与空间地理信息GEOMATICS&SPATIAL INFORMATION TECHNOLOGYVol.46,No.1Jan.,2023收稿日期:2021-05-24作者简介:崔正刚(1987-),男,山东临沂人,工程师,学士,主要从事摄影测量、地理信息系统应用开发等方面的工作。基于 Google Earth Engine 和 pydeck 的遥感云数据三维可视化研究崔正刚,王米山(山东省地质矿产勘查开发局第七地质大队,山东 临沂 250013)摘要:采用云计算技术,整合各种遥感信息和技术资源的遥感云服务正以前所未有的速度发展。本文基于谷歌地球引擎 Google Earth Engine 提供的海量遥感云存储数据,研究通过 Google Earth Engine 的 Python API 以及空间可视化库 pydeck、第三方 earthengine-layers 库提供的图层拓展能力,完成从遥感数据筛选、实时数据云计算到三维场景展示、网页端页面自动导出的全流程实践,旨在快速高效地实现遥感云数据三维可视化方案。关键词:谷歌地球引擎;pydeck;遥感云数据;三维可视化中图分类号:P237 文献标识码:A 文章编号:1672-5867(2023)01-0142-03Remote Sensing Cloud Data 3D Visualization Research Based onGoogle Earth Engine and pydeckCUI Zhenggang,WANG Mishan(No.7 Geological Brigade of Shandong Provincial Bureau of Geology and Mineral Resources,Linyi 250013,China)Abstract:Based on cloud computing technology,the integration of all kinds of remote sensing information and technology resources of remote sensing cloud services is developing at an unprecedented rate,based on the Google Earth Engine,massive remote sensing cloud storage data provided by Google Earth Engine,this paper uses the Google Earth Engine Python API and spatial visualization library py-deck,third-party earthengine-layers library which provides layer expansion capability to complete the whole process practice from re-mote sensing data screening,real-time data cloud computing,3D scene display,webpage side page automatic export,it aims to ac-complish fast and efficient implementation of remote sensing cloud data 3D visualization.Key words:Google Earth Engine;pydeck;remote sensing cloud data;3D visualization0 引 言当今遥感领域正处于数据井喷式增长的阶段,多样化的传感器以及不同分辨率的数据,不断增大遥感数据处理的复杂性,同时针对海量遥感数据进行实时处理与应用的需求日益突出,这些都对传统的遥感数据存储与处理提出了挑战。谷歌地球引擎 Google Earth Engine 作为现今遥感云计算领域的翘楚,可以整合世界范围海量的遥感数据:据统计该引擎囊括 200 多个公共数据集,其中包括 500 多万张遥感影像数据,每天新增接近 4 000 张影像数据,总数据容量超过 5 PB。Google Earth Engine 将遥感数据的存储、处理以及传输部署于云端,通过 Python 等编程语言为媒介提供算法接口,为全世界的用户提供地球空间服务。依托谷歌地球引擎 Google Earth Engine 提供的数据资源进行三维可视化,避免了大量数据下载获取、线下处理以及上线发布的时间损耗,对于遥感数据的处理与应用具有十分重要的示范意义1-2。1 关键技术1.1 Google Earth EngineGoogle Earth Engine 是 Google 研发的对海量全球尺度的地球科学资料(特别是卫星遥感资源)进行在线存储计算和分析处理的云端平台。该平台能够存取卫星遥感数据资源和其他地球观测数据库中的数据资源并提供足够的分布式计算算力对这些数据进行处理。相比于 ENVI等传统的处理影像工具,Google Earth Engine 可以快速、批量处理海量的遥感影像资源。通过 Google Earth Engine可以快速计算如 NDVI 等植被指数,可以分析预测各种作物的产量,研判旱情条件下作物的长势变化,监测全球尺度的森林时序变化等。Google Earth Engine 不仅提供在线的 JavaScript API,同时也提供了离线的 Python API,通过这些 API 可以快速地建立基于 Google Earth Engine 以及 Google 云的 Web服务3-4。1.2 pydeckdeck.gl 是由 Uber 公司开源的基于 WebGL 的地理信息可视化库,旨在基于浏览器端实现高性能大型数据集的可视化,deck.gl 具有高度可配置可拓展的设计模式,全部图层都带有灵活的 API 拓展方式,可以对渲染的各个环节进行编码控制。用户可以通过组合任意图层或使用deck.gl 的可扩展体系架构来满足相关定制需求,以经济高效的方式快速获取令人印象深刻的视觉效果。pydeck 库是 deck.gl 对应接口的 python 版 API 实现,用户可以通过 Python 实现 deck.gl 的可视化效果,同时针对 Jupyter 环境进行定制优化,方便 Python 使用者进行开发展示。除此之外,支持 Python 脚本生成导出 Web 端HTML 页面,最大限度地提高可视化开发效率和效果。1.3 earthengine-layerspydeck 库拥有强大的地理数据可视化能力,但目前官方没有提供接口支持 Google Earth Engine 在线遥感云数据的渲染。第三方 earthengine-layers 库提供 pydeck 的拓展图层接口(包括 JavaScript 和 Python2 个版本),可以借助 earthengine-layers 实现基于 pydeck 的 Google Earth Engine 在线遥感云数据的渲染。2 研究区实验数据概况本文三维地形实验数据选择 SRTM(Shuttle Radar To-pography Mission)地形数据,由美国太空总署(NASA)和国防部国家测绘局(NIMA)合作进行测量。2000 年 2 月11 日,美国发射的“奋进”号航天飞机上挂载 SRTM 系统,全程完成 222 h 23 min 的数据采集任务,SRTM 遥感系统接收的雷达影像的数据量约 9.8 万亿字节,通过 2 年多的数据处理,制成数字地形高程模型产品。SRTM 产品自2003 年开始向公众发布,历经多次修订,当前最新的版本为 V4.1 版本。本文三维地表遥感数据选择哨兵 2 号(Sentinel-2)数据,Sentinel-2 是高分辨率多光谱成像卫星,单颗卫星的访问频次为 10 d,2 颗互补,重访频次为 5 d。Sentinel-2卫星分为 2A 和 2B 2 颗卫星,两者共同投入运行阶段后,相隔 5 d 可覆盖一次对地球赤道地区的全面成像,而对于高纬度的地域,访问频次则为 3 d。Sentinel-2 地表遥感数据主要用于监测土地地表环境,可分析得出有关土地植被健康情况、土壤覆盖状况、内陆河流和沿海周边环境等信息,不仅对改善农林业种植、预测粮食产量、保证粮食安全具有重要意义,还可用于监测洪水、火山喷发、山体滑坡等自然灾害,为人道主义救援提供帮助。3基于 Google Earth Engine 和 pydeck 的三维可视化方案3.1 基础环境配置首先注册 Google Earth Engine 账号,注册完成后下载配置 Python 开发环境并导入 Google Earth Engine 的 Py-thon 接口包,通过 Python 接口包完成 Google Earth Engine遥感云服务各项功能使用前的认证:import eetry:ee.Initialize()except Exception as e:ee.Authenticate()ee.Initialize()3.2 遥感云数据的获取在 Google Earth Engine 的云存储数据,均有唯一的数据集名称,根据官方文档可以查询到相关遥感数据集名称,通过 Google Earth Engine 的 Python 接口方法 ee.Image获取相关遥感云数据集资源。选择 Google Earth Engine提供的 SRTM 30 m 分辨率全球范围可用的数据作为地形数据源,数据集名称为“USGS/SRTMGL1_003”:terrain=ee.Image(USGS/SRTMGL1_003).select(elevation)此外遥感影像数据源哨兵 2 号数据,在 Google Earth Engine 中数据集名称为“COPERNICUS/S2_SR”,加载哨兵 2 号数据集时,我们可以通过 Google Earth Engine 的Python 接口,使用时间、云量、范围、波段等限定条件筛选哨兵 2 号数据集,所有的筛选计算过程都在云端完成。如下所示,可筛选出包含坐标点(127.562 404,45.315 538)、日期在2020 年5 月1 日至2020 年8 月30 日之间、云量少于 5%的影像,并选取 4、3、2 的波段进行组合:image=ee.ImageCollection(COPERNICUS/S2_SR).filterBounds(ee.Geometry.Point(127.562404,45.315538).filterDate(2020-05-01,2020-08-30).sort(cloundMetadata).filterMetadata(CLOUDY_PIX-EL_PERCENTAGE,less_than,5).first().select(B4,B3,B2)3.3 pydeck 加载遥感云数据进行三维展示首先引入 pydeck 以及 pydeck_earthengine_layers,主要通过函数 EarthEngineTerrainLayer 引用 Google Earth Engine遥感云数据作为三维可视化的地形数据 terrain 以及覆盖地形之上的影像数据 image;通过 pdk.ViewState 函数设置三维场景的中心点以及视角等参数;通过 pdk.Deck 函数完成 pydeck 功能初始化并最终调用 show 实现三维场景的显示:ee_layer=EarthEngineTerrainLayer(341第 1 期崔正刚等:基于 Google Earth Engine 和 pydeck 的遥感云数据三维可视化研究