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

by 李远祥

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

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

你设,还是不设

环境设置都在那里

不增不减

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

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

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

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

环境设置有四个级别:

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

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

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

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

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

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

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

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

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

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

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

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

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

笑谈ArcToolbox (3) ArcToolbox的一亩三分地的更多相关文章

  1. 笑谈ArcToolbox (1) ArcToolbox 的发展方向

    笑谈ArcToolbox (1) ArcToolbox 的发展方向 by 李远祥 ArcGIS工具箱ArcToolbox具有非常多的工具,相信用过的人都非常惊叹,其功能完备并且强大,种类繁多,总能找到 ...

  2. Android应用性能优化(转)

    人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...

  3. 《Python Web 接口开发与测试》---即将出版

    为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化相关的,工作中的接口自动化颇有成效. 我一直是一个没有测试大格局的人,在各种移动测试技术爆发的这一年,我却默默耕耘着自己的一亩三分地儿(We ...

  4. Linux学习笔记1_用户和权限

    自从我大微软终于放下身段,决定给开源社区一个迟来的拥抱,追随多年的拥趸们像是突然得到了女神的垂青,各种茫然失措.痛哭流涕.欢欣鼓舞,纷纷唱了起来:“等了好久终于等到今天,梦了好久终于把梦实现……”唱完 ...

  5. 《InsideUE4》-10-GamePlay架构(九)GameInstance

    一人之下,万人之上 引言 上篇我们讲到了UE在World之上,继续抽象出了Player的概念,包含了本地的ULocalPlayer和网络的UNetConnection,并以此创建出了World中的Pl ...

  6. 常见linux命令释义(第八天)—— Bash Shell 的操作环境

    换了新公司,公司的领导很不错.自己感受比较多的地方是,自己的工作效率明显比以前高了.以前会对频繁变动的需求十分不耐烦,现在接到需求后会仔细的思考,进行整体构建.即使以后需求有变动,也能够比较轻易的在原 ...

  7. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  8. arcmap Command

    The information in this document is useful if you are trying to programmatically find a built-in com ...

  9. 《转》---google面经

    我面的职位是Softwre Engineer, Tools and Infrastracture, 所以开发和测试的问题都会问到 Phone interview 1:白人小哥.给一个Interval的 ...

随机推荐

  1. javascript面向对象一:函数

    Arguments对象 <script type="text/javascript"> /* Arguments对象: * 在Java中存在函数的重载现象. * 节省了 ...

  2. Linux终端、控制台复制粘贴

    1. 在终端下:          复制命令:Ctrl + Shift + C  组合键.          粘贴命令:Ctrl + Shift + V  组合键.  2. 在控制台下:        ...

  3. libconfig第一篇———使用指南

    官网:http://www.hyperrealm.com/libconfig/ 1 libconfig是什么? Libconfig是一个结构化的配置文件库,它可以定义一些配置文件,例如test.cfg ...

  4. Salesforce开发者学习笔记之二:Salesforce开发平台应用场景

    Salesforce作为一个全方位的CRM系统可以应用于企业中的各个不同部门以取代手工的,耗时的以及低效的业务流程,例如 基于报表的数据管理和分析 基于电子邮件的协同合作 本地的文件共享 各种手工操作 ...

  5. doxygen 生成源码文档

    使用doxygen 生成源代码的文档是相当方便的,本文就简单整理下doxygen的使用说明 1. 安装 关于安装的问题不做特殊的说明,这里直接使用命令安装, 源码安装不做介绍 ubuntu: sudo ...

  6. kvm 动态挂载硬盘

    根据最新需求需要动态的给kvm下的windows虚拟机挂载硬盘,网上查看了很多资料终于试通了,在这里记录下方便自己回忆,同事可以给大家做做参考,如果有问题欢迎吐槽 环境:先说说我使用的环境,环境是使用 ...

  7. js传递数组到后台

    //post方法不得行,各种问题...改为ajax就阔以了.//默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, // ...

  8. CodeSmith生成实体类

    1.新建一个模板,将以下代码复制进去,在属性工具栏里设置 SourceTtable和NameSpace , 点击生成即可 <%@ CodeTemplate Language="C#&q ...

  9. AndroidManifest.xml文件

    AndroidManifest.xml常用标签解读 1.全局篇(包名,版本信息) 2.组件篇(四大组件) Activity Service Content Provider Broadcast Rec ...

  10. RAMOS系统 WIN7+VHD+GURB map

    转载(并未验证) 前段时间加了一个内存条,将笔记本内存升级到了6G,由于之前用的是32位的win7不可以直接使用6G内存,便装了64位的系统.网上找资源的时候发现,大内存可以使用RamOS,从内存中虚 ...