您的位置:首页 > 产品设计 > 产品经理

基于.NET 2.0的GIS开源项目SharpMap分析手记(二):源代码总体结构分析

2006-12-05 19:44 761 查看
通过前面的“第一次亲密接触”,我们对SharpMap的功能已经有一个总体的了解,现在我们再来分析SharpMap的源代码总体结构。
解压下载的0.9版源代码,有两个文件夹:SharpMap和SharpMap.UI,如图1所示。


图1 SharpMap源代码结构

其中SharpMap.UI是用户界面相关命名空间,如窗体Forms、Ajax等。SharpMap工程是主体,包括数据转换、坐标、数据、几何体、图层等命名空间,下面分别介绍:
SharpMap命名空间,包括Map类,通过创建Map对象的实例来生成地图。Map对象由包含Layer对象组成Layers集合,通过GetMap方法来Render地图。
Converts命名空间,提供数据转换服务。
CoordinateSystems命名空间,提供坐标系统及其投影和转换。
Data命名空间,提供对各种数据支持,现在包括MSSQL和ShapeFile支持。
Providers名称空间,包括了IProvider接口和Shape文件、PostGIS数据的读取实现。该名称空间为SharpMap提供数据读(写)支持,通过面向接口的设计,可以比较容易的增加各类数据格式。
Geometries命名空间,包括了SharpMap要使用到的各种几何类及其接口类,例如点、线、面等类。是SharpMap的基础之一,所有几何对象都继承自Geometry这个抽象类,其中定义了几何对象应该具备的公共操作,例如大小、ID、外接矩阵、几何运算等等。
Layers命名空间,提供各种图层支持,包括注记层、矢量层等。Layer是一个抽象类,实现了ILayer接口,Layer目前有3个子类,分别是VectorLayer、LabelLayer和WmsLayer,分别代3种不同数据类型的图层。
Rendering命名空间,目前包括矢量渲染器类和几个专题图渲染器类,该类可以将几何对象根据其Style设置渲染为一个System.Drawing.Graphics对象。
Styles命名空间,该命名空间主要提供了图层的样式设置类,例如线样式、点样式、填充样式等。
Utilities名称空间包括Algorithms类(目前仅实现了一个方法);Providers类,是Provider的一个Helper,应用了反射机制;Surrogates主要用于系统的Pen和Brush的序列化;Transform提供了从图片坐标到地理坐标的互相变换,也即桌面GIS的二次开发中经常使用的屏幕坐标和地理坐标的转换,主要用于地图的渲染、交互操作等。
Utilities.SpatialIndexing用于对象的空间索引, Web名称空间实现了HttpHandler和Caching类,用于网络环境。
Web命名空间,包括对网络支持如HTTP等,Web.Wms提供对WMS的支持。
SharpMap.UI工程包括:
Forms名称空间,包含MapImage控件,一个简单的User Control(用户控件),封装了Map类,用于Windows Form编程。
Web.UI.Ajax提供对Ajax支持。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