ArcGIS Pro处理气温nc文件(降水同理)批量导出各月栅格文件

前不久在完成期末作业的时候,发现需要用到气温、降水等数据,而这些气象数据大多是nc文件,所以这篇文章主要是记录一下当时怎么处理的。GIS小白,还望各位多多指正~

数据来源

http://www.geodata.cn/data/datadetails.html?dataguid=192891852410344&docId=3165

CRU发布的全球0.5°气候数据集(https://crudata.uea.ac.uk/cru/data/hrg/)以及WorldClim发布的高分辨率气候数据集(http://www.worldclim.org/)。

1.打开ArcGIS Pro,先创建一个新的project

2.创建栅格图层,在工具箱中找到Make NetCDF Raster Layer.

注意:nc文件保存路径放在桌面(路径太深了之后许多工具会“找不到”nc文件而报错)

Band Dimension选择time,因为一个波段代表一个月的数据

完成后,右击图层,查看Layer Properties中的source,可以发现没有定义坐标系,且在Band Metadata中有12个波段,即是12个月的数据

   

若要导出,右键图层,选择Export Data,选择一个文件夹保存即可(文件夹命名用字母)。如果要一个一个导出的话,会很麻烦,我们现在来创建一个模型,运行让其自己导出。

3.创建模型,在ArcGIS Pro页面最上面一栏找到Analysis,左下有一个ModelBuilder,点击

就会出现新得模型页面,然后再Toolboxes中找到Make NetCDF Raster Layer,就是重复我们一开始的那个步骤,创建栅格图层。

双击Make NetCDF Raster Layer(在这里,nc文件路径太“深”会报错)

完成之后,点击Iterators(迭代器),选择for循环,我们要从1月份循环到12月份

接下来双击Make NetCDF Raster Layer,注意在Dimension处,选择time,右框中的Value不在下拉框中选择,直接输入%Value%(如果是中文版的,输入%值%)

现在就变成这个样子啦

左键长按value,拉出一条线指到Make NetCDF Raster Layer,在此处进行循环。拉线后会弹出选择框,选择precondition(前提条件)

在Data Management Tools中找到“复制栅格工具”,拖到Model中,从tmp_Layer1拉线到Copy Raster,选择Input Raster.

双击Input Raster,这里需要注意的是,我们要改变Output Raster Dataset 名字,如下图所示,在当中加上“%Value%”(与之前对应),文件后缀名为tif

完成

在第一部中,我们发现此时是没有定义坐标系的,所以将Define Projection拖到Model当中,从tmp2020%Value%.tif那拉一条线指到Define Projection处,弹出选项,选择Input Dataset or Feature Class

双击Define Projection,坐标系选择WGS1984

双击tmp2020%Value%.tif(2),就是下图这样的啦

点击绿色✔(Validate),验证一下有问题没有,再RUN运行,等待几分钟

运行结束,从右边的文件夹里就可以看到有12个文件,分别是12个月份的,这个模型也可以保存,以便下次使用。

如果要进行年平均气温的统计,可以使用Cell Statistics工具,这里不过多赘述。

这是我在做的过程中参考的一个视频和两篇比较好的文章,大家也可以去看一看

1.ArcGIS逐月气候栅格数据处理转年度数据处理

地址:https://www.bilibili.com/video/BV1X44y1k7K6?share_source=copy_web&vd_source=dbef35c5bd27b2cc04c06ef8e431820f

2.ArcGIS中提取多波段影像中的单个波段

网址:https://www.cnblogs.com/caoyimingGIS/p/7559919.html

3.ArcGIS处理NetCDF(.nc)的多维科学数据

https://zhuanlan.zhihu.com/p/343926071

 

  • 30
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您可以使用ArcGIS中的Python编程来批量处理nc文件。以下是一个简单的示例代码,可以帮助您开始: ```python import arcpy import os # 设置工作空间 workspace = r"C:\path\to\your\workspace" arcpy.env.workspace = workspace # 查找所有的nc文件 nc_files = arcpy.ListFiles("*.nc") # 循环处理每个nc文件 for nc_file in nc_files: # 构建输入和输出路径 input_nc = os.path.join(workspace, nc_file) output_raster = os.path.join(workspace, nc_file.replace(".nc", ".tif")) # 使用MakeNetCDFRasterLayer工具创建NetCDF图层 arcpy.MakeNetCDFRasterLayer_md(input_nc, "variable_name", "x_dimension", "y_dimension", "output_layer") # 使用CopyRaster工具将NetCDF图层转换为栅格数据集 arcpy.CopyRaster_management("output_layer", output_raster) # 删除中间生成的图层 arcpy.Delete_management("output_layer") print(f"Converted {nc_file} to {output_raster}") print("Batch processing completed.") ``` 请注意,您需要将代码中的`"variable_name"`、`"x_dimension"`和`"y_dimension"`替换为实际的变量名、x维度和y维度。此外,还需要将`workspace`变量替换为包含您的nc文件的实际路径。 以上代码将遍历指定工作空间中的所有nc文件,使用ArcGIS中的工具将其转换为栅格数据集(.tif格式)。您可以根据需要进行修改和扩展,以满足您的具体要求。 请注意,此代码示例仅供参考,具体实现可能会因您的数据和需求而有所不同。在运行代码之前,请确保您已正确安装并配置了ArcGIS和相关的Python库。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值