程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 基於SharpMap擴展程序開發實例

基於SharpMap擴展程序開發實例

編輯:關於ASP.NET

SharpMap是基於.Net平台開發的GIS地圖渲染組件。在SharpMap的內部設計了基於OGC 標准的幾何模型 構架,設計了IProvider策略模式的多源矢量地圖數據適配器接口,地圖要素渲染的底層主要通過幾何變 換將Geometry轉換為.Net支持的幾何模型如System.Drawing.Point、System.Drawing.Rectangle、 System.Drawing.Drawing2D.GraphicsPath等,然後調用System.Drawing.Graphics類的Draw方法實現地圖 要素的繪制。在SharpMap內部由於沒有設計Symbol的構架,因此,對於需要開發真正的GIS系統,需要封 裝Symbol架構,以便實現專題渲染和地圖符號庫。

SharpMap為我們提供了GIS系統最基本的功能集合,如地圖可視化、空間查詢等功能,因此我們可以利 用SharpMap提供的部分功能為我們在.Net平台上實現地圖可視化提供支持,而不需要借助一些商業組件。 本文就將簡單的介紹一些基於SharpMap實現部分程序的代碼示例,希望對研究開源的朋友有所啟示和幫助 。注:我已經對SharpMap部分Bug做了修改,重新設計了系統的構架,也新開發了一些新的模塊。這些都 將在以後的文章中有所闡述。

基於Jackey.Framework開發Windows應用程序示例

//初始化代碼,請在窗體裝載事件中調用該方法。

private void init()

        {

            //Set buddy control.

            this.tocControl1.MapControl = this.mapControl1;

            //create a vector layer and set the default renderer.

            SharpMap.Layers.VectorLayer layCity=new SharpMap.Layers.VectorLayer

("City");

            layCity.DataSource=new SharpMap.Data.Providers.ShapeFileProvider

(@"D:"ArcGIS"DeveloperKit"SamplesNET"data"GulfOfStLawrence"data"Can_Mjr_Cities.shp");

            ((SharpMap.Rendering.SimpleFeatureRenderer)

layCity.Renderer).Symbol=new SharpMap.Symbols.MarkerSymbol

(SharpMap.Symbols.SymbolType.Circle,Color.Blue,10f);

            //create a vector layer and set the default renderer.

            SharpMap.Layers.VectorLayer layRoad = new 

SharpMap.Layers.VectorLayer("Road");

            layRoad.DataSource = new SharpMap.Data.Providers.ShapeFileProvider

(@"D:"ArcGIS"DeveloperKit"SamplesNET"data"GulfOfStLawrence"data"mjrroads.shp");

            ((SharpMap.Rendering.SimpleFeatureRenderer)layRoad.Renderer).Symbol = 

new SharpMap.Symbols.LineSymbol(Color.Green, 2f);

            //create a vector layer and set the default renderer.

            SharpMap.Layers.VectorLayer layCoasts = new 

SharpMap.Layers.VectorLayer("Coasts");

            layCoasts.DataSource = new SharpMap.Data.Providers.ShapeFileProvider

(@"D:"ArcGIS"DeveloperKit"SamplesNET"data"GulfOfStLawrence"data"Coasts.shp");

            ((SharpMap.Rendering.SimpleFeatureRenderer)layCoasts.Renderer).Symbol 

= new SharpMap.Symbols.FillSymbol(Color.LightCyan);

            //add the layer to the map

            this.mapControl1.Map.Layers.Add(layCoasts);

            this.mapControl1.Map.Layers.Add(layRoad);

            this.mapControl1.Map.Layers.Add(layCity);

            //zoom the map to the full extent

            this.mapControl1.ZoomToFullExtent();

        }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved