校园地理信息系统的设计与实现

校园地理信息系统的设计与实现

摘 要

与传统的地图相比较,地理信息系统有着不可比拟的优势,信息量大,切换方便,可扩展性强。本文阐述了研究地理信息系统的背景、目的、方法,介绍了一个实用的、方便可靠的校园地理信息系统的设计、构建和开发过程。
开发过程中,使用了AutoCAD和MapInfo处理地图,采用OLE的嵌入技术将MapInfo的数据与Delphi连接起来,并且使用了MapBasic语言进行对地图的操作和控制。此系统在Windows 98平台上测试通过。
本文先简要介绍了地理信息系统的概况,然后介绍了校园地理信息系统的组成及功能,详细讨论了在设计实现本系统中所遇到的问题及解决方法。

关键词:地理信息系统、MapInfo、Delphi

若有困难,英文摘要可不写
Design and Implementation of Geographic Information System of Campus

Abstract
Compared with traditional map, Geographic Information System has many unique advantages,such as full of information, convenient switching and good expansibility. The paper expatiated on the background, the purpose and the method of the research of Geographic Information System, and introduced the design, building and developing method of Geographic Information System of campus, which has characteristics of utility, convenience and reliableness.
In the procedure of developing, AutoCAD and MapInfo are used to handle maps, and OLE embedding is used to linking MapInfo data and Delphi, also, Mapbasic language is used to operate and control maps. The system is running well on Windows 98 platform.
In this paper Geographic Information System in the general is reviewed briefly, the constitution and function of Geographic Information System of campus are introduced, the problem we met and the resolvent in the procedure of design and implementation of the system are discussed in detail.

Keywords:Geographic Information System,MapInfo,Delphi

致 谢
毕业设计自今年2月份以来,历时三个多月。在这三个多月的时间里,我的毕业设计得到了***老师的极大支持。在毕业设计过程中,老师给了我很多意见和建议,并且给予了细心的指导,在此我深表感谢,感谢老师对我的无微不至的关心与指导。

目 录
中文摘要 1
英文摘要 1
致谢 2
目录 3

第一章 绪 论 5
1.1 研究地理信息系统(GIS)的背景 5
1.2 研究地理信息系统(GIS)的目的及其结构 5
1.3 研究地理信息系统(GIS)的方法 9
1.4 论文内容概述 9

第二章 技术支持和开发工具 10
2.1 MAPINFO 5.0 10
2.2 DELPHI 5.0 11
2.3 AUTOCAD R14.0 11
2.4 MAPBASIC 11

第三章 校园地理信息系统的开发 13
3.1 系统的目标及功能 13
3.1.1 系统的开发目标 13
3.1.2 系统的特点及功能概述 13
3.2 可行性分析和需求分析 13
3.2.1 系统的可行性分析 13
3.2.2 系统的需求分析 14
3.3 总体设计 15
3.3.1 系统结构设计 15
3.3.2 模块设计 16
3.3.3 数据库设计 17
3.4 转换与连接 17
3.4.1 转换地图 17
3.4.2 用MAPINFO处理地图 20
3.4.3 MAPINFO与DELPHI的无缝连接 23
3.5 详细设计 27
3.5.1 界面设计 27
3.5.2 浮动工具栏的设计实现 30
3.5.3 地图显示 32
3.5.4 TREEVIEW与地图信息的连接 33
3.5.5 利用COMBOBOX实现分层图的转换 34
3.5.6 自定义MAPINFO快捷菜单 37
3.5.7 开机画面的制作 36

第四章 系统测试 37
第五章 结束语 38
参考文献 39

第一章 绪 论
1.1 研究地理信息系统(GIS)的背景
各行各业都搞过数据库(信息管理系统),例如有人事、工资、技术资料管理之类的数据库。说到底,这些数据库是一种二维表。它们的行和列是按一定关系组织的,所以又叫关系数据库。设想要建立一个校园的数据库,其属性字段可能包括建筑名称、面积、所属学院、建造年份等,当然还有所处的位置。不管用经纬度还是别的方式来叙述各建筑的位置,始终不如把它们表示在一幅图上那样直观和一目了然。
能够保存图形信息的软件不少,最具有代表性要算AutoCAD。利用它可以把各个建筑的位置准确的标绘到图上,甚至可以标注上它们的名字。但要把面积、所属学院之类的大量属性资料都表示上去就困难了,更不用说进行各种查询和统计计算了。
计算机技术发展到今天,出现了一种能把图形管理系统和数据管理系统有机的结合起来的信息技术,它不但克服了数据库和图形系统各自固有的局限性,而且使二者的优势强强联合,优势更加突出,功能倍增。这就是地理信息系统(Geographic Information System,简称GIS)。GIS级管理对象的位置又管理对象的其他属性,而且位置和其他属性是自动关联的。
地理信息系统是一种先进的计算机软件技术。它是对各种空间信息进行收集、存储、分析和可视化表达的信息处理与管理系统。GIS提供给你的信息产品不仅仅是简单的文字和数据,而且还有一幅幅空间图形或图像。位置图往往比文字更能说明空间问题,它给人以直观完整而深刻的印象。GIS表达问题准确,这种系统特别适合管理各种与空间位置有关的事物。这类事物在我们的日常生活和工作中是大量的,专家估计,80%以上的信息具有空间属性。因此,GIS现已广泛应用于政府行政管理、军事、国防,尤其广泛应用于专业技术性管理,如国土资源、矿产资源、交通运输、防灾减灾、环境保护、水电建设、水土保持、森林防火、建设规划、公安、消防、工程、邮电、海洋、农林和银行等方面的技术性管理。凡是需要用到各种位置图的地方都可以用GIS。有了GIS,便有了图库和数据库,就可通过鼠标来实现信息的快速查询和分析处理。大到地球、国家、省市,小到村镇、街道乃至地面上的一个点位,GIS都能做到要图有图,要数据有数据;图文并联,天衣无缝。

