欢迎光临散文网 会员登陆 & 注册

学习记录三:R语言/ArcGIS—单张/批量处理tif(裁剪crop/掩膜mask)

2022-08-29 08:10 作者:学习好难啊__  | 我要投稿

一、R语言中切片(crop) / 掩膜(mask)

使用矢量数据对栅格数据进行裁剪,可以使用切片或掩膜操作。

切片函数crop():使用矢量数据的矩形范围对栅格数据进行裁剪。函数语法结构如下:

x:待裁剪的栅格对象

y:裁剪范围或包含裁剪范围的空间数据对象(矢量、栅格数据均可)

filename:裁剪后的数据储存地址,可选

snap:数据对齐方式,可选项有near、in、out


掩膜函数mask():保持矢量数据实际范围内的属性数据不变,而将范围外的属性数据都转为其他值(默认转换为空值NA)。函数语法结构如下:

x:栅格对象

mask:作为掩膜的空间数据对象(矢量、栅格数据均可)

inverse:是否执行反向掩膜操作

maskvalue:掩膜内的栅格单元的属性值若为该值则将其转换为updatevalue参数对应的数值

updatevalue:掩膜外的所有栅格单元的属性值(空值除外)会被转换为该值,默认为空值NA

updateNA:若为TRUE,则掩膜外的空值也会被转换为updatevalue参数对应的数值


1.单张处理

切片后的和原数据一样,是因为该数据在下载的时候已经按照矢量裁剪过了,如下:

使用未裁剪过的全国数据crop/mask结果如下:

  • 切片会改变原有栅格对象的范围,但其得到的是一个矩形范围

  • 掩膜不会改变原有栅格对象的范围,仅是将矢量范围外的数据变为空值

所以一般需要对切片后的栅格对象再进行掩膜操作,才可以得到预期裁剪效果:

2.批量处理

处理前
处理后


Terra包可以使用writeRaster函数输出栅格,可以输出为多波段的,也可以是单波段的。通过filename参数来控制。

  • 单波段多TIFF输出:filename使用paste0构建一个输出变量

  • 多波段单TIFF输出:filename是一个值,names指定波段名称

二、ArcGIS Pro中切片(crop) / 掩膜(mask)

注:ArcGIS中切片/掩膜是对栅格数据进行处理,裁剪是对矢量数据进行处理。

1.单张处理

和R中一样各种方法都运行一遍对比下,下图左1是切片(矩形),其他三个分别是切片(用于裁剪几何)、掩膜、先切片后掩膜(貌似没什么区别,它们的属性表也一样,也可能我没发现(・∀・)

2.批量处理(ArcPy方法)

需要准备的数据:

(1)需要的栅格数据,放在同一个文件夹下面

(2)矢量边界数据

(3)新建一个存储裁剪结果的文件夹

注意事项:

(1)工作空间wordspace一般为栅格数据存储的文件夹,程序会遍历该文件夹下的所有tif格式文件

(2)arcpy为arcgis自带的包,需要在其自带的python环境下运行

(3)代码中不要出现中文,因为arcgis自带的python容易报错

(几乎尝试了CSDN里所有可用代码,因为没有python基础,有的报错也改不好,上面这个中午运行还中途失败,下午来又尝试竟然成功了,泪目,原因如下)

打开ArcMap窗口时:裁剪完一副就自动加载,导致无法获取独占锁,执行失败

ERROR 000601这个报错就是涉及到修改原数据时,必须让其获取独占锁才可以。模型中大多都涉及到更改原数据,检查数据是否被其他应用程序打开或多个map同时打开同样的数据。

关掉ArcMap窗口后:一切顺利

裁剪完成的数据展示如下:

yeah,终于成功啦!!!



附1:学习过程中发现感觉以后会用到的


栅格转其他格式(可批量)
复制Python命令


附2:学习参考文章

bilibili:


CSDN:

文章1:raster | R语言中的空间栅格对象及其基本处理方法(Ⅲ):切片/掩膜、图层叠加...

原文链接:https://blog.csdn.net/weixin_54000907/article/details/119284726

文章2:python 利用arcpy批量裁剪tif文件,并生成tif文件arcpy代码来源)

原文链接:https://blog.csdn.net/weixin_41755752/article/details/119490511

文章3:arcpy/python循环批量裁剪tiff栅格文件

原文链接:https://blog.csdn.net/weixin_42776126/article/details/121003159

文章4:Python(arcpy) 批量裁减TIF图像

原文链接:https://blog.csdn.net/qq_38882446/article/details/115262296

文章5:ArcGIS批量裁剪栅格数据(ArcPy方法)

这篇包含多文件夹场景(可分为二级、三级目录),有需要时可以学习一下

原文链接:https://blog.csdn.net/qq_35056050/article/details/111868274


知乎:

文章1:R语言Raster包和Terra包栅格读写、计算和一些使用经验分享

原文链接:https://zhuanlan.zhihu.com/p/438070027


公众号:

文章1:R语言批量处理文件

原文链接:https://mp.weixin.qq.com/s/YHbRtya18IZ7q1dsXQJIpQ

文章2:栅格数据掩膜(裁剪)方法合集(terra代码来源)

原文链接:https://mp.weixin.qq.com/s/jzcescAa9mL1BgCIZysGsw

文章3:基于R语言批量裁剪并导出栅格数据

原文链接:https://mp.weixin.qq.com/s/1CHX_wpvUtcj17bB4EP8wA


目前处理一知半解状态,拿别人写好的代码看懂改用下还行,自己写比较困难,不过也是不断学习进步的过程,慢慢学吧~



学习记录三:R语言/ArcGIS—单张/批量处理tif(裁剪crop/掩膜mask)的评论 (共 条)

分享到微博请遵守国家法律