美文网首页生态遥感的学习笔记
基于Python的SetNull批量处理

基于Python的SetNull批量处理

作者: 荔枝猪 | 来源:发表于2019-06-25 20:07 被阅读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的就成功了,具体原因还待以后深究...

    相关文章

      网友评论

        本文标题:基于Python的SetNull批量处理

        本文链接:https://www.haomeiwen.com/subject/kczxcctx.html