1.2 研究地理信息系统(GIS)的目的及其结构
1.GIS能回答和解决以下五类问题:
位置,即在某个地方有什么。位置可以是地名、邮政编码或地理坐标等。
条件,即符合某些条件的实体在哪里。如:在某个地区寻找面积不小于1000平方米的不被植被覆盖的,且地质条件适合建大型建筑的区域。
趋势,即在某个地方发生的某个事件及其随时间的变化过程。
模式,即在某个地方的空间实体的分布模式。模式分析揭示了地理实体之间的空间关系。
模拟,即某个地方如果具备某种条件会发生什么。通过基于模型的分析实现。
2.地理信息系统结构
地理信息系统依照其功能,其结构可区分为:
(1) 地理资料的数字化:地理资料的搜集是建立地理信息系统时,最为耗时费力的工作。资料的来源不外乎自行收集、向厂商购买,或是将资料格式进行转换。而接下来的工作便是将地图、各种相关资料输入GIS的数据库中,并加以整理。
(2) 地理资料的管理:网络与数据库的结合,GIS的范围延伸到更深的领域。除了需要管理平面信息如地图、图层外,还需要管理与平面信息相关的立体信息。
(3) 地理资料的分析与处理:地理资料收集的目的,便是发挥决策支持的作用。对地理属性数据进行分析,并利用几何运算、参数转换多种方法对空间资料的分类、整理、处理等。
(4) 地理资料的提取与显示:将需要的地理信息以可视化的方式展现出来。例如一份地理资料的展现,可以采用直方图、饼形图、折线图、散布图等较为直观易懂的方式。在通过打印机或绘图仪将图表打印出来。

1.3 研究地理信息系统(GIS)的方法
1.国内外常用的地理信息系统软件
目前世界上常用的GIS软件已达400多种。它们大小不一,风格各异。国外较常用的有ARC/INFO,GENAMAP,MGE等;国内较常用的有MAP/GIS,Geostar和CITYSTAR等。虽然GIS起步晚,但它发展快,目前已成功地应用到许多领域。
2.地理信息系统在国内外研究应用
尽管现存的地理信息系统软件很多,但对于它的研究应用,归纳概括起来有二种情况。一是利用GIS系统来处理用户的数据;二是在GIS的基础上,利用它的开发函数库二次开发出用户的专用的地理信息系统软件。目前已成功地应用到了包括资源管理、自动制图、设施管理、城市和区域的规划、人口和商业管理、交通运输、石油和天然气、教育、军事等九大类别的一百多个领域。在美国及发达国家,地理信息系统的应用遍及环境保护、资源保护、灾害预测、投资评价、城市规划建设、政府管理等众多领域。近年来,随我国经济建设的迅速发展,加速了地理信息系统应用的进程,在城市规划管理、交通运输、测绘、环保、农业、制图等领域发挥了重要的作用,取得了良好的经济效益和社会效益。

1.4 论文内容概述
以上已经阐述了研究地理信息系统的背景、目的、方法,接下来的第二章将介绍开发本系统所用到的工具和技术;第三章具体介绍了一个实用的、方便可靠的校园地理信息系统的设计、构建和开发过程;第四章介绍了系统的测试情况及设计实现本系统中所遇到的问题及解决方法;第五章总结了毕业设计的总体情况以及系统的不足之处。

第二章 本系统的技术支持和开发工具
2.1 MapInfo5.0
MapInfo是美国MapInfo公司的产品。该公司始终致力于为用户提供先进的数据可视化、信息地图化技术,并将这些技术与主流业务系统集成,提供完整的解决方案。MapInfo吸取了传统GIS系统的精华,并借助于计算机技术的发展,及时的将GIS的概念从中大型计算机的专用工作站引入到普通PC上,开创了一种崭新的地理信息系统模式,即桌面地图信息系统。MapInfo的出现,吸引了越来越多的用户。该产品自九十年代初进入中国后,在各行各业得到了普遍的关注。在统计、信息中心、测绘、邮电、水利、环保、油田、林业、军事、工商等部门得到了广泛的应用。
MapInfo的主要特点:
(1)MapInfo=Mapping +Information。
(2)提供数据、思维可视化的决策支持方式。
(3)支持Client/Server体系结构及无缝图层。
(4)直接读/写ODBC数据库。
(5)轻松建立数据与地图的关联。
(6)提供MapBasic二次开发工具方便定制用户界面,增添新功能。
(7)功能完备的SQL查询功能,支持地理表达式。
(8)以地理方式实现Oracle、Sybase、Informix等多种数据库数据的空间存储与访问。
(9)具有OLE嵌入功能,能将图层拖放进其他应用程序。
(10)可在Windows95、WindowsNT及OS/2、Windows3.X 16位仿真模式下运行。
MapInfo Professional是第一个能够在Windows95上运行的真32位工业标准桌面地图信息系统,实现Client/Server计算环境下与远程数据库的智能化共享与连接,开辟了桌面地图 信息系统21世纪新纪元。使用MapInfo Professional可以对数据进行更高级和更详尽的分析,从而从地域的观点对你的商务做进一步的了解,和可以预见到你定制的计划的效果,通过图层清晰的显示出发展趋势,帮助你制订行之有效的市场决策。
MapInfo新增特点:
MapInfo Professional5.0在精确地图化和地理分析方面新增了去多功能,包括:
(1)支持Internet。
(2)图表和图像。
(3)分层。
(4)3D视图。
(5)专题地图化和样板。
(6)生成专题图。
(7)支持栅格图像。
(8)给地图目标附加数据。
(9)关联的视图。
(10)建立和存储SQL查询。
(11)在目标周围建立缓冲区。
(12)地理查询。
(13)Seagate Crystal报表。
(14)内置的冲突协调管理。
(15)服务方面储藏和数据管理。

