ArcGIS Runtime 本地API介绍(六)

本例子使用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(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)

        {

            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 = new List<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(new GPFeatureRecordSetLayer("InputFeatures", pFeatureSet));

 

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

 

            pGPTask.ExecuteCompleted += (s, e1) =>

            {

                GPExecuteResults results = e1.Results;

                GPFeatureRecordSetLayer rs = 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);

        }

 

    }

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值