2019-10-21 设置GeoTif图像中缺失值为Nodata

需求与目的

在批量将MODIS数据hdf转为GeoTif格式之后(具体操作可参考我的另一篇博客MODIS数据hdf转tifs),在ArcGIS打开图像发现,图像中的缺失值是一个具体的数值(有时是+3888888888888或者是-3888888888888或者是其它)而非Nodata(如下图所示)
2019-10-21 设置GeoTif图像中缺失值为Nodata_第1张图片
可以看出,图像中像素值为0的像元都是Nodata区域。如果不将0值设为Nodata,不仅影响ArcGIS中图像显示的美观效果,而且在使用ArcGIS进行其它计算分析的时候也会造成很大的影响。故而需要将GetTif中的这类数值都设置成Nodata。
另外,MOD11B1中的LST_Day_6km、LST_Night_6km数据集是表面温度产品,像元值需要乘以0.02,单位是K,如果需要转为℃,需要减去273.15才是实际的温度值。所以还需要将图像的值进行一个数学运算。

运行环境

Windows 7、10(其它系统版本未尝试);
ArcGIS10.5自带Python 2.7.12,因为要调用ArcGIS中的ArcPy模块,所以只能使用ArcGIS自带的Python 2.7.12版本;
ArcGIS需要在扩展模块中勾选 Spatial Analyst模块。如下图所示。
2019-10-21 设置GeoTif图像中缺失值为Nodata_第2张图片

Python代码实现

代码如下:
2019-10-21 设置GeoTif图像中缺失值为Nodata_第3张图片之前忘记了转换公式,代码中需要进行修改
K温度: data = data * 0.02
摄氏度: data = data * 0.02 - 273.15

结果

2019-10-21 设置GeoTif图像中缺失值为Nodata_第4张图片
用ArcGIS打开看一下:
2019-10-21 设置GeoTif图像中缺失值为Nodata_第5张图片OK,那些像素值低于100和大于100000的像元就设置为了Nodata值了,搞定!

你可能感兴趣的:(ArcGIS-Arcpy,Python,Arcpy,设置Nodata)