2.2 Delphi 5.0
Delphi号称“第四代编程语言”,而Delphi5.0是基于32位的Windows98/NT环境显得优秀软件开发系统,它兼有Visual C++的强大功能和Visual Basic的易用性。
Delphi5.0的特点:
Delphi5.0采用面向对象的程序设置、组件化的编程方式、快速Pascal编译器、OLE自动化、ActiveX编程、数据库及Internet/Intranet编程支持,从而使得Delphi5.0开发功能更加强大,同时更加易于学习和使用。
1)是一个可视化的RAD(Rapid Application Development,快速应用程序开发)工具,具有高效易用、最优化的源代码编译器、可视化的快速应用程序开发环境和可扩展的数据库技术,适合各种类型的可视化程序开发。
2)具有比Delphi4.0更强大的网络功能。
3)使用的程序语言是Object Pascal,它是一种面向对象的结构化程序设计语言,增强了异常状况的处理能力以及类的封装能力,具有自动的异常状况处理能力。
4)具有完整的基于组件设计和可视化的开发环境,程序设计人员可以很快设计出自己满意的界面,并同时系统会自动产生程序原型。
5)开发出来的应用程序与Windows95、Windows98或Windows NT的操作环境无关,可以直接在Windows下运行。
6)有强大的数据库支持能力,程序设计人员只通过BDE(Borland DataBase Engineer,Borland数据库引擎)工具而不需与数据库文件直接打交道,就可以操作和处理各个数据库文件。
7)它是唯一支持Oracle 8的RAD工具。
8)用Delphi开发的应用程序可以调用C++的DLL和VBX,同样,用C++开发的应用程序也可调用Delphi所产生的DLL。
2.3 AutoCAD R14.0
AutoCAD是美国Autodesk公司推出的通用计算机辅助绘图和设计软件包,具有易于掌握、使用方便、体系结构开放等特点。它在诸多方面相对与以往的绘图软件有了重大的改进,主要有:系统的运行速度,文件的共享,图层和线性的管理,精确绘图方面,绘图布局方面等。软件本身更易于学习和使用,也易于维护,并且还可以按照工作的需要进行改造。
在本系统的设计实现过程中,AutoCAD主要用来转换地图。
2.4 MapBasic
MapBasic是理想的在MapBasic平台上开发用户定制的应用程序的编程语言。通过使用MapBasic进行二次开发,能够扩展MapInfo功能,实现程序的自动重复操作并使MapInfo与其它应用软件集成。MapBasic功能强大,用户仅用几行代码即可在应用软件中实现图层叠加,并具备其他地理功能。MapBasic程序易于与用诸如Visual Basic、C++、Power Builder和Delphi等语言编写的应用软件集成。MapBasic已经被世界上数百个第三方厂商认可。
MapBasic的软件集成环境主要包括文本编辑器(Editor)、程序编译器(Compiler)、程序链接器(Linker)和联机帮助(Help)4个部分。
文本编辑器用于程序的编辑与修改;程序编译器用于源程序编译,以生成可执行程序;程序链接器用于将若干独立的模块链接成一个应用程序;联机帮助则为程序员在线提供MapBasic的每条语句或函数的详细说明资料。
作为一种功能强大、易于使用的结构化程序设计语言,MapBasic与传统的GIS相比,良好的软件集成环境、面向对象和事件处理式的编程思想,都是MapBasic的显著特征。下面是MapBasic的主要特点:
1)一种类Basic语言,帮助建立用户界面。由于桌面地图信息系统应用软件在各种机构和领域内的应用愈加广泛,顾客对开发应用软件的需要日益增大。用户可以利用MapBasic开发适合自己需要的应用软件包。
2)MapInfo集成。支持OLEAutomation和DDE技术使之易于与其他应用软件相连接。当与其他的商业工具集成时,桌面地图信息系统能够发挥最大的作用。MapBasic支持ODBC数据库连接标准、OLEAutomation以及DDE通信技术以易于与其他应用软件互通。例如,运用IntergrateMapping技术,在VisualBasic等开发工具中集成进一个地图窗口。
3)扩展MapInfo功能。MapBasic是一种多平台的、过程化的、事件驱动的、兼容性强的MapInfo应用程序开发工具,其语言结构允许您定制附加功能。它具有功能很强的内含地理特征的语句和函数。全ANSISQL语言设置由一个内含的子集可以使用户能够运用工业标准的命令来处理数据。
4)易于掌握。建立在BASIC基础上的MapBasic具有与BASIC同样的函数和语句。MapInfo Professional有一个特殊的窗口,当使用MapInfo菜单时可以看见相应的MapBasic命令,并且可试验自己的命令。通过此方法可以学习MapBasic命令并且把它们剪贴到你的应用软件中。
5)包含嵌入的SQL语句以具有更强大的数据查询功能。
6)地理操作和功能帮相互能扩展应用软件的功能。
已有上千种使用MapBasic开发出的、能够解决商务问题的应用软件。
MapBasic是一种更能强大、结构与BASIC语言相似的语言。无论是熟练的还是刚入门的程序员,都能使用该语言根据用户的需求开发出功能更加强大的桌面地图信息系统应用软件包。无论是希望分销,还是为了您自己使用而设计应用软件,MapBasic都是一个不可缺少的工具。
MapBasic是一种可编译语言。用户所编辑出的程序可在MapInfoProfessional或MapInfoRuntime上运行。开发环境给用户提供一个可用于编写程序的文本编辑器。当然,也可以使用原有的文本编辑器。MapBasic具有编辑和连接模块的功能,可以将程序分模块编制,以减轻工作量。

