Welcome 微信登录

首页 / 网页编程 / ASP.NET / 基于SharpMap扩展程序开发实例

基于SharpMap扩展程序开发实例2011-10-31 博客园 jackey zhangSharpMap是基于.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();        }