基于C#的GIS校园电子地图实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于C#的GIS校园电子地图实现

1.简介

地理信息系统(Geographic Information System, GIS)是融计算机图形和数据于一体,存

和处理空间信息的高新技术。它是以地理空间数据库为基础,在计算机硬、软件环境的支持下,对空间相关数据进行采集、管理、操作、分析、模拟和显示,并采用地理模型分析方法,适时提供多种空间和动态的地理信息,为地理研究、综合评价、管理、定量分析和决策服务而建立起来的一类计算机应用系统。校园电子地图是利用GIS技术实现对校园地物位置的实时显示,具有漫游,鹰眼,缩放,定位,量算,查询等功能。

本系统以中北大学校园地图信息为基础,在.NET环境下通过C#语言对MapX控件进行二次开发来实现的。MapX是MapInfo公司的地图化的ActiveX,在利用面向对象程序设计语言的开发应用中嵌入MapX,可以非常简便的使其应用程序具有强大的地图控制功能。在应用程序设计前期还用到了MapInfo Professional软件。MapInfo Professional是目前世界上比较完备、功能强大、全面直观的桌面地理信息系统,是一套强大的基于Windows平台的地图化信息解决方案。MapInfo Professional主要提供地图绘制、编辑、地理分析、网

格影像等功能。

2.系统设计

本系统设计可分为两个部分,第一部分为地图数据的设计和.GST地图文件的生成,第二部分为具体代码的设计。这样设计有以下目的:

1)当出现校园规划地图变更时,只需变更地图数据并重新生成.GST文件,然后覆盖

应用程序下maps文件夹下的地图文件即可。

2)当地图软件功能变更时,需要开发人员进行相关功能的完善与增删。

采用这种设计可以使程序的代码量大大降低,便于维护,提高了程序运行性能。

2.1 系统功能与目标

社区法老

UID

42146

帖子

1076

精华

1

积分

2331

J力豆

180

贡献值

阅读权限

70

在线时间

250 小时

注册时间

2008-2-3 最后登录

2009-10-22

∙个人空间

∙发短消息

∙加为好友

∙当前离线

2#大中小发表

本系统设计目标是提信息阅览,为新生以信息查询。为此,本子地图功能并实现对

表达校园各

2)实现地图上

4)

2.

MapInfo采用空间间数据是用来确定图面空间位置为参照的的属性,它一般是经到的。MapInfo根据不顺序来组织地图。每它存储为若干文件。

本系统利用Ma 校园地图绘制为7个层、生活区图层、体育背景图层。同时分别为通过属性数据来实现区图层的属性数据表

图1

2.3 利在MapX中,地图是分

件。安装MapX5. MapInfoProfessiona 住宿区图层、生活区道路图层、背景图层顺中,本系统存储为Form1_Load中直接加

层,使

“2010 IBM 新锐洞

社区法老

UID

42146 帖子

1076 精华

1 积分

2331 J力豆

180 贡献值

0 阅读权限

70 在线时间

250 小时注册时间

3#大中小发表于 2009-3-2 11:23 只看该作者

2.4 系统主要功能设计

2.4.1 电子地图基本功能的实现

电子地图基本功能包括放大、缩小、漫游等,MapX控件已经集成了这些工具,因此编程时C#只需要简单调用这些工具即可,具体代码

如下:

private void toolStripButton1_Click(object

sender, EventArgs e)

{

axMap2.CurrentTool = MapXLib.ToolConstants.miZoomInTool; //放大工具

}

其它工具调用类似,这里不再赘述。

2.4.2 鹰眼图实现

鹰眼图是GIS系统的一个基本功能,它是为了方便拥护浏览地图而设计的,其作用是显示主图中所显示的地图在整副地图中的位置。用户还可以在鹰眼图中鼠标单击任意区域,则在主图中同步显示该

2008-2-3 最后登录

2009-10-22

∙个人空间

∙发短消息

∙加为好友

∙当前离线

区域,从而实现快速浏览。

实现鹰眼图的思路为:首先在窗体上放两个MapX控件,分别为主图和鹰眼图,然后在鹰眼图上创建一个图层,并在其上添加一个矩形框,该矩形的大小随主图边界而变化。

C#实现鹰眼图的代码如下:

private void axMap2_MapViewChanged(object sender, EventArgs

e)

{

MapXLib.Feature tempFea; //声明一个图元,用于鹰眼图中

创建的矩形框

MapXLib.Points tempPoints = new Points();

MapXLib.Style tempStyle = new Style();

MapXLib.Point ptMap_1 = new MapXLib.Point();

MapXLib.Point ptMap_2 = new MapXLib.Point();

MapXLib.Point ptMap_3 = new MapXLib.Point();

MapXLib.Point ptMap_4 = new MapXLib.Point();

//设置矩形框四角坐标为主图边框

ptMap_1.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMin);

ptMap_2.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMin);

ptMap_3.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMax);

相关文档
最新文档