ArcGIS 10.1 让GP服务变得更简单

0
分享 2015-04-04
我们知道ArcGIS 以强大的空间分析而获得GISER的口碑(不仅仅如此),在桌面软件中已经有了800多个空间分析工具,并且这些空间分析工具可以根据我们的业务需要而组合使用,使得我们在工作中能够流程化的处理问题,为我们的工作带来了方便。
ArcGIS Server作为一个企业级的GIS平台,能够将我们的GIS资源作为服务发布出去,供客户端使用,在ArcGIS Server中有一种服务类型我们称之为地处理服务或者GP服务,该服务简单的说就是可以在Web端使用ArcGIS 提供的空间分析,而这些分析的能力是和桌面中的一样的。使用GP可以让我们用很少的代码就可以完成一个复杂的操作。

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






输出参数:



在10.1中发布GP服务已经不能像以前那样,建立一个模型然后右键share,地理处理服务的发布将由运行成功的地理处理工具结果产生。
创建一个地理处理的模型(计算缓冲区分析),模型如下图:





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


模型运行结果:

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

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



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




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

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


private void _map_MouseClick(object sender, Map.MouseEventArgs e)
{
FeatureSet pFeature = new FeatureSet();

Graphic pGraphic = new Graphic();

pGraphic.Geometry = e.MapPoint;
pFeature.Features.Add(pGraphic);


pGraphicsLayer2.Graphics.Add(pGraphic);

List<GPParameter> parameters = new List<GPParameter>();
parameters.Add(new GPFeatureRecordSetLayer("Input_Features", e.MapPoint));
parameters.Add(new GPDouble("Distance__value_or_field_", 1000));

tStart2 = new TimeSpan(DateTime.Now.Ticks);
pTask2.ExecuteAsync(parameters);

}





pTask2 = new Geoprocessor();
initGP(pTask2, "http://localhost:6080/arcgis/r ... 6quot;);





void initGP(Geoprocessor pGpro,string pUrl)
{



pGpro.Url = pUrl;



pGpro.ExecuteCompleted += new System.EventHandler<GPExecuteCompleteEventArgs>(pTask_ExecuteCompleted);

pGpro.Failed += new System.EventHandler<TaskFailedEventArgs>(pTask_Failed);

// pGpro.OutputSpatialReference = MyMap2.SpatialReference;
}











void pTask_Failed(object sender, TaskFailedEventArgs e)
{
return;
}

void pTask_ExecuteCompleted(object sender, GPExecuteCompleteEventArgs e)
{
foreach (GPParameter gpParameter in e.Results.OutParameters)
{
if (gpParameter is GPFeatureRecordSetLayer)
{
GPFeatureRecordSetLayer gpLayer = gpParameter as GPFeatureRecordSetLayer;
foreach (Graphic graphic in gpLayer.FeatureSet.Features)
{
graphic.Symbol = Layout.Resources["ResultsFillSymbol"] as Symbol;
pGraphicsLayer2.Graphics.Add(graphic);


}
}
}


}











运行结果:




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

0 个评论

要回复文章请先登录注册