原文 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自定义脚本工具制作的更多相关文章

  1. 使用自定义脚本扩展程序自动执行 VM 自定义任务

     在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...

  2. 开始你的第一个npm脚本工具

    在实际开发中,一般刚开始一个项目或者刚接手一个项目,我们会运行 npm install 下载安装所有依赖, 在实际开发中,可能也会使用各种命令行-- 来提高我们开发的效率. 与它相处了这么久,你真的了 ...

  3. 自动化工具制作PASCAL VOC 数据集

    自动化工具制作PASCAL VOC 数据集   1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...

  4. DOS版PE工具制作

    // PE.cpp : 定义控制台应用程序的入口点. //DOS版PE工具制作 #include "stdafx.h" #include <windows.h> #in ...

  5. xmake从入门到精通12:通过自定义脚本实现更灵活地配置

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文主要详细讲解下,如何通过添加自定义的脚本,在脚 ...

  6. ExcelWeb脚本助手,自定义脚本,批量操作Excel与网页

    ExcelWeb脚本助手,是一款可以自定义脚本操控Excel和浏览器的工具.提供了简单实用的Excel与Browser的API调用,通过自建脚本或自建项目,随意定制. 可以非常方便的根据Excel中的 ...

  7. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...

  8. ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

  9. WPF ScrollViewer(滚动条) 自定义样式表制作 再发一套样式 细节优化

    艾尼路 出的效果图 本人嵌套 WPF ScrollViewer(滚动条) 自定义样式表制作 图文并茂 WPF ScrollViewer(滚动条) 自定义样式表制作 (改良+美化) 源代码

随机推荐

  1. POJ 2080 Calendar(很水的模拟)

    刚开始一直WA,才发现原来代码中两处减去年份.月份的天数的判断条件用的是>=,虽然最后考虑n=0要退回一天的情况,但还是WA.后来改成>的条件判断,省去了考虑n=0的麻烦,AC. 此题无非 ...

  2. 关联式容器(associative containers)

    关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...

  3. PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)

    定义字符串的时候,用单引号或者双引号都是可以的.我个人习惯是用双引号.在输出字符串的时候,若字符串中含有字符串变量,使用单引号和双引号则是有区别的.如下面程序: 1 2 3 4 5 6 7 8 < ...

  4. POJ3253Babelfish

    http://poj.org/problem?id=3253 就是一个哈夫曼树,题目下边有提示,所以题意还是好理解的 #include<cstdio> #include<cstrin ...

  5. c# 组元(Tuple)

    组元是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本.组元使用泛型来简化一个类的定义. 先以下面的一段代码为例子: public class Poin ...

  6. THUSC 2016游记

    又去北京转了一圈,拿到了很不错的协议,非常的开森 day -1 6.2 上午去pku的同学就走了QAQ 然后波哥说下午要考试,考联考题 我一脸无奈的表示我已经提前要到题目而且看了题了 然后波哥就决定给 ...

  7. 搜索之BM25和BM25F模型

    www.netfoucs.com/article/wdxin1322/94603.html#

  8. Android:界面设计工具DroidDraw

    DroidDraw是款强大的安卓界面设计软件,基于Java Swing开发,可以通过它拖动控件.设置层属性.设置颜色等步骤轻松地生成复杂的安卓XML布局文件. >>>>> ...

  9. Java类的加载、链接和初始化

    一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...

  10. 41. First Missing Positive

    题目: Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2 ...