第三章 校园地理信息系统的开发
3.1 系统的目标及功能特点
3.1.1 系统的开发目标
本课题名为校园地理信息系统。本系统以***大学为模型,旨在建立一个本学校的导航系统,可以根据不同人的要求,足不出户,就可以浏览校园,得到各种信息。
3.1.2 系统的特点及功能概述
地理信息系统的特点是它能把各种信息向地理位置和有关的视图结合起来,并把地理学、几何学、计算机科学及各种应用对象、CAD技术、遥感、GPS技术、 Internet、多媒体技术及虚拟现实技术等融为一体,利用计算机图形与数据库技术来采集、存储、编辑、显示、转换、分析和输出地理图形及其属性数据。这样,可根据用户需要将这些信息图文并茂地输送给用户,便于分析及决策使用。
以我校为模型的校园地理信息系统能够实现地理信息系统的基本功能。用户可按“教学与科研”、“生活与后勤”、“校办工厂”、“网络与电缆”这几类察看分层图,并且得到相应的信息,实现地图的放大、缩小、漫游、信息标注等功能,并能得到系统帮助。
3.2 可行性分析和需求分析
3.2.1系统的可行性分析
本系统要求以Delphi制作界面,而将地图信息存放在MapInfo生成的表中。
可以利用MapBasic外的其他语言对MapInfo进行编程。将MapInfo地图窗口集成在用其他语言(如Delphi)编程的应用程序中的开发方式,叫做集成地图开发。

1.集成地图概述
如果用户掌握了一门编程语言,如Delphi或Visual Basic,将会发现,用集成地图进行开发,是一种将MapInfo窗体和非MapBasic应用程序结合起来的最方便的方法。
用户可以控制集成地图程序的外观,用户看到的是一个真实的MapInfo地图窗口,而不是简单的位图、图元文件或其他简单的图像。而且在这个地图窗口中,可以允许用户与地图之间进行交互。例如,在一个MapInfo地图窗口中,用户可以使用程序所提供的放大缩小工具来放大或缩小地图。一个集成地图窗口与在MapInfo内的地图窗口没有什么本质的不同。
集成地图应用程序可以由许多语言编写。通常用的编程语言有:C++、Visual Basic、Delphi和Power Builder等。在所编制的程序中,可以使用一个语句使MapInfo在后台启动。例如,当使用Delphi来编程时,可以通过调用createoleobject()函数来启动MapInfo。当调用该函数后,MapInfo遍成功的在后台启动,而不会在前台显示其启动画面。
在程序中可以通过构造一些表示MapBasic语句的字符串,利用OLE或DDE的方式将这些字符传给MapInfo,从而可以操纵MapInfo。MapInfo会像处理MapBasic语句一样处理这些命令字符串。
如果只用MapBasic编程,希望打开地图窗口时,那只需采用MapBasic的Map()语句即可。但是,在集成地图应用程序中,必须给出附加的语句,如Set Next Document Parent,使地图窗口首先成为当前应用程序的子窗口。
一般,在创建集成地图应用程序时,并不需要创建一个通过编译了的可执行MapBasic应用程序(.MBX)。用户只需要写出MapBasic代码即可,因为这些代码将作为集成地图编程代码的一部分一起进行编译的。
2.编程环境
系统要求:
1)需要Microsoft Windows系统。可以在16位(如Windows 3.1)或32位Windows(Windows 95或Windows 98)系统环境下进行。
2)集成地图环境。需要MapInfo 4.0或更高版本,可以在Profession或Runtime环境中编程。计算机硬件上,必须有足够的内存,可以同时运行客户程序和MapInfo。
3)客户程序(例如Delphi程序)必须可以作为OLE自动控制器或作为DDE客户。一般倾向于采用OLE而不用DDE,因为掐着要比后者迅速和可靠,并且OLE自动控制器一般提供比DDE更详细的错误信息报告。MapInfo可以利用OLE属性来报告run-time错误代码,而DDE则不能做到这一点。
4)客户程序必须能创建一个用户界面,如窗口、表格或者控制器等,作为地图放置的容器,并且客户程序必须能决定用户界面各元素的Windows HWND值。例如,在Delphi中,在窗体中加入一个Panel控件。当发出一条给MapInfo的指令,要求在该Panel中创建一幅地图,首先就必须指定Panel控件的HWND。
a)需要注意以下几点:
5)要进行集成地图程序的开发,必须采用MapBasic以外的编程语言来进行。通常我们称这样的程序为客户程序。可以采用现在通用的各类编程语言软件来编制程序,如C/C++、Visual Basic、Power Builder或者Delphi。
6)集成地图程序开发采用的是OLE自动控制,而不是OLE嵌套。当将一个MapInfo地图窗口放置于所编制的应用程序中时,你并没有对它进行嵌套,而是将通过传送一系列命令字符串将其作为该应用窗口的子窗口。
7)集成地图环境并不包括VBX和OCX控件。除了示例程序外,MapInfo公司并没有提供任何库和源代码。MapInfo虽然包括一些动态链接库文件DLLs,但用户不能直接调用这些DLLs,这些DLLs只能应用在MapInfo内部。

