ArcGIS 10.1 让GP服务变得更简单

原文链接:http://blog.csdn.net/arcgis_all/article/details/8202588

我们知道ArcGIS 以强大的空间分析而获得GISER的口碑(不仅仅如此),在桌面软件中已经有了800多个空间分析工具,并且这些空间分析工具可以根据我们的业务需要而组合使用,使得我们在工作中能够流程化的处理问题,为我们的工作带来了方便。

      ArcGIS Server作为一个企业级的GIS平台,能够将我们的GIS资源作为服务发布出去,供客户端使用,在ArcGIS Server中有一种服务类型我们称之为地处理服务或者GP服务,该服务简单的说就是可以在Web端使用ArcGIS 提供的空间分析,而这些分析的能力是和桌面中的一样的。使用GP可以让我们用很少的代码就可以完成一个复杂的操作。

 

    在Web使用这些GP工具和桌面端使用这些工具,在功能上是一样的,但是在数据类型上就有限制了,比如我们在桌面端可以将要素类作为参数,但是Web端就不行,所以在10或者之前的版本中,我们发布的GP服务不能正常运行很多是因为参数类型导致,在这里我将这些参数类型对比下:

 

 

 

输入参数数据类型

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素集

记录集

要素类

否(但可通过要素集数据类型间接支持要素类输入。)

否(但可通过记录集数据类型间接支持表输入。)

栅格

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

文件(如.zip 或 .xml 文件)

图层(任何类型的图层;如,要素图层、栅格图层和网络分析图层)

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

 

 

输出参数:

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素类

要素图层

栅格

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

栅格图层

地理数据集(除要素类或栅格外)

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否(含有表数据类型作为输出参数的服务不会显示在可用任务列表中。)

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

是(在结果 窗口的服务结果中查看)

是(在“任务结果”窗口中查看)

文件

        在10.1中发布GP服务已经不能像以前那样,建立一个模型然后右键share,地理处理服务的发布将由运行成功的地理处理工具结果产生。

创建一个地理处理的模型(计算缓冲区分析),模型如下图:

 

 

 

 

填写模型参数,细心的读者会发现这里有所变化(发现了没?):

 

模型运行结果:

填写工具的描述信息,如果不填写,那么发布服务的时候也会出错:

发布服务,在运行后的模型中,右键:

 

 

填写一些描述信息,如下,然后发布:

 

 

 

发布成功后会在Manager中看到。

 

在Silverlight中使用该服务,核心代码如下:

 

     

[csharp]  view plain copy
  1.  private void _map_MouseClick(object sender, Map.MouseEventArgs e)  
  2.       {  
  3.           FeatureSet pFeature = new FeatureSet();  
  4.   
  5.           Graphic pGraphic = new Graphic();  
  6.   
  7.           pGraphic.Geometry = e.MapPoint;  
  8.           pFeature.Features.Add(pGraphic);  
  9.   
  10.   
  11.           pGraphicsLayer2.Graphics.Add(pGraphic);  
  12.   
  13.           List<GPParameter> parameters = new List<GPParameter>();  
  14.           parameters.Add(new GPFeatureRecordSetLayer("Input_Features", e.MapPoint));  
  15.           parameters.Add(new GPDouble("Distance__value_or_field_", 1000));  
  16.   
  17.           tStart2 = new TimeSpan(DateTime.Now.Ticks);  
  18.           pTask2.ExecuteAsync(parameters);  
  19.   
  20.       }  
  21.   
  22.   
  23.   
  24.   
  25.   
  26. Task2 = new Geoprocessor();  
  27.           initGP(pTask2, "http://localhost:6080/arcgis/rest/services/MyBuff/GPServer/MyBuff");  
  28.   
  29.   
  30.   
  31.   
  32.   
  33. void initGP(Geoprocessor pGpro,string pUrl)  
  34.       {  
  35.   
  36.   
  37.   
  38.           pGpro.Url = pUrl;  
  39.   
  40.   
  41.   
  42.           pGpro.ExecuteCompleted += new System.EventHandler<GPExecuteCompleteEventArgs>(pTask_ExecuteCompleted);  
  43.   
  44.           pGpro.Failed += new System.EventHandler<TaskFailedEventArgs>(pTask_Failed);  
  45.   
  46.          // pGpro.OutputSpatialReference = MyMap2.SpatialReference;  
  47.       }  
  48.   
  49.   
  50.   
  51.   
  52.   
  53.   
  54.   
  55.   
  56.   
  57.   
  58.   
  59. void pTask_Failed(object sender, TaskFailedEventArgs e)  
  60.       {  
  61.           return;  
  62.       }  
  63.   
  64.       void pTask_ExecuteCompleted(object sender, GPExecuteCompleteEventArgs e)  
  65.       {  
  66.                          foreach (GPParameter gpParameter in e.Results.OutParameters)  
  67.               {  
  68.                   if (gpParameter is GPFeatureRecordSetLayer)  
  69.                   {  
  70.                       GPFeatureRecordSetLayer gpLayer = gpParameter as GPFeatureRecordSetLayer;  
  71.                       foreach (Graphic graphic in gpLayer.FeatureSet.Features)  
  72.                       {  
  73.                           graphic.Symbol = Layout.Resources["ResultsFillSymbol"as Symbol;  
  74.                           pGraphicsLayer2.Graphics.Add(graphic);  
  75.   
  76.                            
  77.                       }  
  78.                   }  
  79.               }  
  80.   
  81.                                   
  82.       }  


 

 

 

运行结果:

 

 

 

  总结:ArcGIS 10.1中GP的发布方式发生了变化,但是这种变化给我们带来了方便,我们可以将任何一个运行成功的工具进行发布,这样可以避免我们在输入和输出参数的时候发生困扰,只有GP运行成功才能发布,这也为我们模型的准确性做了保证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值