基本信息
编辑推荐
为了方便用户开发满足自己专业需要的地理信息系统,各大地理信息系统厂商在推出基础地理信息系统平台的同时,一般都提供专门的语言,例如MapInfo公司的MapBasic、RSI公司的IDL、ESRI公司的AVENUE等。
内容简介
计算机书籍
为了方便用户开发满足自己专业需要的地理信息系统,各大地理信息系统厂商在推出基础地理信息系统平台的同时,一般都提供专门的语言,例如MapInfo公司的MapBasic、RSI公司的IDL、ESRI公司的AVENUE等。
本书以循序渐进的方式,通过大量的实例介绍如何使用MapBasic和IDL两种语言进行地理信息系统二次开发。第1部分主要介绍如何利用MapBasic语言创建和使用用户界面元素、控制地图对象、管理工作表、操作文件、选择和查询地图对象以及集成MapInfo地图;第2部分则介绍如何利用IDL进行图形图像处理、如何开发具有用户图形界面的应用程序等。在介绍每种语言时,首先从基本概念开始,然后由浅入深地介绍如何实现地图显示及地理计算方法。
本书适用于政府、企业相关部门的GIS研究和开发人员,也适用于高等院校地理学、地理信息系统、房地产、环境科学、资源与城乡规划管理、区域经济学等专业的学生参考与学习,本书还适合作为各种GIS培训学员的学习教材与参考书。
目录
第1章 mapbasic开发环境
1.1 mapinfo相关技术
1.1.1 mapinfo公司及其产品
1.1.2 mapinfo空间数据的拓扑关系模型
1.1.3 mapinfo的技术特点
1.1.4 mapinfo的数据组织
1.2 mapbasic概述
1.2. 1 mapbasic的特点
1.2.2 mapbasic的开发环境
1.3 mapbasic开发过程
1.3.1 创建第一个mapbasic应用程序
1.3.2 编辑mapbasic程序
1.3.3 编译和链接mapbasic程序
1.4 创建多个模块的项目
1.4.1 创建项目文件
1.4.2 编译和链接项目文件
1.5 调试和运行mapbasic程序
1.5.1 错误类型
1.5.2 mapbasic程序的调试
前言
现在GIS技术能满足各种不同的应用需求,从简单的显示与制图到地理数据的复杂模拟与分析,如网络的追踪分析、数据的三维处理、最佳路径分析、最优化资源分配等。
现在市场上有上千种GIS软件,如Arc/Info、MapInfo、Intergraphic、Idris、MapGIS、CityStar等。虽然GIS软件产品繁多,但是它们不可能解决所有的问题。针对某些具体的专业问题,还必须由用户进行二次开发来解决。为了满足这种需求,各大GIS厂商在推出基础GIS平台的同时,一般都提供专门的语言进行二次开发,例如MapInfo公司的MapBasic、RSI公司的IDL(Interactive Data Language)、ESRI公司的AVENUE等。
本书主要介绍如何利用MapBasic语言和IDL进行地理信息系统的二次开发。MapBasic是MapInfo软件提供的系统开发语言,用户可以用它进行人机界面、地理数据分析等方面的程序编写工作,以实现全用户化的应用集成。IDL是进行二维及多维数据可视化表现和分析及应用开发的理想软件工具。
本书分为两部分。
第1部分包括第1章到第8章,主要介绍MapBasic语言。由于MapBasic是MapInfo产品的一部分,因此熟练掌握和使用MapInfo Professional软件和理解MapInfo相关技术是成功使用MapBasic进行二次开发的关键。因此,第1章首先介绍了与MapInfo相关的一些技术,然后介绍了MapBasic的开发过程。第2章具体介绍了MapBasic语言及其编程方法,目的是让读者能够学会自己应用MapBasic语言进行编程,以解决实际应用问题。对于使用过其他编程语言的读者,特别是对于那些使用过Turbo Basic语言编写程序的读者来说,本章的许多内容并不陌生。对于编程新手来说,在本章可以学习编程基本知识。用户界面是应用程序的重要组成部分。MapBasic提供了创建Maplnft用户界面所需要的全部工具。通过MapBasic,可以为MapInfo创建一个自定义的用户界面。因此在第3章中介绍了如何创建和使用菜单、对话框、窗口、工具栏等用户界面元素。第4章介绍了如何控制地图图层、窗口和地图对象,另外还介绍了如何创建和修改专题图。第5章重点介绍了如何使用MapBasic来管理MapInfo中的工作表。第6章介绍MapBasic对文件的操作。第7章介绍了如何选择和查询地图对象。MapBasic除了在它本身的集成开发环境中开发应用程序之外,还允许用户通过其他语言和开发环境(例如Visual Basic、Visual C++、Borland C++ Builder、Delphi等)来编写应用程序,控制MapInfo窗口。第8章介绍如何在Visual Basic、Borland C++ Builder和Visual C++中集成MapInfo地图。
第2部分包括第9章到第12章的内容,主要介绍了IDL语言。第9章主要介绍IDL的主要功能以及如何在IDL中开发应用程序。IDL的突出功能就是进行图形图像处理。在第10章中首先介绍如何在IDL中读取各种数据,包括文本数据、二进制数据以及影像数据等,然后介绍如何进行二维坐标图、三维坐标图和地图的绘制,以及如何对图形和不规则格网数据进行处理,最后介绍了如何利用IDL各种语句采实现动态效果。IDL为开发Windows图形界面应用程序提供了GUIBuilder工具。GUIBuilder工具是IDL集成开发环境的一部分。
通过GUIBuilder工具,可以交互创建用户界面,然后生成定义这些界面和事件处理句柄的IDL源代码。在第11章主要介绍了利用GUIBuilder工具来开发具有图形用户界面的应用程序。从IDL 5.0版本起,IDL就为开发面向对象的应用程序提供了一系列的工具。IDL的图形图像对象是一种面向对象的类库。在第10章中介绍的图形图像处理都是基于传统的IDL过程和函数来处理的。而在第12章中介绍如何使用IDL提供的面向对象的类库来进行图形图像处理,此外还介绍了IDL图形图像类库的组成以及其中一些重要对象。
笔者深知,要在一本400多页的书中把MapBasic和IDL全部介绍清楚,是完全不可能的。因此,笔者极力把一些基本概念和一些通用的操作向读者介绍清楚,使读者学一知十。
在本书的很多地方只给出了引导性的提示或建议,读者学习了本书后,除了做大量的练习外,还应该找一些相关资料作为补充。
由于作者水平、经验有限,书中难免存在一些缺点和错误,希望能得到广大专家和读者的批评和指正。
序言
今天,GIS已是一个全球拥有数十万从业人员和数十亿美元的产业。世界各国己设计出大量实用化的地理信息系统,常用的GIS软件已达400多种。比较著名的有美国环境系统研究所(ESRI)的 ARC/INFO和 Arc View,澳大利亚 GENASYS公司开发的 GENAMAP,中国地质大学开发的MapGIS,原武汉测绘科技大学开发的GeoStar,北京大学遥感与地理信息系统研究所开发的CityStar等等。
虽然GIS的教学与科研在国外进行得如火如荼,其应用几乎渗透到人们生活的方方面面,但是我国各高校直到最近几年才开始GIS专业人才的培养,例如北京大学城市与环境科学系于1999年才开始招收GIS专业本科生,可见我国GIS人才的严重不足。当前许多从事GIS应用与研究的工作人员并非GIS专业毕业的学生。这不仅制约了GIS技术的应用与发展,更为重要的是相关人员不能在工作中充分利用GIS知识解决实际问题,从而对我国的经济发展产生一定影响。这些人迫切需要掌握GIS基本理论、技术方法、应用经验、GIS项目组织管理与软件开发的方法。近些年未,国内涌现了不少的GIS教材,但是作为其配套的介绍具体GIS软件的实习教程非常少。从而限制了读者对GIS原理、应用的理解,缺乏运用GIS工具解决实际问题的能力。
此外,虽然GIS软件产品繁多,但是由于GIS软件专业性较强,它们不可能解决所有的问题,因此针对某些具体专业问题,还必须由用户进行二次开发来解决。正是为了满足这种需求,各大GIS厂商在推出基础地理信息系统平台的同时,一般都提供专门的语言与二次开发组件方便用户进行二:次开发,例如 Maplnfo公司的 MapBasic、MapX,ESRI公司的AVENUE、MapObjects,以及RSI公司的IDL、IDLDrawWidget等。我国主要有北京超图地理信息技术有限公司的SuperMap。但是介绍这方面知识的书籍廖廖无几。
鉴于上述原因,我们编写了这套丛书,分别为:
《地理信息系统实习教程》
《地理信息系统二次开发教程——组件篇》
《地理信息系统二次开发教程——语言篇》
ANC/INFO是地理信息系统的排头兵,其产品主要运行在工作站上。虽然1996年底,ESRI公司把工作站版的ARC/INFO的全部模块移植到Windows NT上,但是运行速度却实在令人难以恭维。国内外在开设地理信息系统课程时,一般都使用IDRISI作为实习系统。因此,我们在《地理信息系统实习教程》中,以实习的形式,用实际的案例详细介绍了IDRISI地理信息系统的功能及其使用。由于IDMSI系统的文件格式都是公开的,因此在这个简单的系统中,我们直接利用IDRISI的矢量与栅格文件格式,而扩充了遥感数据格式。通过编程实习,读者不但可以更加深入理解GIS的理论,了解GIS的实现过程,而且可以提高GIS的编程能力。
组件式软件技术已经成为当今软件技术的潮流之一,GIS软件的最新版本也提供大量组件,方便用户自己进行二次开发。《地理信息系统二次开发教程——组件篇》首先从总体上介绍了如何进行GIS二次开发、以及组件式GIS的特点及其结构,然后分别介绍了如何使用多种语言(Visual Basic、C++ Builder和Visual C++)和MapObjects与MapX两组件来进行GIS的二次开发。
GIS二次开发的另一种方式是借助于GIS平台提供的开发语言进行应用系统开发。大部分GIS平台提供了可供用户进行二次开发的宏语言,它是一种专门用于该GIS平台的一种开发语言,它有严格的数据类型定义、语法定义,编译后只能在该 GIS平台下运行,如 ESRI的 ArcView提供了 Avenue语言,MapInfo公司研制的 MapInfo Professional提供了 MapBasic语言等等。用户可以利用这些宏语言,以原GIS软件为开发平台,开发出自己的应用程序。
《地理信息系统二次开发教程——语言篇》以大量的实例介绍了如何使用MapBasic和IDL两种语言进行地理信息系统二次开发。在该书中还介绍了集成二次开发。集成二次开发以专业的 GIS平台为基础,以通用软件开发工具,尤其是可视化开发工具(如 C++ Builder、Visual Basic等)为开发平台,进行二者的集成开发。还介绍了如何利用OLE自动化方式或DDE方式启动 GIS工具软件在后台执行,利用回调技术动态获取其运口信息,实现应用程序中的地理信息处理功能。
相信通过这3本书的系统学习,广大规划、设计和管理人员能够更好地利用GIS这个基本工具解决城市管理、区域规划、环境整治、政府决策中的实际问题:地理信息系统及相关专业的学生也会很快掌握GIS的应用开发技能。