基于.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支持。
解压下载的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支持。
相关文章推荐
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(二):源代码总体结构分析
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十三):基于SharpMap的Windows程序界面(C/S架构)
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(五):WebGIS原理分析及思考
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十一):SharpMap影像准备——基于ERDAS的GEOTIFF图像生产过程
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(一):第一次亲密接触
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十二):SharpMap WMS服务及其Openlayers访问
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(八):怎样对SharpMap进行扩展开发——从许可角度来谈
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(三):地图渲染分析
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(七):GDAL C#接口库的编译与SharpMap(Change Set 21021)对影像的支持研究
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(六):SharpMap的功能扩展之路
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十一):SharpMap影像准备——基于ERDAS的GEOTIFF图像生产过程
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(九):SharpMap中Styles和Geometries名称空间下有关类的分析
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(三):地图渲染分析
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十):开源空间信息软件体系与技术概述
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十四):ASP.NET2.0实现无刷新客户端回调的Callback机制及例子代码下载
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十二):SharpMap WMS服务及其Openlayers访问
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(六):SharpMap的功能扩展之路
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(一):第一次亲密接触
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(八):怎样对SharpMap进行扩展开发——从许可角度来谈
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(九):SharpMap中Styles和Geometries名称空间下有关类的分析