生态遥感的学习笔记

基于Python的SetNull批量处理

2019-06-25  本文已影响4人  荔枝猪

用Python实现SetNull批量处理

前面文章基于ModelBuilter的SetNull批量处理

讲了如何利用ArcGIS中的ModelBuilter来构建一个SetNull批量处理的模型。

下面我们讲下如何利用Python代码实现SetNull批量处理,用代码来处理数据总归是会更方便有效的,以后还要慢慢学习积累,这个当练手。

首先上代码:

import arcpy
arcpy.env.workspace = "E:\\GPP\\test2"
rasterlist = arcpy.ListRasters("*","tif")
output_path = "E:\\GPP\\test3\\"
for raster in rasterlist:
  inRaster1 = raster
  inRaster2 = raster
  out = output_path + raster
  arcpy.gp.SetNull_sa(inRaster1, inRaster2, out, "value =-9999")

将上述代码复制到ArcGIS中Python的内置窗口中,回车运行即可。


image

贴士:

  1. ArcGIS一般会自动加载显示处理好的结果,但有时批量处理数据过多,会造成卡顿。我们可以在Geoprocessing>Geoprocessing Opions里进行设置,取消结果显示的勾选。


    image
  2. 初学Python者可能有时会不知道调用哪个函数,但ModelBuilter比较简单,可以先建好要用的模型点击菜单Model>Export>To Python Script,打开其脚本代码进行参考学习。


    image.png
  3. 一点疑惑,刚学习SetNull函数,先查的其官方帮助文档,实例代码如下:
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outSetNull = SetNull("elevation", "elevation", "VALUE < 0")
outSetNull.save("C:/sapyexamples/output/outsetnull.img")

我稍微进行了以下改写:

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "E:\\GPP\\test2"
outSetNull = SetNull("tem2002_02.tif", "tem2002_02.tif", "value =-9999")
outSetNull.save("E:\\GPP\\test3\\tem.tif")

失败了...研究了下,好像是最后的save不能保存为tif格式文件,换成默认格式grid的就成功了,具体原因还待以后深究...

上一篇下一篇

猜你喜欢

热点阅读