1、使用 ArcGIS GP 服务之一框架介绍 对于很多初学者来说,GP 服务是一个难点,也是一个重点。GP 的全称是Geoprocessing,可以对原有的功能进行扩充,可以说只要在桌面实现的事情,在 Server 都可以做到。 我们首先看一下,Geoprocessing 框架,我们主要是通过这些框架来进行Geoprocessing 处理的。我这里使用的是 ArcGIS 10.1 sp1 版本。 第一个,ArcToolBox,这里是系统自带的工具,只能复制和粘贴,不能手工的创建。 第二个,是 Dialog,也就是对话框,点击某一个模型或者工具。可以输入一些参数,将结果输出出来。 第三个,是 Mo
2、del Builder,我们可以点击 ,可以点击最右侧的那个按钮。在下面的文章,我们将使用这个工具来建模,然后发布成 GP 服务。 第四个,是 Python 工具,我们点击 ,倒数第二个按钮。 另外我们说一下,工具分为多种类型的。 转载请注明出处,http:/ webgis使用 ArcGIS GP 服务之二手工建模 前面打一个小广告,欢迎关注 WebGIS 微博 建模,是我们发布 GP 服务的第一步,这是基础功。我们为什么要建模呢?对于现实的 GIS 业务来说,基本上都有相应的流程和规范,具体怎么做,都得按照步骤来。步骤少还好说,要是步骤多了,不仅效率低下,而且还容易出现工作错误,每一步都会产
3、生中间文件。例如我们的天气预报,将收集各个气象站站点定位到地图上,然后剪出中国的版图来,再然后进行克里金差值等等,一些步骤以后,就可以得到相应的温度线或者降雨线。步骤都是规定好的,为什么不做成一个工具,然后直接输出结果呢? 对,这就是建模的好处,我们通过将多个工具组合起来,生成一个工具,来完成整体的步骤化。 上一篇博客介绍了,我们首先打开 Model Builder。如果不知道怎么打开,请看上一篇博客吧。 首先介绍一下,我们要实现的一个过程,某一个地方发生污染,周围哪些城市将受影响,我们这里只考虑距离吧。 下面是我们整个建模的思想。 1:得到受污染的区域 2:进行缓冲 3:将在缓冲区的城市选出
4、来。第一步,新建模型最右侧的按钮。 第二步,拖入工具我们可以将现有的工具,直接拖到这里面来。比如我拖一个 Buffer 工具。 其实如果找不到的话,我们可以进行一个搜索,快捷键 Ctrl+F。 拖进之后的样子。 我们双击 Buffer,我们可以看到 Buffer 的很多参数,前面带绿点的参数是必填的。 第三步,设置参数参数分为两种方式填,一种直接填在这里面,另外一种是作为参数。有绿点是必填的,如果不输入这些参数,这个工具是黑白色的,不是彩色的。 比如我在这里输入 Linear unit :1 单位选择为 Decimal degrees。 如果是以参数的方式,来添加的话,有两种方法添加。 先说第
5、一种,右键 buffer,选择 Make Variable-From Parameter。我们看到后面的参数,和上图的参数是一样的。不过还是缺少了一个Output Feature Class。看一下 Buffer 右侧是什么?这是拖进来,自动就把这个参数添加进来了,我这里点击选择 Distancevalue or field。 由于之前,这个参数,我已经设好值,所以说显示的是彩色的。后面的两个还是没有变成彩色,说明这个 buffer 还缺少一个必填参数。就是 Input Features。 注意,我们点击这个 Distance 参数,也是可以修改这个参数值的。 我们这时候,使用第二种方式。 在
6、这里建模空白区域,右键选择 Create Variable(创建变量),选择我们需要使用的参数类型,我们这里选择 Feature Set。 点击 ,然后点击 Feature Set,一直拖着鼠标不放到 Buffer,然后松开。 然后会出现和这个类型匹配的,参数名字,这里我选择 Input Features。 按理说,这里我已经完所有的参数,应该变成彩色才对。回头想一下,应该是 Feature Set 没有设置成功,应该一些参数没有设置对。我们点击Feature Set。 在这里我选择了一个区的 shp 文件。点击确定。 我们再去看一下,我们的模型,都变成了彩色。说明我们这个必须参数已经设置正确
7、,正确与否,还不能确定。 我们先点击那个 ,进行检验一下啊,是否正确。争取的话,我们点击。 运行完毕之后,可是并知道结果怎么样。 这个时候,我们可以右键这个 Out Feature Class,选择 Add To Display。 如果不这么办的话,也是可以采用其他的方法的,点击 Out Feature Class,我们这样就可以知道整个的输出地址什么了,当然作为参数我们也可以自己进行手动的设置。 现在完了吗?其实对于输入 Feature Set,我想进行一个手动画一些区域,然后进行一个缓冲区生成,来在 Desktop 上的一个检验。 把原来的“Input Features“参数还原成最初的样
8、式吧。 在这之前,我们需要在 Geodatabase 文件中新建一个 Feature Class,其中类型选择 Polygon Feature。为什么要建立这个呢?因为我们需要将这个模板引入到这个参数中,让 Desktop 知道我们要输入的是点、线还是面之类的。 右键这个属性,选择 Properties。进入 Data Type 标签,然后刚才我们新建的 Feature Class。 稍等,还有一 步需要完成,右键这个参数,然后选择 Model Parameter。这个时候,就会出现一个 P。所有出现 P 的,这个模型作为使用,都需要在使用的时候,作为其中一个参数出现,没有把它写死。那个缓存长
9、度,由于没有加 P,使用的时候,参数都是死的,不能进行改变,除非重新编辑这个 Model,但是一旦发布成服务,就不能更改了。所以说,在使用之前,一旦要想好,那些参数是死的,哪些参数是在使用的时候,才能确定的。 为了 GP 服务的使用,参数的名字将会作为参数名称来提交的,为了更好的理解意思,最好更改一下名字,比如说,上图的“Feature Set“,更改为“ContaminatedAreas“。 这个时候,我们来保存这个模型吧。 第四步,初入验证模型打开这个模型。 然后在 Desktop 画区域吧。 然后点击“OK“,等待整个的运行完毕。 到了这里,我们缓冲区域基本上就够完成了。下面我们就要整体
10、构建我们模型了。根据模型选择城市。 第五步,完成模型我们这个时候,需要添加一个新的工具,select layer by location。把第一步的输出结果,作为第二个工具的参数 Selecting Features。然后再添加一个 Input Features 参数,选择相应的图层。等等。 最后我们实现整个模型,是这样的。 第六步,最后验证模型10.1 版本,为了更加保证模型,没有错误,需要先进行跑一遍才可以发布。在这里我添加了原来画的区域,我是怎么做到的呢?很简单。点击Geoprocessing-results。 然后把选中的,直接拖进去,就可以显示了,就能检验我们输入正确与否。这一博客,
11、确实有些长了。 下一个博客,我们就要做发布前的准备了。这是我的数据文件 下载转载请注明出处,http:/ webgis使用 ArcGIS GP 服务之三发布前的准备 这里的准备分为两部分,分别是数据整理和环境设置。数据整理上面我们使用到全国主要城市图,新建的 Feature Class,中间和最后生成的等等数据,我们最好数据整理一下。 上图是我们常见的一个数据结构图。 ToolData 在这里面,我们可以放置我们的底图 Geodatabase 和 Schema Geodatabase。何为 Schema,上面我们新建的 Feature Class,类似一种模板。 Scripts 可以放置一些
12、python 脚本文件,具体脚本文件,请看下一篇关于python 集成 Module Builder ,生成工具。 Doc 可以放置一些说明文件。 Scratch 放置一些中间数据,例如上一个博客我们生成的缓冲区文件,就可以放置在这里。例如这是我新建的文件列表环境设置地理处理环境设置是影响工具执行结果的附加参数。这些参数与常规工具参数的区别在于它们不会显示在工具对话框中(存在某些例外情况)。更确切地说,这些参数是先前使用独立对话框设置的值,工具在运行时将询问和使用这些参数。 环境设置有四个级别: 应用程序级别设置是默认设置,执行任何工具时均应用该设置。 工具级别设置适用于工具的单次运行并且会覆
13、盖应用程序级别设置。 模型级别设置使用某种模式指定和保存,并且会覆盖工具级别设置和应用程序级别设置。 模型过程级别设置在模型过程级别指定,随模型一起保存,并且会覆盖模型级别设置。应用程序级别,我们点击 ArcMap-Geoprocessing-Environment。这里我们将 Workspace - Current Workspace 设置到第一个图的ToolShare 文件,然后 Scratch Workspace 设置到图中的 Scratch 文件夹。然后,调整我们的工具,需要中间文件和最后生产的文件,都放置在相对WorkSpace 路径下。右键我们之前编辑的工具,然后点击 Edit。找
14、到相应的输出文件或输入文件模块,双击打开,设置为相对地址。例如我这里设置的最后的输出文件,%scratchworkspace%,就代表上面的 Scratch Workspace 路径。等等,我们还得去完成一件事情,就是需要设置我们新建的 module 需要设置保存为相对路径。当然也需要将 MXD 文档设置为相对路径。编辑模型 -菜单栏 Model-Model Properties-圈中下面标红的。建议来说, MXD 文档之类的工程,最后设置为相对路径,直接就拷贝使用。可能,很多人不知道为什么需要设置 ArcMap 的 Workspace?我们需要在ArcMap 中跑一遍,验证是否正确,所以需要
15、修改环境变量。在 Server 使用GP 服务当中,每一次请求的时候,都会产生一个 job,这个 job 会有自己的环境变量,这样一来,就可以保住整个数据不会互相影响。我们保存所有的设置之后,然后重新运行一遍。下面我们就要进行服务的发布了。这是我的数据文件 下载转载请注明出处,http:/ webgis使用 ArcGIS GP 服务之四 GP 服务发布 所有的数据与环境都配置好以后,我们就需要发布 GP 服务了。对于ArcGIS 10.1,发布 GP 服务方式改变了,得需要 ArcMap 帮助。我们可以先将这个服务打包定义,然后发给别人,使用 Sever 发布,也可以直接使用Server 发布
16、。 不论怎么样,都需要预先在 ArcMap 跑一遍。菜单栏 Geoprocessing-Results 查看结果。 服务发布为什么需要跑一遍呢?之前我们模型定制完成之后,直接发布,没有验证,可能使用 GP 服务,就出现问题。所以,这样一来,先跑一遍,就可以处理这些问题,然后再去发布。 1:选中结果 右键当前结果,Share As-Geoprocessing Service。 2:点击 Publish a Service 这里有是三个选项,第一个意思是发布一个新服务,第二个将服务打包定义(模型当中使用到的数据,模型,服务设置),第三个意思是,重新覆盖当前的一个模型。 3:设置服务名字 上面的 c
17、onnection,需要预先在 catalog 当中设置好,具体怎么设置,可以在这里添加一个。4:设置服务文件路径 可以使用现有的,也可以新建一个“文件夹“ 。 5:服务参数设置 下面主要介绍比较常用的参数。 (5.1)General 这里面的参数,就是根据前面的设置,列出来的,不能改变。能改变的,就是设置是否服务发布的时候,是否立即启动。 (5.2)Parameters Execution Mode,同步和异步定义了客户端(使用任务的应用程序)如何与服务器进行交互以及如何获取任务结果。服务设置为同步时,客户端将等待任务完成。通常,同步任务的执行速度很快,大概需要 5 秒或更短。异步任务的执行往往花费的时间较长,客户端必须定期向服务器发出询问以确定任务是否已完成,如果完成,则获取结果。使用异步任务的 Web 应用程序必须添加函数逻辑来检查任务状态,并在执行完毕后处理结果。不同的方式,在代码当中使用的函数是不一样的。 View results with a map service, 发布地理处理服务时,可以选择以地图形式查看服务所有任务的结果(以及任务的其他结果)。这一地图使用 ArcMap 创建在服务器上,以将其以图片格式(如 .jpeg)传输回客户端。返