silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

缓冲区分析的需求:有时候我们需要在地图某个点上,画出方圆5公里的区域,目的是查看该点所影响的地区。那么直接先看看效果: 源码:     <Grid x:Name="layoutRoot">                 <Grid.resources>             <esri:PictuREMARKerSymbol x:Key="DefaultClickSymbol" OffsetX

缓冲区分析的需求:有时候我们需要在地图某个点上,画出方圆5公里的区域,目的是查看该点所影响的地区。那么直接先看看效果

arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布

源码:

    <Grid x:Name="LayoutRoot">
       
        <Grid.resources>
            <esri:PictuREMARKerSymbol x:Key="DefaultClickSymbol" OffsetX="11" OffsetY="39" source="/Assets/images/i_pushpin.png" />
            <esri:SimpleFillSymbol x:Key="DefaultBufferSymbol" Fill="#660000FF" BorderBrush="Blue" BorderThickness="2"  />
        </Grid.resources>

        <esri:Map x:Name="Mymap" Extent="-10863035.970,3838021.340,-10744801.344,3887145.299"
                  MouseClick="Mymap_MouseClick" >
         <esri:ArcGISTiledMapserviceLayer ID="StreetMapLayer"
          Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
         <esri:GraphicsLayer ID="MyGraphicsLayer" />
        </esri:Map>       

        <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,0" >
            <Rectangle Fill="#77919191" stroke="Gray"  RadiusX="10" RadiusY="10" Margin="0,5" >
             <Rectangle.Effect>
              <DropShadowEffect/>
             </Rectangle.Effect>
            </Rectangle>
            <Rectangle Fill="#FFFFFFFF" stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,15" />
            <TextBlock x:Name="InformationtextBlock" Text="Click on map to set a LOCATIOn. A buffer of 5 miles will be displayed."
                       Width="200" TextAlignment="Left" Margin="30,20,25,30" textwrapping="Wrap" />
        </Grid>
       
    </Grid>

public BufferPoint()
        {
            InitializeComponent();
        }

        private void Mymap_MouseClick(object sender,ESRI.ArcGIs.CLIENt.Map.MouseEventArgs E)
        {
            GraphicsLayer graphicsLayer = Mymap.Layers["MyGraphicsLayer"] as GraphicsLayer;
            graphicsLayer.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);
            graphicsLayer.Graphics.Add(graphic);

            Geometryservice geometryservice =
              new Geometryservice("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
            geometryservice.bufferCompleted += Geometryservice_BufferCompleted;
            geometryservice.Failed += Geometryservice_Failed;

            // If buffer spatial reference is GCS and unit is linear,geometry service will do geodesic buffering
            BufferParameters bufferParams = new BufferParameters()
            {
                Unit = LinearUnit.StatuteMile,
                BufferSpatialReference = new SpatialReference(4326),
                OutSpatialReference = Mymap.SpatialReference
            };
            bufferParams.Features.Add(graphic);
            bufferParams.Distances.Add(5);

            geometryservice.bufferAsync(bufferParams);
        }

        void Geometryservice_BufferCompleted(object sender,GraphicsEventArgs args)
        {
            IList<Graphic> results = args.Results;
            GraphicsLayer graphicsLayer = Mymap.Layers["MyGraphicsLayer"] as GraphicsLayer;

            foreach (Graphic graphic in results)
            {
                graphic.Symbol = LayoutRoot.resources["DefaultBufferSymbol"] as ESRI.ArcGIs.CLIENt.Symbols.Symbol;
                graphicsLayer.Graphics.Add(graphic);
            }
        }

        private void Geometryservice_Failed(object sender,TaskFailedEventArgs E)
        {
            messageBox.Show("Geometry service error: " + e.Error);
        }

相信大部分代码大家都会明白,只是其中Geometryservice是什么东东,其实它是arcgis server一种服务,用于协助应用程序执行各种几何计算,如缓冲区、简化、面积和长度计算以及投影。简单浏览一下arcgis server提供的各种服务:

@H_502_102@ @H_502_102@

服务类型                             

所需的 GIS 资源

地图服务(Map service)

地图文档(.mxd、.pmf)地图服务定义 (.msd)

地理编码服务(Geocode service)

地址定位器(.loc、.mxs、SDE 批量定位器)

地理数据服务(Geodata service)

数据库连接文件 (.sdE) 个人地理数据库文件地理数据库具有从版本化的地理数据库中引用数据的图层的地图文档

几何服务(Geometry service)

不需要 GIS 资源

地理处理服务(Geoprocessing service)

具有工具图层工具箱 (.tbX) 的地图文档

Globe 服务(Globe service)

Globe 文档(.3dd、.pmf)

影像服务(Image service)

栅格数据引用栅格数据集的图层文件镶嵌数据集已编译的影像服务定义 (.iscdef)

那么如何发布几何服务(Geometry service)呢 ?

其实发布Geometry service是最简单的,因为它不需要任何地图资源。

1、打开ArcCatalog,添加服务

arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布

2、类型选择Geometry service,名称必须用"Geometry"命名。

arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布

然后下一步完成,Geometry service发布就OK了。

大佬总结

以上是大佬教程为你收集整理的arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布全部内容,希望文章能够帮你解决arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。