欢迎光临
我们一直在努力

用icepyx加载NASA的激光雷达数据

文章目录

    • 安装
    • 下载数据
    • 可视化

安装

ICESat(Ice, Cloud, and land Elevation Satellite,冰、云和陆地高程卫星)是NASA地球观测系统(EOS)框架下的一项卫星任务,专门用于测量极地冰盖物质平衡、云层与气溶胶高度,以及陆地地形和植被特征。该任务结束后,NASA又发射了ICESat-2,搭载升级的ATLAS光子计数激光雷达,采用6波束设计提升空间覆盖和采样密度。

icepyx专为简化 ICESat-2 卫星数据的查询、获取、预处理和分析而设计。由于需要一些依赖,这里用conda的forge模式进行安装

conda install -c conda-forge "icepyx>=2.0" -y

不知道是不是我独有的问题,默认安装的是1.3版本,而在import之后,弹出警告说让用v2版本,因此在安装声明版本号大于2.0。

我在安装icepyx成功之后,import的时候又报了错误,说缺少pyarrow依赖,下面同样用conda安装pyarrow。

conda install -c conda-forge pyarrow -y

下载数据

想要试用icepyx的数据库,需要注册一个Earthdata账号,用户名不得出现大写字母,密码至少12位,且包含大小写字母,注册完成后无需邮件确认。接下来就可以下载数据了

import icepyx as ipx
region = ipx.Query('ATL06', [55, 68, 47, 71], ['2019-02-20','2019-02-28'])
region.download_granules('./data')
# Enter your Earthdata Login username:
# Enter your Earthdata password:

上例的两行代码分别用于查询和下载,在查询代码中

  • 【ATL06】是 ICESat-2 卫星的 Level-3A 陆地冰高程产品,提供经过算法处理的、地理定位的陆地冰面高度数据
  • 【[-55, 68, -47, 71]】为空间范围,表示西经55°47°、北纬68°71° 的矩形区域(大致覆盖格陵兰岛西南部)
  • 【[‘2019-02-20’,‘2019-02-28’]】查询2019年2月20日 至 2月28日 期间卫星过境该区域的数据

【download_granules】用于下载数据,输入该行代码后,会提示输入账号和密码,以登录Earthdata。下载完成后,会根据我们输入,在当前路径新建一个data文件夹,并将下载的数据写入其中。其返回值是下载文件的路径列表。速度还可以,下载文件如下

  • data\\206209866_ATL06_20190226005526_09100205_007_01_subsetted.h5
  • data\\206209864_ATL06_20190222010344_08490205_007_01_subsetted.h5
  • data\\206209863_ATL06_20190221121851_08410203_007_01_subsetted.h5
  • data\\206209865_ATL06_20190225121032_09020203_007_01_subsetted.h5

可视化

通过加载files中的文件,可以对绘制测绘数据,结果如下

在这里插入图片描述

代码位

import h5py, matplotlib.pyplot as plt

for fpath in files:
f = h5py.File(fpath, 'r')
lat = f['/gt1l/land_ice_segments/latitude'][:]
lon = f['/gt1l/land_ice_segments/longitude'][:]
h = f['/gt1l/land_ice_segments/h_li'][:]
f.close()
valid = (h > 1000) & (h < 10000)
plt.scatter(lon[valid], lat[valid], c=h[valid], s=1, cmap='viridis')

plt.colorbar(label='Elevation (m)')
plt.show()

赞(0)
未经允许不得转载:171主机测评 » 用icepyx加载NASA的激光雷达数据
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址