3.2.2系统的需求分析
目前,我们熟悉一个地方的地形情况通常是借助于一张地图,通常的地图包含的信息十分的有限,而且具体到某一个建筑物,你不能了解到它的进一步的详细的情况。因此,地理信息系统就有应运而生了。
具体到本系统,作为用户浏览校园时,只拿着学校的地图是能够游遍全校,但是各建筑内部的情况就必须实地考察才能了解,既费时又费力。有了我们的校园地理信息系统,用户可以根据自己的需要分类察看学校地图,迅速找到所关心的地点,并且可以看到它的详细的信息。
因此,本系统在设计时,需考虑:
1.同用户的需求以及学校建筑的实际功能用途来进行分类,以便于用户的快速查找所需地点。
2.实现地图的放大、缩小、漫游等基本功能。
3.要实现信息标注功能,以便于用户察看其他次要建筑的信息。
4.对于校园的主要建筑要有详细的信息可供察看,必要的时候可以配上照片,实现地图与信息的连结。
5.要实现系统帮助,详细介绍本系统的使用方法。
6.在同一类中要实现分层图的直接转换。
3.3 总体设计
3.3.1 系统结构设计
本系统主要由6个form组成(如图1),功能如下:
form1:系统主要的操作界面;
form2:各学院介绍界面;
form3:学校总体介绍界面;
form4:系统开机画面;
form5:文化一条街图片介绍;
form6:系统帮助界面。

            ①              ②                ④

                                   

                                          ⑤

①splash画面定时结束进入form3
②点击“浙江工业大学”进入form1
③打开地图点击treeview上的项目
④打开“生活与后勤”中的“其他生活设施分布图”的treeview中的“文化一条街”
⑤点击工具栏上的“帮助”
图1:系统结构图
3.3.2 模块设计
学校是一个特殊的实体,我们以用户的角度来考察,要将各个建筑分类。进入一个学校,我们希望了解的有学校的行政办公的场所,包括学校的行政办公场所,如校长办公室、教务处、校党委办公室、财务处等,以及各个学院的办公场所,如信息学院在主楼八楼,经贸学院在C区三楼等,因此我们建立一张行政办公分布图;关心学校教学设施的用户可以在教室分布图上找到学校教室分布情况,在运动设施分布图上可以了解到学校所有的运动设施的分布情况。另外,我们如要找一个同学,我们如知道他所在的学院,根据这个就可以知道他所在的寝室楼,因此,一张学生寝室楼分布图也是必不可少的;来到学校,食堂分布图将引导用户就餐;一张其他生活设施分布图将是刚刚入学的新同学一个良好的向导,你可以轻松的找到学校的浴室、开水房、银行、超市、收发室、书店、小卖部、文印室、校医院、招待所等与大家的生活息息相关的生活设施;分布于学校周围的是教师宿舍。学校的校办工厂我们也分为一类,与之有业务联系的用户就可以很快找到厂房位置。学校的电缆线和网络线也是很重要的,我们也分别制作了地图供参考。根据以上的描述,我们将整个学校的地图分为如图2的分类分层图:

图2: 系统分类分层图
按照此分类分层图,打开从AutoCAD导入的分层图,我们将以“地形.TAB”为基础,将地图转化为分类图。
3.3.3 数据库设计
MapInfo的空间数据结构如图3 所示[10]。

综合地图 空间实体

                              对应的空间数据表

图层1

图层2 对应的空间数据表

图3:MapInfo的空间数据结构

从横向分析,MapInfo采取的空间数据结构是基于空间实体和空间索引相结合的一种结构。空间实体是地理图形的抽象模型,主要包括点、线、面三种类型。任何点、线、面实体都可以用直角坐标点x,y来表示。点可以表示成一组坐标(x1,y1;x2,y2…xn,yn)。空间索引时查询空间实体的一种机制,通过空间索引,就能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据。
从纵向分析,MapInfo的空间数据结构是一种分层存放的结构。用户可以通过图形分层技术,根据自己的需求户一定的标准对各种空间实体进行分层组合,即将一张地图分成不同图层。
3.4 转换与连接
3.4.1转换地图
AutoCAD在本次设计中主要用于处理地图,我们得到的是使用AutoCAD制作的浙江工业大学控制网及图幅分幅图,如图4:

                          图4:原始图

