Silverlight 调用GP服务的总结
不废话,直接介绍实现方法。我们的目标是学会使用ArcGIS Server发布GP服务,并在客户端进行访问。我们将发布两个GP服务,一个用于绘制等值线,另一个用于绘制等高面(准确来说是插值的格栅图像)。下面就来详细了解一下实现过程:
在这里,我将整个过程划分为两个不同的阶段:
第一篇是搭建GIS服务的过程。
第二篇是创建Silverlight应用,调用GP服务
第三篇是关于GP服务结果的获取应注意问题。
第一篇: 搭建GP服务
在开始之前,我想分享一些我在摸索GP服务时的总结。由于很多人都问到这个问题,所以我决定简单总结一下。鉴于时间紧迫,我的总结可能不够详细。如果有任何不清楚的地方,请留言,我会尽力解答。同时,如果有任何错误,请指出来,我们可以相互学习、共同进步。
下面将正式介绍GP服务的内容:
从以下几个步骤来看,主要包括:
1 .准备数据,建立GP服务的文件夹结构。具体怎么做后面会讲到。
2. 在MoudelBuilder中建立绘制等值线的GP模型,以及等直面的模型(插值模型)。
3. 针对于插值,由于结果是格栅图像,因此在客户端无法直接获取,这里还需要制作插值服务的地图文档,也就是说我们需要将GP服务发布成结果地图服务。发布GP服务的过程后面也会讲到。
4. 在发布完GP服务之后,我们最好需要测试一下,看看在ArcMap中验证是否成功。
上述内容概括了发布GP服务的步骤,接下来将详细介绍:
1. 准备数据
由于我们是想根据输入的点要素,然后进行等值线绘制以及插值等。所以我们需要设定输入要素的参数,比如说我们这里的点代表某一污染物的检测点,并有一个浓度属性,我们想根据这个浓度属性来绘制等值线,那么我们需要在GP输入参数中定义这个属性,也就是说在输入的点要素类中定义这个浓度属性。
在ArcMap中,我们可以创建一个名为PollutionPoints的要素类,并向其添加一个名为PollutionC的浓度属性。这个要素类可以不包含任何点,它只是作为GP服务输入参数的模板。
首先,我们需要创建一个文件夹和地理数据库来存储我们的GP服务模型数据。下图展示了它们的结构:
我们可以按照以下步骤来建立PolutionPoints要素类:右键Schema地理数据,然后选择新建要素类。
点击下一步,选择坐标系。在这里,我们可以选择WebMecator坐标系作为底图使用。由于之后在Silverlight中采用的底图也是WebMecator的,因此建议选择该坐标系。当然,根据你自己的需求,你也可以选择其他的坐标系。
点击下一步,继续进行直到进入要素字段设置界面。在这里,我们需要手动添加一个名为PolutionC的字段,用于表示浓度值,并将其类型设置为双精度。
点击完成后,我们的输入字段就已经设置好了,可以开始构建了。
在ModelBuilder中创建模型时,可以参考以下链接获取有关建模知识的信息:http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#//002w00000001000000
以下是等值线绘制的模型示例:
说明:
- 这里采用的是样条函数法进行插值,因为样条函数可以得到比较光滑的曲线
- 这里增加了要素转面,目的是去除没有闭合线要素,这里得到是一圈一圈的等值线。
- 以上进行了平滑操作,经过测试发现,效果不是很明显,当然如果你采用的是其他的插值比如克里金插值,那么还是会有效果的。
建模时需要注意的问题有:
a . 设定环境的工作空间,指定当前的工作空间为之前我们建立的Scratch文件夹。点击ArcMap 地理处理——环境
请将模型中每个工具的输出参数位置设置为 %scratchworkspace%\输出文件名 的格式。需要注意的是,如果输出结果是要素类,则输出文件名需要加上 .shp 后缀,例如 Contour.shp。
c. 在设定模型参数时需要注意,并非所有参数类型都可以作为GP服务的输入或输出参数。在上述模型中,带有P表示的是模型参数。更多详细信息请参考:
请访问以下链接获取有关ArcGIS Desktop 10.0的帮助文档:http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/002v00000004000000/
在这里,我们将PollutionPoints要素类作为模型参数使用。然而,需要注意的是,在输入模型参数时,我们需要将其改为要素集,因为GP服务的输入参数不支持要素类。
d. 需要根据特定属性值进行插值,并绘制等值线。
关于等直面的模型比较简单:
这里没有进行任何修改,最终输出的结果是一个矩形的格栅图像。如果想要得到非矩形(例如与等值线一致的椭圆形或地图一致),需要进一步操作,可以使用掩膜工具进行提取。在这里不做演示。
一旦我们成功构建了GP服务的模型,我们就完成了这一重要步骤。现在,让我们继续探讨如何有效地发布GP服务。
3. 发布GP服务
一旦我们完成了模型的建立,接下来就需要发布我们的模型,即GP服务。对于等值线模型,只需右键点击我们创建的绘制等值线工具箱,并直接进行发布即可。而绘制等值面则稍微复杂一些,需要将其发布为结果地图服务。现在让我来介绍一下如何发布结果地图服务:
I. 和绘制等值线的过程一样,需要建立如上的等直面模型,以及相应的文件夹结构,设置环境工作空间,以及模型参数。
II. 新建一个地图文档,该地图文档将在之后被发布。
III.运行我们的等值面模型,绘制生成栅格的数据图像
在这里,我们可以利用一个图层作为要素的来源,也可以手动添加,并输入PolutionC的值,从而生成栅格数据图像。
说明:默认生成的栅格图像以分类方式展示,可能会得到不太美观的图像。在这里,我们可以通过右键点击TOC中生成的新栅格图层(即运行模型得到的结果)来查看RasterData。
点击属性,选择符号系统。可以更改渲染样式,这里我们可以选择拉伸方式来实现平滑渐变的渲染效果。
模型运行成功之后,我们需要手动的将绘制等值面的模型拖到TOC中,这时会自动的生成上一次运行模型时生成的结果,同样默认生成的栅格不是很好看,需要我们自己手动设置其符号系统。
TOC中的最终面板如下列出:
请注意,这里需要留意图层的值。例如,上述的值范围是-0.115785到66.2464。因此,该工具只能渲染在这个范围内的属性值。如果要素的浓度属性值超过了66.2464,则会按照最大值的颜色进行渲染。同样地,如果要素的浓度属性值小于-0.115785,则会按照最小值的颜色进行渲染。
一旦以上步骤全部完成,我们将保存地图文档,并随即发布该文档。
请右键刚才保存的地图文档,然后选择“发布到ArcGIS Server”,如下图所示:
在这里,默认会选择Geoprocessing,以表示地图文档中包含一个工具图层。点击下一步,完成发布即可。这样就成功发布了一个结果地图服务。
一般来说,以上过程成功之后,我么的GIS服务是不会出现什么问题的,但也有可能因为我们各自计算机的配置原因,无法使用GIS服务,所以我们最好在ArcMap中验证一下是否成功,具体的做法是:
点击我们的工具箱,然后右键点击ArcToolBox,选择添加工具箱。接下来,请按照下图所示的步骤浏览到GIS服务器,并打开它。在打开的界面上,您会发现我们刚刚发布的GP服务:一个用于绘制等值线的工具箱和一个用于绘制等直面的工具箱。
点击打开后,该工具将被添加到我们的ArcMap工具箱中。然后,您只需像运行我们自带的工具一样运行它。如果您获得了正确的结果,则说明GP服务发布成功;如果遇到问题,请按照上述说明进行检查。在此不再详述。
至此,关于GP服务的搭建过程已经圆满完成。
下一篇将讲述如何使用Silverlight 调用这里的等值线服务和插值服务。
版权归属所有,未经许可请勿转载。
本文转载自https://blog.51cto.com/potential/1402583
还木有评论哦,快来抢沙发吧~