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

本文深入探讨了SharpMap 0.9版本的源代码结构,包括SharpMap和SharpMap.UI两个主要文件夹。SharpMap提供Map类、数据转换、坐标系统、图层等功能,支持MSSQL和ShapeFile数据。Layers命名空间涵盖多种图层类型,而Rendering和Styles命名空间关注渲染和样式设置。Utilities和Web命名空间涉及空间索引、网络支持及Ajax功能。SharpMap.UI工程包含Forms和Ajax支持,便于Windows Form和Ajax集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
解压下载的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支持。
 
 
大家好,这次针对上次我写过的一篇对《一个简单的学生成绩管理系统》优化的一点意见。看到有一些看过我写的文章的朋友们对我提出了一些意见和改进的看法。因为,我在前段时间在考虑修改,但是因为给学校开发软件,没有太多的时间,所以拖到现在才来完成,对www.vckbase.com上的朋友对我提出的意见做出回应。 这次我利用课余的时间自己写了一个学生信息管理系统。用的是MFC ODBC来完成的。我这个系统是针对《一个简单的学生成绩管理系统》的修改。改进了一些我认为存在的一些问题和不方便用户的操作。 例如,在成绩管理系统中,当查询到记录后要刷新,使所有的记录从新显示出来的话,我试过在我的电脑上面,如果系统中存在7000条记录的话,刷新一次的时间要20多秒钟,我想对用户来说是无法忍受的,但是我在这做出了一些不同的处理,可以在用户查询后,在不到一秒中的时间内来完成刷新。如果,用户没有查询而点击刷新按钮的话,那也会需要很长的时间来更新,所以,刷新按钮不要随意按下。但是这个系统还是支持存储上万条记录的。各位可以看我的源代码。还修改了系统中存在的一些不方便的地方。使用户现在在我的系统中删除记录可以只要点中需要删除的记录,点击删除按钮就可以了,方便了用户。而且针对vckbase.com上面的朋友给我提出的意见也做出了修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值