1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用ArcPy将nc格式数据转换为tif格式数据

使用ArcPy将nc格式数据转换为tif格式数据

时间:2021-03-26 08:42:18

相关推荐

使用ArcPy将nc格式数据转换为tif格式数据

文章目录

使用场景介绍1. 创建netcdf图层2. 创建模型3. 导出模型4. 修改代码5. 运行6. 思考`7. 参考文献

使用场景介绍

最近在做蒸散发,下载了REA的蒸散发日尺度数据,之前做月尺度的时候,按照教程手动操作,但是日尺度的数据一年就有365天,手动操作了一天觉得太累了,开始寻找解放双手的批量处理方法。本来是打算用anaconda做,但我太菜了,于是转去尝试ArcPy。

数据源:链接/s/1P68qdS9Z_whrw1GKL_Mrng?pwd=1111

提取码:1111

–来自百度网盘超级会员V1的分享

软件:ArcGIS10.6(ArcGIS版本不影响的)

1. 创建netcdf图层

(1)【工具箱】-【多维工具】-【创建NetCDF栅格图层】

(2)输入要转换的nc文件,并选择波段

(3)点击【OK】等待运行,出来就是这样的

2. 创建模型

我们的主要是在模型构建器的基础上去进行修改实现批量操作,因此模型要先构建好,思路是先创建栅格图层,再复制栅格。

(1)点击【模型】,再在工具箱中找到【数据管理工具】-【图层和表视图】-【创建栅格图层】,和【数据管理工具】-【栅格】-【栅格数据集】-【复制栅格】,将它们拖到模型构建器里面

最后,模型构建器就是这样子的

3. 导出模型

点击【模型】-【导出】-【导出至python】

这样咱们就有了一个python代码

在这里插入代码片# -*- coding: utf-8 -*-# ---------------------------------------------------------------------------# sinple.py# Created on: -08-10 15:33:10.00000# (generated by ArcGIS/ModelBuilder)# Description: # ---------------------------------------------------------------------------# Import arcpy moduleimport arcpy# Local variables:E_Layer = "E_Layer"E_Layer = "E_Layer"v_10_tif = "D:\\DATA\\nc\\REA\\\\-10.tif"# Process: Make Raster Layerarcpy.MakeRasterLayer_management(E_Layer, E_Layer, "", "-180 -60 180 90", "1")# Process: Copy Rasterarcpy.CopyRaster_management(E_Layer, v_10_tif, "", "", "-nan(ind)", "NONE", "NONE", "", "NONE", "NONE", "TIFF", "NONE")

4. 修改代码

批处理的核心是循环,日尺度的nc文件有365个波段,咱们的目的是提取单波段,所以可以用到for循环。

import arcpyfor i in range(1,366): #取前不取后E_Layer = "E_Layer" #保持原状E_Layer = "E_Layer"+str(i) #修改名称,方便记录波段v_10_tif = "D:\\DATA\\nc\\REA\\\\-"+str(i)+".tif" #依然是修改名称arcpy.MakeRasterLayer_management(E_Layer, E_Layer, "", "-180 -60 180 90", "1") #创建栅格图层操作arcpy.CopyRaster_management(E_Layer, v_10_tif, "", "", "-nan(ind)", "NONE", "NONE", "", "NONE", "NONE", "TIFF", "NONE") #复制栅格操作

注意,在创建栅格图层和复制栅格这两个操作的参数意义可以在帮助中找到

下面还有代码示例

5. 运行

修改完成之后就可以运行啦

回到ArcGIS,点击arcpy

点击右键,找到【加载(load)】,把我们的代码加载进去

按下回车,就可以开始运行啦

但是365个波段可能太多了,我每次是拿出30个波段来分,速度的话大概是1分钟3个波段

6. 思考`

划重点:批处理的核心是循环,重复一样的操作,只是参数会有所变化

缺点:只能先打开ArcGIS创建完netcdf图层后才能进行arcpy的操作,会有一点小麻烦,处理时间上也不如纯代码快,但是本菜鸟只能先做到这样

展望:还是要继续学习纯代码鸭

7. 参考文献

[1] nc格式处理:/video/BV1cS4y1376X?spm_id_from=333.337.search-card.all.click&vd_source=72adb3930d697c546ff4072986680016

[2] 循环操作:/python3/python3-loop.html

[3] 其他类似处理操作文章:/weixin_43416590/article/details/124770536

/xiaoxie_qingfa/article/details/114099471?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-114099471-blog-124770536.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-114099471-blog-124770536.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=6

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。