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

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

by 李远祥

      每个人都会有一些鲜为人知的小秘密,都有着不允许别人染指的一亩三分地。软件是人编写的,当然也会给它留有自己所拥有的一亩三分地。ArcToolbox也不例外,而它的一亩三分地就是【环境设置】。

      “环境变量”这个词干IT的人一点都不陌生,特别是那些搞Java和Linux环境的人,一不小心就被“环境变量”给搞了。ArcToolbox里面的【环境设置】其实有点像环境变量设置一样,都是作为一个执行前的一些预设。很多人在使用ArcToolbox的时候都不去设置环境,并不代表工具的使用就不需要特定的环境,而恰好相反,每一个工具在其调用执行的时候都会检查设定的环境,然后才真正运行起来。环境的设置对结果的影响是非常大的。所以,还是像那句诗:

你设,还是不设

环境设置都在那里

不增不减

 

      那么,我们还是抱着好事的态度多问一句,在ArcToolbox里面到底有多少环境设置呢?还是照旧,打开帮助,检索一下“环境设置”关键字。帮助会帮我们罗列出大量的条目,其实跟没有检索差不多。因为每个工具里面都是带有【环境设置】 O(∩_∩)O哈哈~

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第1张图片

      既然传统的检索方式不能出满意的结果,那么我们将继续使用更加传统的方式--打开工具帮助。还记得上一章节《笑谈ArcToolbox (2) 开启ArcToolbox的钥匙》中查看工具帮助吗?其实在工具双击打开之后,除了【确定】【取消】【显示帮助】之外,还有就是【环境】按钮。点击这个按钮,就直接进入到【环境设置】界面中了。笔者是个非常传统的中国男人,所以,还是使用传统的方式,点开【显示帮助】。首先看到的就是一系列的环境设置的选项,然后帮助显示的就是如梵音一样的看不懂的说明,如下图

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第2张图片

      最功利的做法就是多点开几个不同的工具,看看其选项。看了以后基本上就可以放心了,因为环境设置的选项都是大同小异,都是有限的几项,也就是可以用有限的精力去研究有限的设置了,这真是想起来都会笑醒。

      再来看这个帮助关于环境设置的第一段话,毕竟能够在每个工具里面都同样出现的文字,要不就是非常重要的,要不就是程序员脑袋抽风了。这显然是属于前者。接下来且看第一段……,由于在环境配置这个帮助面板中无法使用ctr+c 和ctr+v  ,笔者就不黏贴该段文字,那就且看上图吧。上图第一段不外乎是想表达环境设置是有等级的,就像猿类写代码声明了一个变量一样,有系统全局的,有函数内的,有过程内部的,总之,就是一个作用域的问题。

环境设置有四个级别:

  • 应用程序级别设置是默认设置,执行任何工具时均应用该设置。
  • 工具级别设置适用于工具的单次运行并且会覆盖应用程序级别设置。
  • 模型级别设置使用某种模式指定和保存,并且会覆盖工具级别设置和应用程序级别设置。
  • 模型过程级别设置在模型过程级别指定,随模型一起保存,并且会覆盖模型级别设置。

      上面列出四个环境设置的等级。第一个是作用于整个ArcMap的,第二个是作用于具体某个工具的,第三个第四个就是作用在模型中(就是使用modelbuilder创建的模型工具)。我们先来看前面两个。

      应用程序级别的就是作用在ArcMap中的设置。虽然帮助中没明确告诉我们在哪里可以设置,但它肯定是有默认设置的,只是我们暂时没找到而已。要找打它不难,多点击一下软件的其他位置就行了。其实收藏得并不深,直接在【地理处理】下拉菜单就能找到。

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第3张图片

      而这里的环境设置跟具体某个工具的设置是一样,都包含了工作空间、输出坐标、处理范围、栅格存储、制图、并行处理等,只是其作用域不一样而已。如下图所示。

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第4张图片

      点开【工作空间】,可以看到这里默认设置一个数据存储的gdb,而这个gdb恰好就是ArcGIS软件默认保存数据的地方,如下图

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第5张图片

      所以,如果在使用某个工具去进行操作的时候,数据会默认写到这个默认数据库中。而如果这个配置修改了之后,就在ArcMap中执行工具,就会写到其他指定目录的数据。例如C盘空间比较紧缺,那就将这个默认数据库指向到其他充足空间的分区吧。而这个设置,所谓的应用程序级别,其实就是作用于某一个mxd文档,在该文档打开的情况下调用所有的工具都会默认将数据写到该工作空间中。它会随着地图文档保存而将这个配置保存下来。如果是新建的文档或者其他文档,还是会使用默认的设置,则不受到影响。

      第二个级别就是工具级别了,只会作用在当前使用的这个工具,其他工具还是会读取应用程序级别的设置。例如做了一次裁剪,更改了裁剪工具的环境,但下次执行同样的裁剪工具,就不会继续使用上一次的环境了。

      模型级别也是类似于工具级别的作用于,模型里面的用到的工具同样也保留自己单独的环境设置。这就是整个环境设置的级别了。

 

      除了不同的级别之外,环境设置会影响到执行的结果。例如在环境设置中有一个处理范围,那么这个处理范围默认的就是操作处理这个数据的最大矩形区域,一般叫做extent 。一般情况都不用单独设置这些范围,但既然存在,肯定有合理的地方。例如做插值分析,不设置范围的话,结果只会显示采样点的具体范围,而我们更加需要的是这些采样点的结果覆盖整个行政区域。下图就是使用idw插值的时候没有设置环境里面的处理范围,所以其结果区域只覆盖采样点的整体范围

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第6张图片

      显然这不是我们想要的结果,所以,经过调整之后,在执行同样的idw操作,利用行政边界图层作为其处理范围,结果就完全不一样了。

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第7张图片

      同时也可以在栅格分析的结果中使用掩膜,同样设置为行政边界

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第8张图片

      工具执行之后,可以看到最终的结果如下

笑谈ArcToolbox (3) ArcToolbox的一亩三分地_第9张图片

      通过了环境设置,这里限制了工具处理的范围,并且在最终的结果输出使用了掩膜,实现结果的边界裁剪。而这些设置,在工具界面的参数是不存在的。所以,ArcToolbox的这一亩三分地非常重要,直接影响到整个分析和处理的结果,在使用过程中一定要肾重啊O(∩_∩)O哈哈~

你可能感兴趣的:(笑谈ArcToolbox (3) ArcToolbox的一亩三分地)