在科研过程中遇到了处理NC数据的问题,虽然Matlab可以很方便的处理NC数据,但是ArcMap与ENVI可以提供可视化的操作,也比较方便,所以这个方法还是值得记录的。此前基础薄弱的博主对ArcMap的modelbuilder并不熟悉,所以一把辛酸泪地一个个鼠标点击来处理450多幅影像。希望这篇文章的存在,能够让更多地信遥感人减轻工作负担。
一、前言
从NOAA数据库下载到了1982-2019的月均SST数据为NC格式。
虽然可以在属性表里根据时间选择影像,此时在ArcMap中会被认为是单幅灰度栅格影像,如下图,针对某一年影像的可以使用栅格计算器,掩膜提取等功能,但是如果需要遍历整个数据集,需要自己手动选择数据,是十分耗时的,通过探索,博主发现可以通过拆分数据集,将多波段数据拆分成单幅栅格影像,通过Modelbuilder批量裁切数据,之后再将单幅影像通过ArcMap的composites band 功能组合成多波段数据,最后通过Band Collection Statistics工具统计每一个波段的均值、最大最小值与标准差生成统一的Table。如果不需要进行栅格擦除操作,还可以直接选择用Modelbuilder中的迭代器迭代Zonal Satistics as table 工具生成多个txt,再用Excel脚本导入多个txt,也可以实现类似目标,但是本此研究需要进行栅格擦除,所以以上方法是不可行的。
二、操作流程
1、在ArcMap中打开NC数据。使用ArcToolBox/Multidimention Tools/Make NetCDF Raster Layer工具
注意设置Band Dimention 为time,这样会以每一幅影像作为一个波段。之后可以在Symbology中确认是否加载为多波段数据。如下图即为成功。
2、输出数据为ENVI格式,修改Format中的格式即可输出成dat文件
3、使用ENVI脚本,多波段数据拆分脚本(网上可轻易下载到)
4、将拆分的栅格全部导入到File Geodatabase中,防止接下来的计算出现错误。可以打开toggle contents panel面板,可以对数据库里的数据进行多选,方便将乱序的数据从新排序。
5、创建用户工具箱,创建Modelbuilder如下图。其中landmask为与NC数据相同分辨率的栅格掩膜,与原始数据做栅格计算乘法即可实现兴趣区的提取。landmask数据将研究区内的陆地进行了擦除仅保留了海洋的栅格,主要通过clip、polygon to raster与raster calculator获得,这里就不再赘述栅格擦除的操作了。在ModelBuilder里较为关键的就是添加Raster的迭代器。
6、将裁切完毕的栅格数据组合成多波段数据,使用的工具为:Data Management Tools/Raster/Raster Processing/Compostie Bands。在这里注意数据顺序,列表里的顺序就是生成数据波段排序。
7、统计合成的多波段数据的最大最小值,均值等信息。通过工具:Spatial Analyst Tools/Multivariate/Band Collection Statistics。将合成的栅格数据输入即可计算出每个栅格的属性信息,输出txt导入到excel即可完成栅格属性提取。