微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ArcGIS API for Silverlight 调用GP服务加载等值线图层

二篇、Silverlight客户端调用GP服务

         利用ArcGIS API for Silverlight实现GP服务调用,这里的雨量数据是通过一个WebService获取而来,主要信息是雨量站点的经纬度坐标值和某个时间段内的降雨量值三个主要字段。

以下是核心代码部分:

 

[csharp]  view plain copy
  1. <UserControl  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
  5.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
  6.     xmlns:esri="http://schemas.esri.com/arcgis/client/2009"  
  7.     xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"  
  8.     xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="TestDZX.MainPage2"  
  9.     mc:Ignorable="d"  
  10.     d:DesignHeight="300" d:DesignWidth="400">  
  11.     <controlsToolkit:BusyIndicator x:Name="busyIndicator" BusyContent="正在加载,请稍等..." IsBusy="True">  
  12.         <Grid x:Name="LayoutRoot" Background="White">            <esri:Map x:Name="myMap"  IslogoVisible="False" ZoomDuration="0:00:00" PanDuration="0:00:00"  
  13.                   Extent="117.647738815324,29.4704217183843,118.446182957997,30.4124245048916">  
  14.                 <esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://localhost/arcgis/rest/services/HSDQ/MapServer/"/>  
  15.                 <!--等值线和等直面图层-->  
  16.                 <esri:Graphicslayer ID="GraphicsDZX"/>  
  17.             </esri:Map>  
  18.             <Grid x:Name="gridMain" HorizontalAlignment="Left" Width="215" Margin="1,0">  
  19.                 <Grid.ColumnDeFinitions>  
  20.                     <ColumnDeFinition Width="200" x:Name="gridSub2" />  
  21.                     <ColumnDeFinition Width="15" x:Name="gridSub1"/>  
  22.                 </Grid.ColumnDeFinitions>  
  23.                 <Grid  Grid.Column="1" Background="#FFD2D4D1" Width="15" Margin="-1,0" d:LayoutOverrides="HorizontalMargin">  
  24.                     <Border BorderBrush="#FFA5C6E5" BorderThickness="2" Width="15">  
  25.                         <Image x:Name="imgExpandOrCollapsed" Margin="0,136,117" Source="Images/ss.png" Stretch="Fill" Height="45" MouseLeftButtonDown="imgExpandOrCollapsed_MouseLeftButtonDown" MouseLeftButtonUp="imgExpandOrCollapsed_MouseLeftButtonUp" Cursor="Hand" ToolTipService.ToolTip="收缩/展开"/>  
  26.                     </Border>  
  27.                 </Grid>  
  28.                 <Grid  Width="200" HorizontalAlignment="Left" Background="#FFD2D4D1">  
  29.                     <Grid.RowDeFinitions>  
  30.                         <RowDeFinition Height="0.095*"/>  
  31.                         <RowDeFinition Height="0.905*"/>  
  32.                     </Grid.RowDeFinitions>  
  33.                     <StackPanel Margin="0" Grid.Row="1" VerticalAlignment="Top">  
  34.                         <Grid Height="40" d:LayoutOverrides="Height, VerticalMargin" VerticalAlignment="Top">  
  35.                             <sdk:DatePicker x:Name="dpStart" Margin="38,6,65,6"/>  
  36.                             <ComboBox x:Name="cbStart" HorizontalAlignment="Right" Margin="0,16,6" Width="49"/>  
  37.                             <TextBlock HorizontalAlignment="Left" Margin="3,0" textwrapping="Wrap" Text="起始:" Width="40" FontSize="13.333" FontFamily="Microsoft YaHei" VerticalAlignment="Center"/>  
  38.                             <TextBlock textwrapping="Wrap" Text="时" FontSize="13.333" FontFamily="Microsoft YaHei" VerticalAlignment="Center" HorizontalAlignment="Right" Width="15" Margin="0,1,0"/>  
  39.                         </Grid>  
  40. >  
  41.                             <sdk:DatePicker x:Name="dpEnd" Margin="38,248); line-height:18px">                             <ComboBox x:Name="cbEnd" HorizontalAlignment="Right" Margin="0,0" textwrapping="Wrap" Text="截至:" Width="40" FontSize="13.333" FontFamily="Microsoft YaHei" VerticalAlignment="Center"/>  
  42.                             <ComboBox x:Name="cbRainGrade" Margin="68,248); line-height:18px">                             <TextBlock HorizontalAlignment="Left" Margin="4,0" textwrapping="Wrap" Text="雨量级别:" Width="69" FontSize="13.333" FontFamily="Microsoft YaHei" VerticalAlignment="Center"/>  
  43.                             <RadioButton x:Name="rb1" Content="稀" Margin="70,11,67,1" FontSize="13.333" FontFamily="Microsoft YaHei" GroupName="rbGroup" IsChecked="True" Cursor="Hand" Click="rb_Click"/>  
  44.  textwrapping="Wrap" Text="过滤级:" Width="55" FontSize="13.333" FontFamily="Microsoft YaHei" VerticalAlignment="Center"/>  
  45.                             <RadioButton x:Name="rb2" Content="密" Margin="0,12,8,0" FontSize="13.333" FontFamily="Microsoft YaHei" HorizontalAlignment="Right" Width="55" GroupName="rbGroup" Cursor="Hand" Click="rb_Click"/>  
  46.                         </Grid>  
  47.                         <Grid Height="40" d:LayoutOverrides="Height, VerticalMargin">  
  48.                             <Button x:Name="btnAnalysis" Content="等值线分析" Margin="64,63,0" VerticalAlignment="Center" Cursor="Hand" FontSize="13.333" FontFamily="Microsoft YaHei" d:LayoutOverrides="Width" Click="btnAnalysis_Click"/>  
  49.                     </StackPanel>  
  50.                     <Border BorderBrush="#FF459BFB" BorderThickness="2" Background="#FF449DFF" Height="30" VerticalAlignment="Top">  
  51.                         <TextBlock HorizontalAlignment="Center" Margin="0" textwrapping="Wrap" Text="专 题 分 析" Width="82" FontSize="16" FontFamily="Microsoft YaHei" VerticalAlignment="Center" Foreground="White"/>  
  52.                     </Border>  
  53.                 </Grid>  
  54.             </Grid>  
  55.         </Grid>  
  56.     </controlsToolkit:BusyIndicator>  
  57. </UserControl>  
  58.   
  59.   
  60.    
  61. using System;  
  62. using System.Collections.Generic;  
  63. using System.Linq;  
  64. @H_502_906@using System.Net;  
  65. using System.Windows;  
  66. @H_502_906@using System.Windows.Controls;  
  67. using System.Windows.Documents;  
  68. @H_502_906@using System.Windows.Input;  
  69. using System.Windows.Media;  
  70. @H_502_906@using System.Windows.Media.Animation;  
  71. using System.Windows.Shapes;using ESRI.ArcGIS.Client;  
  72. @H_502_906@using ESRI.ArcGIS.Client.Geometry;  
  73. using ESRI.ArcGIS.Client.Tasks;  
  74. @H_502_906@using System.Net.browser;  
  75. using ESRI.ArcGIS.Client.Symbols;  
  76. @H_502_906@using TestDZX.ServiceReference1;  
  77. using System.Collections.ObjectModel;  
  78. @H_502_906@using System.Collections;  
  79. using System.Windows.Media.Imaging;  
  80. @H_502_906@using System.Threading;  
  81. using System.Globalization;  
  82. @H_502_906@using Syit.CommonClass;namespace TestDZX  
  83. {  
  84.     public partial class MainPage2 : UserControl  
  85.     {  
  86.         /******************GP参数* 2012-08-29***********************/        private Geoprocessor _ContourTask; //等值线GP  
  87.         public struct EvaluationPointStruct  
  88.         {  
  89.             double Latitute; //纬度  
  90.             double Longitute; //经度  
  91. double YL; //雨量  
  92.         };  
  93. public EvaluationPointStruct[] evaluatePoints;  
  94.         private FeatureSet featureSet;//作为GP输入参数的要素集        ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator();        public int Contour_interval = 5; //认是5表示稀,1表示密  
  95.         /*********************************************************/        public MainPage2()  
  96.             InitializeComponent();  
  97.             //设置日期格式  
  98.             Thread.CurrentThread.CurrentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();  
  99.             Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";  
  100.             //加载日期  
  101. @H_502_906@this.dpStart.SelectedDate = (DateTime?)DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));  
  102. this.dpEnd.SelectedDate = (DateTime?)DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));  
  103. //加载小时及雨量级别  
  104.             BindElement();  
  105. //初次加载前日八时到现在小时的数据  
  106.             DrawContourUseGP();  
  107.         }        #region 页面上数据绑定        void BindElement()  
  108.         {  
  109. //起始小时绑定  
  110. this.cbStart.Items.Add("00");  
  111. @H_502_906@this.cbStart.Items.Add("01");  
  112. this.cbStart.Items.Add("02");  
  113. @H_502_906@this.cbStart.Items.Add("03");  
  114. this.cbStart.Items.Add("04");  
  115. @H_502_906@this.cbStart.Items.Add("05");  
  116. this.cbStart.Items.Add("06");  
  117. @H_502_906@this.cbStart.Items.Add("07");  
  118. this.cbStart.Items.Add("08");  
  119. @H_502_906@this.cbStart.Items.Add("09");  
  120. this.cbStart.Items.Add("10");  
  121. @H_502_906@this.cbStart.Items.Add("11");  
  122. this.cbStart.Items.Add("12");  
  123. @H_502_906@this.cbStart.Items.Add("13");  
  124. this.cbStart.Items.Add("14");  
  125. @H_502_906@this.cbStart.Items.Add("15");  
  126. this.cbStart.Items.Add("16");  
  127. @H_502_906@this.cbStart.Items.Add("17");  
  128. this.cbStart.Items.Add("18");  
  129. @H_502_906@this.cbStart.Items.Add("19");  
  130. this.cbStart.Items.Add("20");  
  131. @H_502_906@this.cbStart.Items.Add("21");  
  132. this.cbStart.Items.Add("22");  
  133. @H_502_906@this.cbStart.Items.Add("23");  
  134. this.cbStart.Selectedindex = 8;            //结束时间绑定  
  135. @H_502_906@this.cbEnd.Items.Add("00");  
  136. this.cbEnd.Items.Add("01");  
  137. @H_502_906@this.cbEnd.Items.Add("02");  
  138. this.cbEnd.Items.Add("03");  
  139. @H_502_906@this.cbEnd.Items.Add("04");  
  140. this.cbEnd.Items.Add("05");  
  141. @H_502_906@this.cbEnd.Items.Add("06");  
  142. this.cbEnd.Items.Add("07");  
  143. @H_502_906@this.cbEnd.Items.Add("08");  
  144. this.cbEnd.Items.Add("09");  
  145. @H_502_906@this.cbEnd.Items.Add("10");  
  146. this.cbEnd.Items.Add("11");  
  147. @H_502_906@this.cbEnd.Items.Add("12");  
  148. this.cbEnd.Items.Add("13");  
  149. @H_502_906@this.cbEnd.Items.Add("14");  
  150. this.cbEnd.Items.Add("15");  
  151. @H_502_906@this.cbEnd.Items.Add("16");  
  152. this.cbEnd.Items.Add("17");  
  153. @H_502_906@this.cbEnd.Items.Add("18");  
  154. this.cbEnd.Items.Add("19");  
  155. @H_502_906@this.cbEnd.Items.Add("20");  
  156. this.cbEnd.Items.Add("21");  
  157. @H_502_906@this.cbEnd.Items.Add("22");  
  158. this.cbEnd.Items.Add("23");  
  159.             DateTime dt = DateTime.Now;  
  160. string hour = dt.Hour.ToString();  
  161. @H_502_906@if (hour.Length == 1)  
  162.             {  
  163.                 hour = "0" + hour;  
  164.             }  
  165. @H_502_906@switch (hour)  
  166.                 case "00":  
  167.                     this.cbEnd.Selectedindex = 0;  
  168.                     break;  
  169.                 case "01":  
  170. @H_502_906@this.cbEnd.Selectedindex = 1;  
  171. break;  
  172. @H_502_906@case "02":  
  173. this.cbEnd.Selectedindex = 2;  
  174. @H_502_906@case "03":   @H_502_906@this.cbEnd.Selectedindex = 3;  
  175. case "04":  
  176. this.cbEnd.Selectedindex = 4;  
  177. @H_502_906@case "05":   @H_502_906@this.cbEnd.Selectedindex = 5;  
  178. case "06":  
  179. this.cbEnd.Selectedindex = 6;  
  180. @H_502_906@case "07":   @H_502_906@this.cbEnd.Selectedindex = 7;  
  181. case "08":  
  182. this.cbEnd.Selectedindex = 8;  
  183. @H_502_906@case "09":   @H_502_906@this.cbEnd.Selectedindex = 9;  
  184. case "10":  
  185. this.cbEnd.Selectedindex = 10;  
  186. @H_502_906@case "11":   @H_502_906@this.cbEnd.Selectedindex = 11;  
  187. case "12":  
  188. this.cbEnd.Selectedindex = 12;  
  189. @H_502_906@case "13":   @H_502_906@this.cbEnd.Selectedindex = 13;  
  190. case "14":  
  191. this.cbEnd.Selectedindex = 14;  
  192. @H_502_906@case "15":   @H_502_906@this.cbEnd.Selectedindex = 15;  
  193. case "16":  
  194. this.cbEnd.Selectedindex = 16;  
  195. @H_502_906@case "17":   @H_502_906@this.cbEnd.Selectedindex = 17;  
  196. case "18":  
  197. this.cbEnd.Selectedindex = 18;  
  198. @H_502_906@case "19":   @H_502_906@this.cbEnd.Selectedindex = 19;  
  199. case "20":  
  200. this.cbEnd.Selectedindex = 20;  
  201. @H_502_906@case "21":   @H_502_906@this.cbEnd.Selectedindex = 21;  
  202. case "22":  
  203. this.cbEnd.Selectedindex = 22;  
  204. @H_502_906@case "23":   @H_502_906@this.cbEnd.Selectedindex = 23;  
  205.             }  
  206. //绑定雨量级别  
  207. @H_502_906@this.cbRainGrade.Items.Add("A:5,10,25,50,100,200");  
  208. this.cbRainGrade.Items.Add("B:10,200,300");  
  209. @H_502_906@this.cbRainGrade.Items.Add("C:50,300,400,500,600");  
  210. this.cbRainGrade.Items.Add("D:100,600,700");  
  211. @H_502_906@this.cbRainGrade.Items.Add("E:10,20,30,40,60");  
  212. this.cbRainGrade.Selectedindex = 0;  
  213.         }        #endregion        #region 调用GP服务绘制等值线        /// <summary>  
  214. /// 调用GP服务绘制等值线  
  215. /// </summary>  
  216. void DrawContourUseGP()  
  217.             Thread.Sleep(1000);  
  218. //加载之前,显示等待  
  219.             busyIndicator.IsBusy = true;            try  
  220.             {  
  221.                 getXQYJInfoSoapClient client = new getXQYJInfoSoapClient();  
  222.                 //水位数据  
  223.                 client.getSWRainByTimeSpanCompleted += new EventHandler<getSWRainByTimeSpanCompletedEventArgs>(client_getSWRainByTimeSpanCompleted);  
  224.                 client.getSWRainByTimeSpanAsync(DateTime.Parse(this.dpStart.SelectedDate.ToString().Split(' ')[0] + " " + this.cbStart.SelectedItem.ToString() + ":00:00"), DateTime.Parse(this.dpEnd.SelectedDate.ToString().Split(' ')[0] + " " + this.cbEnd.SelectedItem.ToString() + ":00:00"));  
  225. catch (Exception)  
  226.                   
  227.         }         void client_getSWRainByTimeSpanCompleted(object sender, getSWRainByTimeSpanCompletedEventArgs e)  
  228.                 //获取到所有的水文局雨量点  
  229.                 ObservableCollection<RainFall> lists = e.Result;  
  230. int PointsNum = lists.Count;//点的个数  
  231.                 evaluatePoints = new EvaluationPointStruct[PointsNum];  
  232. int index = 0;  
  233. @H_502_906@foreach (RainFall item in lists)  
  234.                 {  
  235. @H_502_906@if (item.YL24 != 0)  
  236.                     {  
  237.                         evaluatePoints[index].Latitute = item.Latitute;  
  238.                         evaluatePoints[index].Longitute = item.Longitute;  
  239.                         evaluatePoints[index].YL = item.YL24;  
  240.                         index++;  
  241.                     }  
  242.                 }  
  243.                 Utility.AddPointToMapLayer(myMap, evaluatePoints, out featureSet);                AccessGPService(featureSet);  
  244.    
  245.         }        private void AccessGPService(FeatureSet featureset)  
  246. try  
  247.                 HttpWebRequest.RegisterPrefix("http://", System.Net.browser.WebRequestCreator.ClientHttp);  
  248.                 _ContourTask = new Geoprocessor("http://localhost/arcgis/rest/services/ContourServicetool/GPServer/Contour");  
  249.                 List<GPParameter> parameters = new List<GPParameter>();  
  250.                 parameters.Add(new GPFeatureRecordSetLayer("Input_point_features", featureset));  
  251.                 parameters.Add(new GPDouble("Contour_interval", Contour_interval));  
  252.                 _ContourTask.UpdateDelay = 5000; // 10s的更新时间  
  253.                 _ContourTask.OutputSpatialReference = myMap.SpatialReference; //设置输出空间参考系  
  254.                 _ContourTask.JobCompleted += new EventHandler<JobInfoEventArgs>(geoprocessorTask_JobCompleted);  
  255.                 _ContourTask.Failed += new EventHandler<TaskFailedEventArgs>(geoprocessorTask_Failed);  
  256.                 _ContourTask.SubmitJobAsync(parameters);  
  257. @H_502_906@catch (Exception)  
  258.         }        /********************************事件处理程序段***************************************/        void geoprocessorTask_JobCompleted(             Geoprocessor gp = sender as Geoprocessor;  
  259. //注册前缀  
  260.             HttpWebRequest.RegisterPrefix("http://", System.Net.browser.WebRequestCreator.ClientHttp);  
  261.             gp.GetResultDataCompleted += new EventHandler<GPParameterEventArgs>(gp_GetResultDataCompleted);  
  262.             gp.GetResultDataAsync(e.JobInfo.JobId, "Contour_Idw_11_Clip_SmoothLi_shp");            //加载完成,隐藏  
  263.             busyIndicator.IsBusy = false;  
  264.         }        void gp_GetResultDataCompleted(arameterEventArgs e)  
  265. //找到显示等值线图层并清空,然后再次加载  
  266.             Graphicslayer layer = myMap.Layers["GraphicsDZX"as Graphicslayer;  
  267.             layer.Cleargraphics();  
  268.             GPFeatureRecordSetLayer gplayer = e.Parameter as GPFeatureRecordSetLayer;  
  269. foreach (Graphic graphic in gplayer.FeatureSet.Features)  
  270. if (IsRainInGrade(graphic.Attributes["CONTOUR"].ToString()))  
  271.                     graphic.Symbol = new ESRI.ArcGIS.Client.Symbols.SimpleLinesymbol()  
  272.                         Style = ESRI.ArcGIS.Client.Symbols.SimpleLinesymbol.Linestyle.solid,  
  273.                         Color = new SolidColorBrush(Colors.Red),  
  274.                         Width = 2  
  275.                     };                    layer.Graphics.Add(graphic); //添加红色的等值线  
  276.                     /****************************************************************************************/                    //标注数值  
  277.                     TextSymbol textSymbol = new TextSymbol()  
  278.                     {  
  279.                         FontFamily = new System.Windows.Media.FontFamily("Microsoft YaHei"),248); line-height:18px">                         Foreground = new System.Windows.Media.solidColorBrush(Color.FromArgb(255, 0, 0)),  
  280.                         FontSize = 12,  
  281.                         Text = graphic.Attributes["CONTOUR"].ToString()  
  282.                     };  
  283. //寻找线段的中心点坐标位置  
  284.                     Graphic graphicText; //封闭曲线在曲线中间显示数值  
  285.                     Graphic graphicStart; //非封闭曲线的起始点  
  286.                     Graphic graphicEnd; //非封闭曲线的终止点  
  287. @H_502_906@if (gplayer.FeatureSet.GeometryType == GeometryType.polyline)  
  288.                         ESRI.ArcGIS.Client.Geometry.polyline pl = gplayer.FeatureSet.Features[index].Geometry as ESRI.ArcGIS.Client.Geometry.polyline;  
  289.                         MapPoint mp = pl.Extent.GetCenter();  
  290.                         if (pl.Paths != null && pl.Paths.Count > 0)  
  291.                         {  
  292.                             ESRI.ArcGIS.Client.Geometry.PointCollection path = pl.Paths[0];  
  293.                             if (path != null && path.Count > 0)  
  294.                             {  
  295.                                 int mid = path.Count / 2;  
  296.                                 mp = path[mid];  
  297. if (path.Count == 2)  
  298.                                 {  
  299.                                     // path里面只有两个点的情况  
  300.                                     double x1 = (path[0] as MapPoint).X;  
  301.                                     double y1 = (path[0] as MapPoint).Y;  
  302. @H_502_906@double x2 = (path[1] double y2 = (path[1]                                      mp.X = x2 + (x1 - x2) / 2;  
  303.                                     mp.Y = y2 + (y1 - y2) / 2;  
  304.                                     //封闭的曲线  
  305.                                     graphicText = new Graphic()  
  306.                                     {  
  307.                                         Geometry = mercator.FromGeographic(mp),248); line-height:18px">                                         Symbol = textSymbol  
  308.                                     };  
  309. //封闭的曲线在中间位置  
  310.                                     layer.Graphics.Add(graphicText); //添加数值  
  311.                                 }  
  312. else  
  313. //起始  
  314.                                     graphicStart = new Graphic()  
  315.                                     {  
  316.                                         Geometry = mercator.FromGeographic(new MapPoint(path[0].X, path[0].Y)),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                                         Symbol = textSymbol  
  317.                                     };  
  318. //结束  
  319.                                     graphicEnd = new MapPoint(path[path.Count - 1].X, path[path.Count - 1].Y)),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                                     layer.Graphics.Add(graphicStart); //标注起始数值  
  320.                                     layer.Graphics.Add(graphicEnd); //标注结束数值  
  321.                                 }  
  322.                             }  
  323.                         }  
  324. //索引自增字段  
  325.                 index++;  
  326. /// <summary>  
  327. /// 地理处理失败,返回失败原因  
  328. /// </summary>  
  329. /// <param name="sender"></param>  
  330. /// <param name="e"></param>  
  331. @H_502_906@void
     geoprocessorTask_Failed(FailedEventArgs e)  
  332.             MessageBox.Show(e.Error.ToString());  
  333. /// 等值线分析按钮  
  334. void btnAnalysis_Click(             DrawContourUseGP();  
  335.         }        #endregion        #region 菜单处理选项及事件        void imgExpandOrCollapsed_MouseLeftButtonDown(stem.Windows.Input.MouseButtonEventArgs e)  
  336.             e.Handled = true;  
  337. @H_502_906@void imgExpandOrCollapsed_MouseLeftButtonUp(stem.Windows.Input.MouseButtonEventArgs e)  
  338. if (this.gridSub2.Width == new GridLength(200, GridUnitType.Pixel))  
  339. //处于展开状态  
  340. this.imgExpandOrCollapsed.Tag = "收缩面板";  
  341.                 Grid.SetColumnSpan(gridMain, 1);  
  342. this.gridSub2.Width = new GridLength(0, GridUnitType.Pixel);  
  343.                 Uri uri = new Uri("Images/zk.png", UriKind.Relative);  
  344.                 BitmapImage image = new BitmapImage(uri);  
  345. @H_502_906@this.imgExpandOrCollapsed.source = image;  
  346. else  
  347. //处于收缩状态  
  348. this.imgExpandOrCollapsed.Tag = "展开面板";  
  349. new Uri("Images/ss.png",248); line-height:18px">         }        /// 过滤级单选按钮的切换事件  
  350. /// <param name="sender"></param>  
  351. /// <param name="e"></param>  
  352. void rb_Click(             RadioButton currRadioButton;  
  353.             currRadioButton = sender as RadioButton;  
  354. if (currRadioButton != null && currRadioButton.IsChecked.Value)  
  355. @H_502_906@if (currRadioButton.Name == "rb1")  
  356.                 {  
  357.                     //首先赋值Contour_interval  
  358.                     Contour_interval = 5;  
  359. //改变值后,重新加载等值线  
  360.                     DrawContourUseGP();  
  361. else if (currRadioButton.Name == "rb2")  
  362. //首先赋值Contour_interval  
  363.                     Contour_interval = 1;  
  364. //改变值后,重新加载等值线  
  365.                     DrawContourUseGP();  
  366.                 }  
  367.         }        #endregion        #region 根据雨量等级进行数据筛选        /// 判断一个降雨值取整数后,是否在雨量级别的数值中  
  368. /// <param name="value"></param>  
  369. /// <returns>在数值中的话,返回true,否则返回false</returns>  
  370. bool IsRainInGrade(string value)  
  371. @H_502_906@bool flag = false;   @H_502_906@string[] list = this.cbRainGrade.SelectedItem.ToString().Trim().Split(':')[1].Split(',');  
  372. foreach (string s in list)  
  373. @H_502_906@if (value.Trim() == s)  
  374.                     flag = return flag;  
  375.         }  
  376.         #endregion  
  377.     }  
  378. }  
  379. 使用到的另一个cs类文件如下Utility.cs文件如下  
  380. using System;  
  381. using System.Net;  
  382. @H_502_906@using System.Windows;  
  383. using System.Windows.Controls;  
  384. @H_502_906@using System.Windows.Documents;  
  385. using System.Windows.Ink;  
  386. @H_502_906@using System.Windows.Shapes;   @H_502_906@using ESRI.ArcGIS.Client.Tasks;  
  387. using ESRI.ArcGIS.Client.Symbols;namespace TestDZX  
  388. {  
  389.     class Utility  
  390.     {  
  391. static void AddPointToMapLayer(ESRI.ArcGIS.Client.Map map, MainPage2.EvaluationPointStruct[] evaluatePoints, out  ESRI.ArcGIS.Client.Tasks.FeatureSet featureset)  
  392.             ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator();            #region 动态添加预测点图层            if (map.Layers["YLPointsLayer"] != null)  
  393.                 map.Layers.Remove(map.Layers["YLPointsLayer"]);  
  394.             Graphicslayer graphicslayer = new Graphicslayer()  
  395.                 ID = "YLPointsLayer",248); line-height:18px">             };  
  396.             map.Layers.Add(graphicslayer);            #endregion            #region 将降雨量点添加到图层中            featureset = new FeatureSet();  
  397. @H_502_906@if (evaluatePoints.Length != 0)  
  398. foreach (MainPage2.EvaluationPointStruct evaluationpoint in evaluatePoints)  
  399.                     Graphic g =                          Geometry = mercator.FromGeographic(new MapPoint(evaluationpoint.Latitute, evaluationpoint.Longitute)),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                         Symbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol()  
  400.                         {  
  401.                             Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Circle,248); line-height:18px">                             Size = 5,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                             Color = new SolidColorBrush(Colors.Red)  
  402.                         }  
  403.                     g.Attributes.Add("YL", evaluationpoint.YL);  
  404.                     featureset.Features.Add(g);  
  405.                     graphicslayer.Graphics.Add(g);  
  406. //动态添加文本  
  407.                     TextSymbol textSymbol = new TextSymbol()  
  408.                         FontFamily =                          Foreground =                          FontSize = 12,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                         Text = evaluationpoint.YL.ToString(),248); line-height:18px">                         OffsetX = 12,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px">                         OffsetY = -5  
  409.                     };                    Graphic graphicText =                          Symbol = textSymbol  
  410.                     };  
  411.                     graphicslayer.Graphics.Add(graphicText);  
  412.             #endregion  
  413.     }  
  414. }  


显示效果如下:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