笑谈ArcToolbox (2) 开启ArcToolbox的钥匙

by 李远祥

GIS人遇到ArcToolbox就像找到了宝藏一样兴奋,但并不是每个找到宝藏的人都具备开启宝藏的钥匙。有时候功能强大并不见得就是一件好事,在面对上千个工具的时候,很多人尤其是GIS初学者都会无所适从。有句俗语说,人对未知的事物会心生恐惧。但也有一句老话说,无知则无畏。对于哲人来说,话怎么说都是好对的。所以,我们不妨静下心来看看,这ArcToolbox到底有多难,或者说到底有多容易。

1.查家底

ArcToolbox到底有多少个工具?有一些好奇的初学者一般都会想一下这个问题。作为一个GIS的老司机,我只能引用一句歌词来说明:不要问我星星有几颗,我会告诉你很多很多! 打开ArcMap软件,展开工具箱一看,分门别类,齐齐整整的罗列出来,光是一级根目录就有以下十几种,每一级展开还将会有更多。

也许会有好事者会追问,那到底有多少,总归有个数吧。是的,就算是天上的繁星,每天都有星体爆炸和湮灭,也总该有个数的。但这总不能点开来数数吧。好吧,虽然我也没数过,但可以凭借一些经验的做法去快速查它的家底。

老司机应该都知道,每一个tool都有自己的一个arcpy调用方式,这也是ArcGIS强大的一个特点。既然是这样,我们就可以通过一些非常规的手段去探知。如果是Python的老程序员,对程序敏感的,很容易就找出来。到ArcGIS Desktop的安装目录下,找到arcpy的目录,大概是这样 :\Program Files (x86)\ArcGIS\Desktop10.4\arcpy\arcpy  这就是arcpy包所在的位置。直接找到这个目录下的一个toolbox.py 文件。用notepad++打开,不要问我为什么要用notepad++打开,因为我很懒,不想去数。

看,这就是绝世武功的目录!展开这个文件,可以看到arcpy导入每一个工具。拖拽到最底下,通过notepad++的行号可以看到总共的行数为787,(我统计的版本是ArcGIS10.4.1),扣除掉前面有14行Python注释,那在arcpy的这个工具列表里就是773 了。看起来好像好牛掰的样子O(∩_∩)O哈哈~

但作为一个老司机,问路就得多问几个人,不然还是会被指着绕圈圈的。既然我们要用的是ArcToolbox的工具,那由于arcpy是没有人桌面还是server的,原则上列出来的应该是的desktop、engine和server共有的部分。那么到底desktop 里面有多少可以用?好吧,不要欺负老司机了,乱指路是不文明的行径,我们得用科学的方法去查家底(就像韦小宝抄鳌拜家跟多隆说的那样,我生平最痛恨那些“穿柜桶底”的人)。所以,我们可以打开ArcMap,勇气Python窗口中用命令来查看

在命令窗口中输入 arcpy.ListTools() ,会返回整个工具列表,这是arcpy里面最真实的罗列了。如下图

这是一个数组,猿类可以用Python的语句来查看数据的长度  例如 len(arcpy.ListTools()) ,然后可以看到返回一个真实的数值

没错,就是909个,没有想象中的那么多吧。以前笔者一直认为ArcToolbox工具少说也有两千个,心生畏惧啊。可现在一看,才909个,学习的工作量顿时下降了一半,听起来好像是个好消息。但十多年下来,笔者真正能够接触并进入使用的,大概500个。这已经是工作的特殊性决定的了。估计一般人常用的大概也就是一百来个工具吧。

2.工具使用

在ArcMap最容易的不外乎是调用工具箱的工具了,最难的也莫过于使用工具箱工具了。对于工具,很多人似乎都停留在双击调用的想法中。其实ArcToolbox工具的使用是有一定的限制的。先不说工具的参数吧,先来看工具的前提条件。双击调用任何的工具,都可以其参数,如果没有任何的帮助,估计但从这些晦涩的提示文本,很多人都不清楚工具能做什么,该输入些什么。

这里面就有一些窍门了。可以点击最底下的【显示帮助】按钮,这样光标定位在任何一个参数输入框,都可以得到对应的提示,如果点击的是工具的标题栏部分,就会直接显示工具的整体帮助,如下图

点击【工具帮助】按钮,可以快速定位到整个工具的帮助中去,这是一种快速了解工具的途径。老司机们都是这样干的,因为这样非常简单粗暴的进入到工具的帮助当中。ArcGIS的帮助是非常强大的,尤其现在是从10.0版本开始具备中文帮助。几乎每个工具的帮助中都可以看到有一个【许可等级】的说明,这样我们就可以知道当前使用的ArcGIS软件版本是否支持该工具了。例如下图就是说明擦除工具只有桌面高级版才能使用。

当然,有时候这一招也不是通吃的,有些工具不一定会显示许可等级。遇到这种情况,笔者一般就是默默的切换到英文帮助,对,就是英文帮助,它还是会列出这个授权等级的。所以,当看不懂中文帮助的时候,请看英文帮助。O(∩_∩)O哈哈~

3.检索工具

人经常会存在一种感觉,例如菜太多的时候就不知道该怎么吃饭了。同样的道理,工具太多,有时候还真的不知道该怎么使用。最起码也得知道到底有什么工具,这些功能能做什么。一个一个去查看和学习,显示是行不通的,因为不是每个工具都适合于每个人。ArcGIS是通用的软件,所以也不存在针对某个行业使用特殊的术语。所以,这个时候关键字就很重要。最常用的方法当然是百度了。但当面对各种各样的【路边社】的说法时,也是让人无法适从。所以,合理使用软件的帮助。例如要做一个裁剪工作,那可以在工具帮助中输入裁剪二字,这样关于裁剪的一系列关键字就出来了。

