码迷,mamicode.com
首页 > 其他好文 > 详细

ArcMap自定义脚本工具制作

时间:2016-10-23 23:54:57      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:put   gem   对齐   int   www   python   list   ges   alt   

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

 

 

 

ArcMap自定义脚本工具制作

标签:put   gem   对齐   int   www   python   list   ges   alt   

原文地址:http://www.cnblogs.com/arxive/p/5991235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!