在图上可见线条纵横交错,不易分辨,该图分为0、DL、T100、T900、地形、电缆、电信、旧上水、旧下水、上水、下水、图框、网络、污水等若干个Layer,我们的任务就是将绘制在AutoCAD中的地图导入MapInfo。
用户可使用Export命令将AutoCAD图形对象转化为其他文件格式加以保存,以便其他应用程序调用,此命令共有如下两种执行方法:
1.在命令行中输入export并按回车键。
2.选择File菜单的Export选择项。
在执行Export命令时,将弹出Export Data对话窗口,如图5:

图5:Export Data对话框
用户可在Export Data对话窗口中输入文件名和文件类型,AutoCAD可导出的文件格式共有如下十种:
1.3DS格式
3D Studio文件格式,可使用3DSOUT命令导出此种格式。
2.MP格式
设置无关的位图文件格式,可使用BMPOUT命令导出此种格式。
3.DWG格式
AutoCAD图形文件格式,可使用WBLOCK命令导出DWG格式。
4.DWF格式
AutoCAD图形Web格式,可使用DWFOUT命令导出此种格式。
5.DXF格式
AutoCAD图形交换文件格式,可使用DXFOUT命令导出此种格式。
6.DXX格式
DXF属性抽取文件格式,用于将DXF属性保存到一个文件中,可使用ATTEXT命令导出此格式。
7.EPS格式
PostScript文件格式,可使用PSOUT命令导出此格式。
8.SAT格式
ACIS实体对象文件格式,可使用ACISOUT命令导出此种格式。
9.STL格式
实体对象立体化文件格式,可使用STLOUT命令导出此格式。
10.WMF格式
Windows文件格式,可使用WMFOUT命令导出此格式。
我们选择AutoCAD R12/LT2 DXF(*.dxf)格式,以便与MapInfo导入此格式。
打开MapInfo,点击“表—转入”可以看到“DXF转入信息”对话框,如图6:

图6:DXF转入信息对话框
勾选“创建分离的表”,则将把AutoCAD中的分层图逐一导入MapInfo并分别以*.tab的形式保存下来,以便于下一步处理地图。
3.4.2用MapInfo处理地图
用MapInfo处理地图
MapInfo的主窗口如图7所示,其工具条主要包括常用工具条、主工具条、绘图工具条和工具工具条。

以下正文的文字大小也应是小四号,请大家参考时注意

                     1

                       8

1、主菜单 2、绘图工具条 3、主工具条 4、常用工具条
5、地图窗口 6、工具工具条 7、浏览窗口 8、状态栏
图7:MapInfo主窗口

利用以上的工具,我们处理地图:
1、打开“地形.Tab”如图8,上面的每一个点、每一条线、每一块区域甚至注解都是一条纪录,初始时有18977条纪录,我们的目标是将地图简化为一块区域对应一条纪录的表。因此首先我们将不需要的注解、线条及框架删除。
2、制作“行政.Tab”时,我们删除行政楼以外的建筑,将行政楼的线条转化为区域即选择“对象”〉“转化为区域”,用合适的颜色填充,必要的时候需要重画线条,行政楼外的草坪也画出进行装饰。
3、选择“表〉维护〉表结构”如图9,可以添加、删除字段。在到浏览器界面中,添加信息(如图10),这样可以到地图界面中点击信息工具察看信息,点击标注工具对地图进行标注。
4、选择“表〉维护〉紧缩表”,紧缩地图和表格数据,这样得到一张简单清晰的表(如图11)。记录也变为仅有15条了。
5、用相同的方法,我们处理其他分层图。并制作一张底层图作为分层图的底层。
图8:未处理前的地图

图9:修改表结构对话框

图10:为地图加标注

图11:紧缩后的表
3.4.3 MapInfo与Delphi的无缝连接
在开发“校园地理信息系统”时,将MapInfo Professional和Delphi连接起来。在Delphi中嵌入MapInfo校园图形的资料,成为其界面的一部分,由Delphi开发校园地理信息系统软件,提供用户控制和操作界面,用桌面图形系统开发平台MapInfo Professional操纵和处理校园图形资料。这些操纵包括图形放大、缩小、漫游、信息标注、空间查询、图层的添加和控制等。将Delphi和MapInfo Professional结合,取Barland Delphi软件开发平台的高效率、高可靠性、先进的组件技术、完全支持ActiveX和DDE技术等优势,可开发出高质量的图形信息管理系统。
图12为Delphi程序与Mapinfo Professional两者在连结控制过程中的分工与地位,以及ActiveX与DDE所扮演的角色。图中包含三个虚框,左上一个为ActiveX(OLE)自动化;右上一个为Delphi程序与MapInfo Professional之间的控制连接;下方一个为MapInfo Professional体系[3]。

                                   控制
  反馈消息                                              回调消息

控制与数据传输 DDE回调
ActiveX控制

   MapInfo处理图层2   MapInfo处理图层1  MapInfo数据库

