• ArcMap自定义脚本工具制作


    原文 ArcMap自定义脚本工具制作

        在制图的前期,一般需要做一些数据的整理,如图层合并、裁剪等工作。虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧。如批量裁剪,虽然可以实现,但出来的结果会重命名为[图层名]_clip,这样对于配置好整个区域的mxd,需要单独裁剪部分范围数据非常不友好,以为后续工作意味着需要单独给裁剪出来的数据重命名,删除掉后缀_clip才可以统一设置数据源。

        解决这个问题其实可以很快速的编写python脚本去实现。但脚本对于一般人来说比较麻烦,每次使用都需要调整脚本的参数,容易出错。ArcGIS是允许将脚本导入成为工具,这样就可以在ArcMap的界面下像使用常规工具一样去处理数据了。

        下面以批量裁剪保留图层原来名称并删除数据为空的图层,以这个功能为例子。其代码如下:

    #coding=gbk

    #这个工具是使用一个图层去裁剪指定数据库或文件夹的数据,并将裁剪后空的图层删除

    ClipFeats = arcpy.GetParameterAsText(0) #用于裁剪的图层

    inputwork=arcpy.GetParameterAsText(1) #输入的要裁剪的数据

    workPath = arcpy.GetParameterAsText(2) #裁剪后输出的位置

    arcpy.env.workspace = inputwork

    featureclasses = arcpy.ListFeatureClasses()

    for fc in featureclasses:

        outfeat = workPath+u"\"+fc

        arcpy.analysis.Clip(fc, ClipFeats,outfeat) #裁剪数据并输出

    #检查是否有空的要素,如果是空的,删除数据

    arcpy.env.workspace = workPath

    featureclasses = arcpy.ListFeatureClasses()

    for fc in featureclasses:

        desc = arcpy.Describe(fc)

        result=arcpy.GetCount_management(fc)

        me = result.getOutput(0)

        if int(me)==0:

            arcpy.Delete_management(fc)

    制作工具非常简单,只要将参数设置好,就是前面的几行arcpy.GetParameterAsText(0)

    后面的这个索引号非常重要,它决定了在工具中参数的位置。

        第一部新建一个工具箱,在工具箱出添加一个脚本

    对脚本进行一些必要的描述,如下图所示

    选择好对应的编写好的脚本

    接下来就是最重要的参数设置了,这里的参数顺序是按照前面代码中参数获取的顺序要保留一致。

    显示名称为工具调用时的显示说明,数据类型就必须跟参数对应,例如要裁剪的数据是个featureclass,那就可以设置为要素类或者图层;其他的两个参数由于都是指向输入的路径或者输出路径,可以设置为【工作空间or要素数据集】

    如下图

    完成后可以直接双击脚本工具,可以执行。

    通过arcpy简单的几行代码,并实现自定义的高级裁剪功能,有了一些常规的脚本之后,对齐输入输出参数进行单独的改写,设置为脚本工具,可以实现更多的快捷和友善的操作。

  • 相关阅读:
    不用服务器也能跑的框架wojilu
    PLI 到 COBOL 的转换数据类型 【不搞Mainframe的可能看不懂,冷门的语言】
    我记录网站综合系统 技术原理解析[8:ActionChecker流程]
    纪念VB.NET君
    我记录网站综合系统 技术原理解析[7:CSS类]
    我记录网站综合系统 技术原理解析[10:PermissionChecker流程]
    我记录网站综合系统 技术原理解析[6:内容初始化处理]
    我记录网站综合系统 技术原理解析[9:HttpMethodChecker流程]
    怎么打败腾讯[纯讨论]
    VisualStudio2012新特性[路边社通稿]
  • 原文地址:https://www.cnblogs.com/arxive/p/5991235.html
Copyright © 2020-2023  润新知