文章目录
-
- 安装
- 下载数据
- 可视化
安装
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()