图12:Delphi与MapInfo连接图
技术难点是从Delphi控制MapInfo Professional运行,并取得其服务,操纵嵌入在Delphi程序界面上的地图资料:主要指在Delphi程序中通过特定ActiveX控制接口,执行相应接口方法函数,向MapInfo Professional发出控制命令,取得其服务,达到操纵嵌入在Delphi程序界面上的MapInfo地图资料的目的。问题是如何控制MapInfo Professional运行、如何取得ActiveX接口方法、如何跟Delphi程序界面上的地图资料联系起来,达到操纵该地图的目的。
可以利用Delphi对ActiveX支持的函数启动和控制MapInfo Professional运行。这时Delphi程序是ActiveX(OLE)客户应用程序,控制MapInfo Professional的运行;在后台运行的MapInfo Professional是ActiveX(OLE)自动化服务器,为Delphi程序提供服务。
在Delphi的程序中集成Mapinfo的地图窗口是将Mapinfo的地图窗口调进Delphi开发的应用程序界面中去,扩充程序的功能。把地图窗口应用于其他程序中,这种程序开发方法,是一种程序集成的方法。具体做法是采用OLE自动化技术。
OLE(Object Linking and Embedding)是Microsoft公司为解决Window 下应用程序间的通信问题而提出的。但是到了今天,OLE已演变为一种协议或规范,成为软构件集成技术的基础。OLE自动化(OLE Automation)技术是OLE2.0新增加技术,它使用户通过编程在一个应用程序中控制另一个应用程序的对象,从而实现了应用程序级别的可重用。
在OLE自动化这一技术领域中,由应用程序或OLE编程工具所展现的对象称为OLE自动化对象,访问操作并控制该对象的应用程序或OLE编程工具则称为OLE自动化控制器,展现这些对象的应用程序则称为OLE自动化服务器。OLE自动化服务器展现的自动化对象使通过编程方法操纵应用程序成为可能。通过使用OLE自动化,能够完成以下的任务:
1)创建OLE自动化服务器
2)创建和操纵OLE自动化对象
3)创建OLE自动化控制器
OLE自动化服务器对象是编程的,其可编程能力主要是通过方法和属性这两个类的概念及两种类型的OLE自动化对象成员来实现。其中“方法”可以是带有许多参数的函数,它定义了一个对象所能达到并能完成的行为,同时可以获取或设置数据。“属性”则是不带有形参的函数,并能存取或设置有关对象当前状态的信息。实际上,OLE自动化技术就是使任何对象展示出一组可以由其他代码激活的方法和属性,而自动化提供了对象描述中参数和属性的名称和类型的方法。
使用OLE带来的好处是,不同应用程序展现的对象在同一编程环境中都是可见的,展现的对象可以用任何一个支持OLE自动化的编程工具或宏语言来访问,因此系统集成者可以选择最合适的任务开发工具。
Mapinfo提供的OLE自动化对象模型如图13所示。[8]

                       对象

                       对象和对象集

图13:OLE自动化对象模型
其中Application对象代表MapInfo的一个实例。在MBApplication集和MBGlobals集中,每一个对象分别代表一个正在运行的MapBasic应用程序和一个正在运行的MapBasic应用程序中定义的全局变量。MIMapGen对象主要用于MapInfo网络应用程序MISearchInfo对象代表查找的结果。MISelection对象代表MapInfo表。MIRows对象集中每一个对象代表表中的每一行,MIFields对象集中每一个对象代表表中的每一个域。
其中MapInfo的实例对象主要提供如下一些常用方法:
1)Do(string):向MapInfo发送命令字符串(MapBasic语句),MapInfo将执行这些命令;
2)Eval(string):应用程序通过此方法可获得MapInfo的执行结果;
3)RunCommand(string):解释并执行MapBasic语句,与Do类似。
OLE自动化允许在不同应用程序之间互相访问,可以从一种应用程序访问另一种应用程序或DDL。特别是可以访问这些程序对象的方法与属性,而并非原始数据;可以不用关心程序语言是如何做到这点的。OLE自动化有两种主要的对象类型:
OLE自动化服务器程序(在本文中指MapInfo);
OLE自动化客户几程序(在本文中指Delphi);
被自动化调用的程序叫做自动化服务器(AUTOMATION SERVER)。客户程序叫做自动化控制器(AUTOMATION CONTROLLER)或自动化客户机(AUTOMATION CLIENT)。一个程序既可以是服务器,又可以是客户机。
通过这种方法把地图窗口集成进Delphi程序时,用户可以看到一个真实的地理图形,并非一个简单的静止图形。
第一步:新建一个工程文件,在Form1上放置Panel、Button等控件;Panel用于显示地图。

第二步:将单元comobj列于unit1的uses字句中,这样一来我所开发的程序就可以使用这个单元中的有关过程及函数了。这个单元包含了如何操作OLE自动化对象的主要代码。例如:CreateOleObject()函数可以在Delphi主要运行的同时,在内存里启动另外一种程序。当执行函数CreateOleObject()时,Windows检测被调用程序是否运行,如果没有,她将启动被调用程序。

第三步:程序中广泛的应用变量,只是为了更方便的操纵OLE自动化对象。在单元文件的变量声明部分将Mapinfo置为variant类型;将hd置为string类型。Mapinfo代表自动化对象,hd代表放置Mapinfo地图窗口的部件句柄。
Var
Form1:Tform1;
Mapinfo:variant;
Hd:string;

