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

使用场景介绍

最近在做蒸散发,下载了REA的蒸散发日尺度数据,之前做月尺度的时候,按照教程手动操作,但是日尺度的数据一年就有365天,手动操作了一天觉得太累了,开始寻找解放双手的批量处理方法。本来是打算用anaconda做,但我太菜了,于是转去尝试ArcPy。
数据源:链接https://pan.baidu.com/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: 2022-08-10 15:33:10.00000
#   (generated by ArcGIS/ModelBuilder)
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy


# Local variables:
E_Layer = "E_Layer"
E_Layer2005 = "E_Layer2005"
v2005_10_tif = "D:\\DATA\\nc\\REA\\2005\\2005-10.tif"

# Process: Make Raster Layer
arcpy.MakeRasterLayer_management(E_Layer, E_Layer2005, "", "-180 -60 180 90", "1")

# Process: Copy Raster
arcpy.CopyRaster_management(E_Layer2005, v2005_10_tif, "", "", "-nan(ind)", "NONE", "NONE", "", "NONE", "NONE", "TIFF", "NONE")

4. 修改代码

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

import arcpy
for i in range(1,366):  #取前不取后
    E_Layer = "E_Layer"  #保持原状
    E_Layer2005 = "E_Layer2005"+str(i) #修改名称,方便记录波段
    v2005_10_tif = "D:\\DATA\\nc\\REA\\2005\\2005-"+str(i)+".tif"  #依然是修改名称
    arcpy.MakeRasterLayer_management(E_Layer, E_Layer2005, "", "-180 -60 180 90", "1")   #创建栅格图层操作
    arcpy.CopyRaster_management(E_Layer2005, v2005_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格式处理:https://www.bilibili.com/video/BV1cS4y1376X?spm_id_from=333.337.search-card.all.click&vd_source=72adb3930d697c546ff4072986680016
[2] 循环操作:https://www.runoob.com/python3/python3-loop.html
[3] 其他类似处理操作文章:https://blog.csdn.net/weixin_43416590/article/details/124770536
https://blog.csdn.net/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

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
arcpy是ArcGIS中的一个Python库,可用于进行地理数据处理和分析。使用arcpy可以方便地实现数据格式之间的转换。 在arcpy中,可以使用工具函数来进行数据格式转换。以下是一些常用的数据格式转换函数: 1. FeatureClassToFeatureClass:用于将一个要素类(feature class)转换为另一种要素类格式。可以将矢量数据格式(如Shapefile)转换为其他矢量数据格式(如文件地理数据库或KML)。 2. FeatureClassToShapefile:用于将要素类转换为Shapefile格式。Shapefile是一种常见的矢量数据格式,可以在多个GIS软件中使用。 3. RasterToOtherFormat:用于将栅格数据转换为其他栅格数据格式,如TIFF、JPEG或GRID格式。这个函数可以根据不同的需求选择合适的输出格式。 4. TableToTable:用于将表格数据(如Excel电子表格或数据库表)转换为ArcGIS可识别的表格数据格式。 5. FeatureClassToGeodatabase:用于将要素类(feature class)转换为文件地理数据格式。文件地理数据库是一种可以在ArcGIS中进行编辑和查询的数据存储格式。 上述只是其中一些常见的数据格式转换函数,在arcpy中还有很多其他函数可供使用使用这些函数,可以根据需要对数据进行格式转换,并根据输出要求选择合适的格式。 总之,通过arcpy库中的函数,可以方便地实现数据格式之间的转换,从而提高地理数据处理和分析的效率。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值