日韩精品中文字幕一区二区-日韩精品中文字幕一区-日韩精品中文字幕视频-日韩精品在线一区二区三区-第一页在线-第一福利视频

當前位置:首頁文章首頁 IT學院 IT技術

Bing Maps開發擴展:Oracle Spatial的空間數據渲染

作者:  來源:  發布時間:2012-2-16 15:58:20  點擊:

  Oracle Spatial的空間數據應用和微軟SQL Server 2008的大同小異,SQL Server 2008提供了基于SQLCLR的編程支持,Oracle Spatial暫時還沒有比較完善的組件支持。在實際開發應用中我們可以選擇折中的解決方案,比如將空間數據讀取為通用的空間數據表達格式(如:WKT),利用開源的WKT讀取組件便可將WKT數據解析為對應的空間數據坐標點或坐標集合。

  下面以一個實際的案例來介紹如何讀取Oracle Spatial數據為WKT,并通過WKT組件解析數據,最終在Bing Maps中進行渲染,F要實現將數據庫中地市表配置的全國地市數據中四川省的數據讀取出來在地圖中進行渲染,Oracle Spatial的sdo_geometry數據類型則可以直接使用函數(get_wkt())進行轉換為clob數據類型數據。

  select t.areacode,t.areaname, (t.area.get_wkt()) wkt from areainfo t where areacode like '8623%'

 

  為了方便客戶端的使用,服務端可以通過WCF服務封裝數據為數組返回,以下為地市實體對象數據結構和WCF服務的定義。

  namespace OracleSpatial.DataService.Models

  {

   [DataContract]

   public class AreaInfo

   {

   [DataMember]

   public string AreaCode { get; set; }

   [DataMember]

   public string AreaName { get; set; }

   [DataMember]

   public string WKT { get; set; }

   }

  }

  namespace OracleSpatial.DataService

  {

   [ServiceContract]

   public interface IGeometryService

   {

   [OperationContract]

   List GetAreaInfo();

   }

  }

  Bing Maps的Silverlight客戶端調用WCF服務以獲取數據庫中的數據,這里就不做詳細介紹。在這里需要特別介紹的是幾個開源應用:

  1、SharpMap開源的GeoAPI.

  2、NetTopologySuite.

  這兩個開源庫分別定義好了不同GIS坐標系的空間標準,以及基于地理空間的空間對象、空間計算和空間分析接口,在應用開發中可以非常方便的完成空間數據的讀寫、驗證、計算和分析功能。本文使用到了WKT讀取組件(WKTReader),可以實現將WKT格式的字符串解析為符合GIS坐標系標準的通用空間對象(Geometry),此空間對象中就包含了完整的WKT數據的描述,如WKT所表示的坐標點,坐標點集合,內部坐標點,空間面積等等。

  public MainPage()

  {

   InitializeComponent();

   this.Loaded += (sender, e) =>

   {

   LoadChinaMap();

   GeometryServiceClient service = new GeometryServiceClient();

   service.GetAreaInfoCompleted += service_GetAreaInfoCompleted;

   service.GetAreaInfoAsync();

   };

  }

  private void service_GetAreaInfoCompleted(object sender, GetAreaInfoCompletedEventArgs e)

  {

   if (e.Error == null)

   {

   ObservableCollection result = e.Result;

   WKTReader reader = reader = new WKTReader();

   IGeometry geometry = reader.Read(result[0].WKT);

   }

  }

  

   通過WKTReader將WKT格式的空間數據解析為IGeometry接口的空間對象,就可以非常方便的獲取WKT空間數據中的各種坐標值。如果上面所獲取到的數據,我們就可以通過繪制多邊形以及通過自定義標注將數據渲染在地圖中。

  private void service_GetAreaInfoCompleted(object sender, GetAreaInfoCompletedEventArgs e)

  {

   if (e.Error == null)

   {

   ObservableCollection result = e.Result;

   WKTReader reader = null;

   foreach (var item in result)

   {

   reader = new WKTReader();

   IGeometry geometry = reader.Read(item.WKT);

   //邊界

   MapPolygon line = new MapPolygon();

   line.Locations = CoordinateConvertor.CoordinatesToLocationCollection(geometry.Coordinates);

   line.Fill = new SolidColorBrush(Colors.Gray);

   line.BorderBrush = new SolidColorBrush(Colors.Green);

   line.BorderThickness = new Thickness(2);

   line.MouseEnter += new MouseEventHandler(line_MouseEnter);

   line.MouseLeave += new MouseEventHandler(line_MouseLeave);

   this.mlayer.Children.Add(line);

   //名稱標注

   this.mlayer.AddChild(new PointControl(item.AreaName),

   new Microsoft.Maps.MapControl.Location(geometry.InteriorPoint.Y, geometry.InteriorPoint.X));

   }

   }

  }

  private void line_MouseLeave(object sender, MouseEventArgs e)

  {

   MapPolygon mp = sender as MapPolygon;

   mp.Fill = new SolidColorBrush(Colors.Gray);

 

  }

  private void line_MouseEnter(object sender, MouseEventArgs e)

  {

   MapPolygon mp = sender as MapPolygon;

   mp.Fill = new SolidColorBrush(Colors.Yellow);

  }

  

相關軟件

相關文章

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: 黄色免费视频| 我是你舅舅| 椿十三郎| 五年级字谜| 秀人网嫩模私拍大尺度| 央视7套| 法医电视剧大全免费| 香谱七十二图解| 美女写真视频网站| 体现汉字的歇后语| xiuren秀人网秀人集秀人美女免费| 神医喜来乐演员表| 散文诗二首批注| 成人免费黄色电影| 白宝山末路1997电视剧免费版| 大场久美子| 大班安全教案《教室里不乱跑》 | 寡妇激情| 三人行菲律宾| 东方卫视在线观看| 雾里简谱| 白色噪音| 老阿姨电视剧免费观看| 漂亮主妇电视剧| 包公决战潘金莲| 陈烨个人资料简介| 林采薇| 本能 电影| 新一剪梅| 宁波电视台| 舞法天女绚彩归来| 塞下曲景然伶儿| 湖北经视频道| 练习曲电影| 吕建中| 好好说话电视剧免费观看完整版40集 | 珠江电视台直播 珠江频道| 美国要塞1986| 飞船奇遇记| 西街少年 电视剧| 美女被吃|