arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布
来源:互联网 发布:个人视频网站源码 编辑:程序博客网 时间:2024/04/29 17:27
缓冲区分析的需求:有时候我们需要在地图某个点上,画出方圆5公里的区域,目的是查看该点所影响的地区。那么直接先看看效果:
源码:
<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,10,0" >
<Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" >
<Rectangle.Effect>
<DropShadowEffect/>
</Rectangle.Effect>
</Rectangle>
<Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,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提供的各种服务:
服务类型
所需的 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,添加服务
2、类型选择Geometry service,名称必须用"Geometry"命名。
然后下一步完成,Geometry service发布就ok了。- arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布
- arcgis api for js入门开发系列十二 GP服务 实现缓冲区及运算分析(含源代码)
- arcgis api for silverlight开发系列之四:实现地图提示MapTips及QueryTask揭秘
- arcgis api for silverlight开发系列之三:定义坐标系
- ArcGIS API for iOS开发教程(七)Geometry Service
- ArcGIS API for Silverlight 编辑Geometry
- silverlight调用Geometry服务实现缓冲区
- arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结
- arcgis api for js入门开发系列十七 GP服务四GP服务发布
- arcgis api for js入门开发系列十六 GP服务三发布前的准备
- arcgis api for silverlight开发系列之五:QueryTask,FindTask,IdentifyTask区别
- arcgis api for flex 开发入门(七)Geometry service 的使用
- ArcGIS API for Silverlight实现地形坡度在线分析
- 使用ArcGIS API for Silverlight实现地形坡度在线分析
- ArcGIS API for JavaScript开发笔记(一)GP模型创建及服务发布
- ArcGIS API for iOS开发教程六 使用GP服务
- 缓冲区分析—ArcGIS API for JavaScript
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- 对象池化技术 org.apache.commons.pool
- android helloworld
- 公开课学习笔记-[哈佛]计算机科学CS50(八)
- hdu 2616 Kill the monster
- 51IT最全的自动化测试工具QTP资料
- arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布
- 详细透彻的分析DM9000网卡驱动程序(1)
- PROC系列之---/proc/loadavg、/proc/pid/stat、/proc/pid/statm等
- Java中参数传递是值传递,还是引用传递的一次深究
- android eclipse 常用快捷键
- log4j详解与实战
- 构建 MySQL 数据库服务器(云安装mysql)(转)
- 母版页,主题,外观
- Java----集合类