当然了,这个还是不能迅速定位到对应的工具,只是在门外看看到底有什么裁剪的说明。如果想直接看看工具中有没有以【裁剪】二字命名的,可以直接在【搜索】窗口中进行查找。这是从10.0版本开始引入的一个窗口,非常好用。

也有人在使用这个搜索窗口没搜到任何的关键字的,那是因为软件刚安装,arcgis软件有个index的索引进程开启,需要一段时间才会检索到工具箱去。某些优化软件会在一开始的时候就将其“优化”掉。笔者也不喜欢这个进程在后台运行,所以也是一开始就将其杀掉,然后马上露上一手,在【搜索】窗口,搜索选项中将ArcToolbox的目录位置加入其中。ArcToolbox的位置在 :\Program Files (x86)\ArcGIS\Desktop10.4\ArcToolbox\Toolboxes

加入之后,点击【为新项目建立索引】,如下图,几十秒之后,就可以完成所有的索引,之后就可以开心查找了

接下来的事情,就是从实际出发,使用工具去解决问题了。

笑谈ArcToolbox (2) 开启ArcToolbox的钥匙的更多相关文章

  1. 笑谈ArcToolbox (3) ArcToolbox的一亩三分地

    笑谈ArcToolbox (3) ArcToolbox的一亩三分地 by 李远祥 每个人都会有一些鲜为人知的小秘密,都有着不允许别人染指的一亩三分地.软件是人编写的,当然也会给它留有自己所拥有的一亩三 ...

  2. (一)C#编程基础复习——开启编程之旅

    回想当年学习编程,刚开始学习是非常艰苦的,可能是因为文科生原因,刚开始接触工科类的知识不是很擅长,上去大学第一年基本没有好好学习编程,入门C#编程基础一窍不通,也许那时年少无知,第二学期开始奋发图强, ...

  3. OpenStack中Keystone的基本概念理解

    原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...

  4. 通过mysql命令行理解mysql

    引言:工具不可谓给我们的生活带来了便利,但有些时候我们却忘记了事物本身的意义.在大多数人都在追捧甚至是盲从各种各样的工具有多先进的时候,你是否有反思过:你目前是否有使用它的资格. 假设你学会了使用一款 ...

  5. Dennis与Ken爷爷的UNIX/C世界

     沉寂了很久了,时间在不断地逝去,转眼又到了新的一年,2013的发生了太多,Beta版本.辞职.职位转换.ARM.Driver.初级厨艺.Dx11.GPU.CPU.登山.GNU/Linux.Cross ...

  6. struts2支持的结果类型

    在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...

  7. Luogu P4707 重返现世

    题目描述 为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙.Yopilla 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始制作. Yopilla 来到了 ...

  8. Unix传奇

    转自 http://coolshell.cn/articles/2322.html 了解过去,我们才能知其然,更知所以然.总结过去,我们才会知道我们明天该如何去规划,该如何去走.在时间的滚轮中,许许多 ...

  9. [原]Openstack之identity server(keystone)

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 重新温习keystone的概念和理解 --------------------- ...

随机推荐

  1. mysql优化———第二篇:数据库优化调整参数

    摘要 参数调优内容: 1. 内存利用方面 2. 日志控制方面 3.文件IO分配,空间占用方面 4. 其它相关参数 一  摘要 通过参数提高MYSQL的性能.核心思想如下:         1 提高my ...

  2. HDU 4044 GeoDefense

    树形DP,和背包差不多.dp[now][x]表示now这个节点的子树上,花费为x的时候,获得的最大防御能力(保证敌方HP<=0) #include<cstdio> #include& ...

  3. C# DateTime简单的定时器用法

    DateTime是C#中的时间类,有公共索引器Now可以获取当前时间. 如果制作简单定时器的话,可以这样: 初始化:DateTime lasttime=DateTime.Now; TimeSpan t ...

  4. JAVA中传递参数乱码问题

    url传递中文如果jsp页面,myeclipse.web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,直接 ...

  5. STM32启动模式及API(转)

    源:STM32启动模式及API 我们玩ARM9,一般都是在内存里调试程序,速度飞快.STM32下也可以这样,虽说现在的flash寿命已经很长了,但flash中调试烧录程序还是一个很慢的过程,有时候程序 ...

  6. 【HNOI2013】题解 bzoj3139~bzoj3144

    比赛 题目:  http://www.lydsy.com/JudgeOnline/problem.php?id=3139 题解: 3$\le$N$\le$10,比较明显是一个搜索题,一开始我是直接搜了 ...

  7. IP头,TCP头,UDP头,MAC帧头定义(转)

    源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...

  8. JQuery EasyUI DataGrid 获取属性值

    在Jquery EasyUI中返回操作的时候,根据当前页返回到数据选取页: var grid = $('#datagrid'); var options = grid.datagrid('getPag ...

  9. Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)

    A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...

  10. 学习tabhost 实现微博的主界面

    2014-05-27 吴文付 微博的主界面还是很漂亮的,我们这里来熟悉下tabhost的使用, 网上资料很多,主要参考了:http://blog.csdn.net/shulianghan/articl ...