如何使用 xarray 绘制 geotiff 文件?

问题描述

我从 Google Earth Engine 下载了一些数据。数据如下所示:

import xarray as xr
da = xr.open_Rasterio('myFile.tiff')

da

enter image description here

我可以显示图像,但我想避免考虑等于零的值。

f,ax = plt.subplots()
da.plot(ax=ax,cmap='hot_r')

enter image description here

解决方法

xarray 有一个相当广泛的 matplotlib 后端,检查不同绘图选项的 documentation

要回答您的问题,您可以使用 plot.imshowDataArray 方法来可视化您的栅格(您还可以在那里传递颜色图、范围、颜色条等的关键字...)。

要排除等于(或等于和小于)0 的值,只需在绘图前运行 where,将所有不符合指定条件的值设置为 Nan,因此排除绘图。请注意,这会更改数据类型。

最后一件事,plot.imshow 需要一个 2d 数组,而您的数据集似乎有一个只有一个“层”的第三维 band。您可以在 squeezewhere 之前使用 plot.imshow 轻松删除它。

这是一个例子:

import xarray as xr

# test data
ds = xr.tutorial.load_dataset("rasm")

# replicate 3d data array
da = ds.isel(time=0).Tair.expand_dims({"band":1})

# exclude vals below or equal to 0,squeeze to 2d and plot
da.where(da>=0).squeeze().plot.imshow(cmap="hot_r")

enter image description here