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