第四步:双击 open map 按钮编写程序的代码如下:
procedure TForm1.Label1Click(Sender:TObject);
begin
mapinfo:=createoleobject(‘mapinfo.application’);
str(panel1.handle,hd);
mapinfo.do('set application window '+hd);
mapinfo.do('set next document parent '+hd+‘style 1’);
mapinfo.do(‘open table “行政.tab”’);
mapinfo.do(‘map from 行政’);
end;
这些代码用于打开一个地图窗口。下面逐一予以解释:
(1) 在集成环境里,运行一个Mapinfo 程序,调用Delphi 的CreateOleObject()函数,指定其返回变量。例如:如果命名该变量为Mapinfo,下面的语句将装载Mapinfo 应用程序:
Mapinfo:=CreateOleObject(’Mapinfo.application’);
这行代码指定了一个变量Mapinfo,它代表了作为OLE自动化服务器程序。
(2) str(panel.handle, hd)用Delphi的str()函数将Thandle型数据panel1.handle转化为字符型数据hd。
(3) 在起动了Mapinfo以后,用Mapbasic命令来设置应用程序窗口,以便在客户程序中能看到Mapinfo对话框和错误信息的提示。
mapinfo.do('set application window '+hd);
(4) 然后调用一个Mapinfo 窗口到Delphi应用程序时,要发出一个Set Next Document语句,跟在创建窗口语句的后面,例如一下程序为Delphi客户程序创建了一个Mapinfo的子窗口:
mapinfo.do('set next document parent '+hd+‘style 1’);
Set Next Document 语句“挂接”一个Mapinfo窗口,在这个语句里,必须指定Delphi控件的句柄值(hd),以便下一步所创建的Mapinfo窗口将能在这个控件上显示,如:Map、Graph、Browse等窗口;这个语句中能够还包含着一个类型部分(Style子句):
Style 1 无边框的窗口(不带标题栏、且被放在指定的控件内)。
Style 2 带图标的弹出窗口(标题栏宽度比较宽)。
Style 3 不带图标的弹出窗口(标题栏宽度比较窄)。
(5) 最后,执行Mapbasic的命令mapinfo.do(‘open table “行政.tab”’),打开一张地图“行政.tab”。并执行mapinfo.do(‘map from 行政’);在Panel上显示地图。

第五步:当你通过OLE自动起动了Mapinfo 之后,就可以执行Mapbasic的命令来完成控制Mapinfo。Do()、Runmenucommand()语句可以运行一个Mapbasic的菜单命令,它包含一个参数,用于指定不同的菜单命令。利用这些命令用户可以对地图进行放大、缩小、漫游、选择等。具体内容请参考Mapbasic的帮助文件。如放大、缩小、漫游、信息标注相应的代码为
mapinfo.runmenucommand(1705)
mapinfo.runmenucommand(1706)
mapinfo.runmenucommand(1702)
mapinfo.runmenucommand(1708)

第六步:双击close按钮编写程序的代码,终止Mapinfo:
procedure Button2Click(Sender:Tobject);
begin
Mapinfo:=nul;
End;
3.5 详细设计
3.5.1界面设计
启动系统在splash画面之后,进入学校总体介绍界面,如图14:

图14:学校总体介绍界面

第五章 结束语
本校园地理信息系统实现了一个***大学的地理导航系统。用户可以根据不同的需要浏览到校园的分层图以及相应的位置信息和详细信息。系统采用了模块化的面向对象的设计方法和技术,具有较好的可扩展性。
由于时间和条件的限制,本系统还有许多方面的工作未能完善:首先,系统还有待于实现更多的功能,如最优路径的选择、与学校数据库的连接等;其次,应更充分的利用网络技术,将本系统应用于网上,成为我校的一份完备的介绍材料。
三个多月的毕业设计,我从中受益非浅。通过这次设计,我懂得了一些实际的工程经验。在整个毕业设计期间,我们小组成员均以一个实际的工程要求来要求自己。精心策划,认真设计,细心调试,争取以最快的速度取得最好的效果。
通过这次设计,我学到了一些新的技术。在以往的学习中,又是学习只停留在一知半解、知其然而不知其所以然的水平。这次设计,使得我认真的研究了一些实用的技术,不仅丰富了我的各种技术知识,还使我得到了一些工程经验。
整个毕业设计期间,我和鲁英两人紧密合作,在不懂得地方大家相互探讨、相互研究、相互帮助,使得我们的设计项目得以顺利进行。我深深体会到了团结协作精神的重要性。

参考文献
[1] Delphi 5实务经典,林金霖编著,中国铁道出版社,2000年8月第一版
[2] AutoCAD R14绘图软件使用手册,雷邵辰编著,大连理工大学出版社,1998年10月第一版
[3] 龚伟超,盛翊智,刘海洋,王文龙,一种基于ActiveX和DDE实现MapInfo与Delphi无缝连接的方法,计算机应用研究,2000年第10期
[4] 李响,易虹,OLE AUTOMATION技术及地图窗口的快速实现方法,电脑学习,1999年第4期
[5] MapInfo 6.0应用开发指南,三味工作室编著,人民邮电出版社,2001年1月第一版
[6] MapInfo 5.X使用指南,康讯科技,王瑞民编著,中国铁道出版社,2000年5月第一版
[7] Delphi 5 基础与提高,新智工作室编著,电子工业出版社,2000年3月第一版
[8] 何晶,陈西宏,吕辉,利用OLE自动化技术实现MapInfo与VC++的集成,计算机应用研究,2000年第10期
[9] 王小江,王一平,方创辉,利用MapInfo地图窗口开发Delphi应用程序,现代电子技术,1999年第2期
[10] 张凡,吕汉兴,使用MapX组件实现地理图形与数据库的结合,计算机应用研究,2000年第10期

猜你喜欢

转载自blog.csdn.net/ambiguous__/article/details/130776676