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

时间:2021-10-22 20:23:14

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

by 李远祥

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

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

你设,还是不设

环境设置都在那里

不增不减

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

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

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

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

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

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

环境设置有四个级别:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

通过了环境设置,这里限制了工具处理的范围,并且在最终的结果输出使用了掩膜,实现结果的边界裁剪。而这些设置,在工具界面的参数是不存在的。所以,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. 详解微信开发者文档——5 access_token管理

    写在前面的话:前几篇博客详细讲解了如何获取用户发送的消息并进行回复,这里的回复是一种被动的回复,而被动回复的方式便是通过echo返回信息给微信服务器的POST请求,因此,其实我们并没有算的上调用了微信 ...

  2. Oracle 11g r2 x64 中文乱码解决方案

    1.检查服务器编码: 执行SQL语法: select * from v$nls_parameters; 2.设置本地客户端编码: 进入 我的电脑,属性,高级,环境变量,添加2项:LANG=zh_CN. ...

  3. 总结使用Unity 3D优化游戏运行性能的经验

    原地址:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...

  4. Careercup - Facebook面试题 - 5344154741637120

    2014-05-02 10:40 题目链接 原题: Sink Zero in Binary Tree. Swap zero value of a node with non-zero value of ...

  5. 怎样通过WireShark抓到的包分析出SIP流程图

    WireShark抓到了SIP包, 逐条分析, 看瞎...希望能够写个脚本, 自动生成流程图

  6. bzoj4198 荷马史诗 哈夫曼编码

    逐影子的人,自己就是影子. --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛>和&l ...

  7. 遍历tr通过name获取对应值用作判断或者赋值

    $("#table tr:gt(0)").each(function(i){ var bidPrice = $("input[name='bidPrice2s']&quo ...

  8. Java学习前的一些准备

    1.JDK - (Java SE Development Kit) JDK是Java开发所需要的环境,就跟我们想玩某个网游一样,玩之前一定是需要先安装相应的程序包的.那这个JDK就是我们准备登陆Jav ...

  9. Android H5调起原生微信或支付宝支付

    Android H5调起原生微信或支付宝支付 WebView调用原生微信或支付宝回调:其原理就是在shouldOverrideUrlLoading(final WebView view, String ...

  10. php分享十八:网页抓取

    一.抓取远程图片到本地,你会用什么函数? 方法1:利用readfile读取远程图片到缓冲中,然后写入新的文件 function grabImage($url, $filename = '') { if ...