用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
贴士:
-
ArcGIS一般会自动加载显示处理好的结果,但有时批量处理数据过多,会造成卡顿。我们可以在Geoprocessing>Geoprocessing Opions里进行设置,取消结果显示的勾选。
image -
初学Python者可能有时会不知道调用哪个函数,但ModelBuilter比较简单,可以先建好要用的模型点击菜单Model>Export>To Python Script,打开其脚本代码进行参考学习。
image.png - 一点疑惑,刚学习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的就成功了,具体原因还待以后深究...
网友评论