ArcGIS Runtime 本地API介绍(六)

0
分享 2014-06-08
本例子使用GPK实现一个缓冲区分析,在地图上单击,以该点作为基点然后根据输入的缓冲距离做缓冲区分析,核心代码如下:

namespace ArcGISWpfLgp
{

public partial class MainWindow : Window
{
Geoprocessor pGPTask;

public MainWindow()
{
InitializeComponent();

//授权
ArcGISRuntime.SetLicense("许可");
//初始化服务器
LocalServer.Initialize();


//获取本地GP服务
LocalGeoprocessingService.GetServiceAsync(@"SimpleBuffer.gpk",GPServiceType.Execute, (gpService) =>
{
if (gpService.Error !=null)
{
MessageBox.Show(gpService.Error.Message);
}
//创建Geoprocessor
pGPTask = new Geoprocessor(gpService.UrlGeoprocessingService +"/" +
"SimpleBuffer");
MyMap.MouseClick +=MyMap_MouseClick;
});
}

private void MyMap_MouseClick(objectsender, ESRI.ArcGIS.Client.Map.MouseEventArgse)
{
pGPTask.CancelAsync();
GraphicsLayer pGraphicsLayer = MyMap.Layers["MyGraphicsLayer"]as GraphicsLayer;
pGraphicsLayer.ClearGraphics();
e.MapPoint.SpatialReference =MyMap.SpatialReference;
Graphic graphic = new ESRI.ArcGIS.Client.Graphic()
{
Geometry = e.MapPoint,
Symbol = LayoutRoot.Resources["DefaultClickSymbol"]as ESRI.ArcGIS.Client.Symbols.Symbol
};
graphic.SetZIndex(1);
pGraphicsLayer.Graphics.Add(graphic);

//构造GP的参数,2个,一个表示FeatureSet,一个表示缓冲距离
List<GPParameter>pGParams = newList<GPParameter>();

double pDist = System.Convert.ToDouble(txtBoxDist.Text);

Graphic pGraphic = new Graphic { Geometry = e.MapPoint };

FeatureSet pFeatureSet = new FeatureSet(new List<Graphic> { pGraphic });

pGParams.Add(newGPFeatureRecordSetLayer("InputFeatures",pFeatureSet));

pGParams.Add(newGPLinearUnit("Distance",esriUnits.esriKilometers,pDist));

pGPTask.ExecuteCompleted += (s,e1) =>
{
GPExecuteResultsresults = e1.Results;
GPFeatureRecordSetLayerrs = results.OutParameters[0]as GPFeatureRecordSetLayer;
Graphic graphicBuff = new ESRI.ArcGIS.Client.Graphic()
{
Geometry =rs.FeatureSet.Features[0].Geometry,
Symbol = LayoutRoot.Resources["ResultsFillSymbol"]as ESRI.ArcGIS.Client.Symbols.Symbol
};
pGraphicsLayer.Graphics.Add(graphicBuff);
};
pGPTask.Failed += (s2,e2) =>
{
MessageBox.Show(e2.Error.Message);
};
pGPTask.ExecuteAsync(pGParams);
}

}
}


文章来源:http://blog.csdn.net/arcgis_all/article/details/8215140

0 个评论

要回复文章请先登录注册