为了方便用户开发满足自己专业需要的地理信息系统,各大地理信息系统厂商在推出基础地理信息系统平台的同时,一般都提供专门的语言,例如MapInfo公司的MapBasic、RSI公司的IDL、ESRI公司的AVENUE等。\r\n\r\n 本书以循序渐进的方式,通过大量的实例介绍如何使用MapBasic和IDL两种语言进行地理信息系统二次开发。第1部分主要介绍如何利用MapBasic语言创建和使用用户界面元素、控制地图对象、管理工作表、操作文件、选择和查询地图对象以及集成MapInfo地图;第2部分则介绍如何利用IDL进行图形图像处理、如何开发具有用户图形界面的应用程序等。在介绍每种语言时,首先从基本概念开始,然后由浅入深地介绍如何实现地图显示及地理计算方法。\r\n\r\n 本书适用于政府、企业相关部门的GIS研究和开发人员,也适用于高等院校地理学、地理信息系统、房地产、环境科学、资源与城乡规划管理、区域经济学等专业的学生参考与学习,本书还适合作为各种GIS培训学员的学习教材与参考书。\r\n
\r\n
第1部分 使用MapBasic开发GIS \r\n\r\n 第1章 MapBasic开发环境 \r\n\r\n 1. 1 MapInfo相关技术 \r\n\r\n 1. 1. 1 MapInfo公司及其产品 \r\n\r\n 1. 1. 2 MapInfo空间数据的拓扑关系模型 \r\n\r\n 1. 1. 3 MapInfo的技术特点 \r\n\r\n 1. 1. 4 MapInfo的数据组织 \r\n\r\n 1. 2 MapBasic概述 \r\n\r\n 1. 2. 1 MapBasic的特点 \r\n\r\n 1. 2. 2 MapBasic的开发环境 \r\n\r\n 1. 3 MapBasic开发过程 \r\n\r\n 1. 3. 1 创建第一个MapBasic应用程序 \r\n\r\n 1. 3. 2 编辑MapBasic程序 \r\n\r\n 1. 3. 3 编译和链接MapBasic程序 \r\n\r\n 1. 4 创建多个模块的项目 \r\n\r\n 1. 4. 1 创建项目文件 \r\n\r\n 1. 4. 2 编译和链接项目文件 \r\n\r\n 1. 5 调试和运行MapBasic程序 \r\n\r\n 1. 5. 1 错误类型 \r\n\r\n 1. 5. 2 MapBasic程序的调试 \r\n\r\n 1. 5. 3 错误的捕获 \r\n\r\n \r\n\r\n 第2章 MapBasic语言基础 \r\n\r\n 2. 1 MapBasic的基本语法规则 \r\n\r\n 2. 1. 1 标识符 \r\n\r\n 2. 1. 2 运算符 \r\n\r\n 2. 1. 3 书写规则 \r\n\r\n 2. 2 常量. 变量和数据类型 \r\n\r\n 2. 2. 1 常量 \r\n\r\n 2. 2. 2 变量 \r\n\r\n 2. 2. 3 数据类型 \r\n\r\n 2. 3 程序控制语句 \r\n\r\n 2. 3. 1 循环语句 \r\n\r\n 2. 3. 2 选择语句 \r\n\r\n 2. 3. 3 其他流程控制语句 \r\n\r\n 2. 4 过程 \r\n\r\n 2. 4, 1 主过程 \r\n\r\n 2. 4. 2 子过程 \r\n\r\n 2. 4. 3 使用过程 \r\n\r\n 2. 4. 4 向过程传递参数 \r\n\r\n 2. 5 函数 \r\n\r\n 2. 5. 1 函数的声明. 定义与特点 \r\n\r\n 2. 5. 2 递归函数 \r\n\r\n 2. 5. 3 Define与Include语句 \r\n\r\n 2. 6 MapBasic中的常用函数 \r\n\r\n 2. 6. 1 数学函数 \r\n\r\n 2. 6. 2 日期函数 \r\n\r\n 2. 6. 3 字符串函数 \r\n\r\n 2. 6. 4 返回地理计算的函数 \r\n\r\n 2. 6. 5 返回对象的函数 \r\n\r\n 2. 7 输出与显示 \r\n\r\n 2. 7. 1 打印窗口内容 \r\n\r\n 2. 7. 2 在消息窗口中显示文本 \r\n\r\n 2. 7. 3 保存窗口 \r\n\r\n \r\n\r\n 第3章 用户界面设计 \r\n\r\n 3. 1 设计菜单 \r\n\r\n 3. 1. 1 菜单的基本元素 \r\n\r\n 3. 1. 2 增加菜单项 \r\n\r\n 3. 1. 3 删除已有菜单项 \r\n\r\n 3. 1. 4 创建新的菜单 \r\n\r\n 3. 1. 5 修改菜单项 \r\n\r\n 3. 1. 6 重新定义菜单栏 \r\n\r\n 3. 1. 7 定义快捷键和热键 \r\n\r\n 3. 2 设计标推对话框 \r\n\r\n 3. 2. 1 确认对话框 \r\n\r\n 3. 2. 2 打开文件对话框 \r\n\r\n 3. 3 设计自定义对话框 \r\n\r\n 3. 3. 1 创建用户对话框 \r\n\r\n 3. 3. 2 控件的位置和大小 \r\n\r\n 3. 3. 3 控件类型 \r\n\r\n 3. 4 设计窗口 \r\n\r\n 3. 4. 1 指定窗口的尺寸和位置 \r\n\r\n 3. 4. 2 地图窗口 \r\n\r\n 3. 4. 3 浏览窗口 \r\n\r\n 3. 4. 4 统计窗口 \r\n\r\n 3. 4. 5 信息窗口 \r\n\r\n 3. 4. 6 重新设置窗口属性 \r\n\r\n 3. 4. 7 设置布局窗口 \r\n\r\n 3. 5 设计工具栏 \r\n\r\n 3. 5. 1 不同类型的按钮 \r\n\r\n 3. 5. 2 创建和修改工具栏 \r\n\r\n 3. 5. 3 获取用户选择的信息 \r\n\r\n 3. 5. 4 综合使用工具栏实例 \r\n\r\n 3. 6 自动运行MapBasic应用程序 \r\n\r\n \r\n\r\n 第4章 控制地图图层. 窗口与地图对象 \r\n\r\n 4. 1 地图图层的处理 \r\n\r\n 4. 1. 1 打开地图窗口 \r\n\r\n 4. 1. 2 增加图层 \r\n\r\n 4. 1. 3 增加不同投影的图层 \r\n\r\n 4. 1. 4 使用活动图层 \r\n\r\n 4. 1. 5 删除地图图层 \r\n\r\n 4. 2 标注图层 \r\n\r\n 4. 2. 1 自动标注图层 \r\n\r\n 4. 2. 2 查询图层标注 \r\n\r\n 4. 3 获取地图窗口和图层的设置信息 \r\n\r\n 4. 3. 1 获取地图窗口的设置信息 \r\n\r\n 4. 3. 2 获取图层的设置信息 \r\n\r\n 4. 4 改变地图窗口和图层的设置 \r\n\r\n 4. 4. 1 改变地图的当前视图 \r\n\r\n 4. 4. 2 改变整个地图窗口的属性 \r\n\r\n 4. 4. 3 改变图层顺序 \r\n\r\n 4. 4. 4 改变图层属性 \r\n\r\n 4. 4. 5 改变图层的标注对象属性 \r\n\r\n 4. 5 创建和修改专题图 \r\n\r\n 4. 5. 1 创建范围专题图 \r\n\r\n 4. 5. 2 创建独立值专题图 \r\n\r\n 4. 5. 3 创建点密度专题图 \r\n\r\n 4. 5. 4 创建等级符号专题图 \r\n\r\n 4. 5. 5 创建直方图专题图 \r\n\r\n 4. 5. 6 创建饼图专题图 \r\n\r\n 4. 5. 7 修改专题图 \r\n\r\n 4. 5. 8 插值形成栅格图层 \r\n\r\n 4. 6 创建地图对象 \r\n\r\n 4. 6. 1 对象概述 \r\n\r\n 4. 6. 2 使用对象列 \r\n\r\n 4. 6. 3 创建对象的语句 \r\n\r\n 4. 6. 4 创建对象的函数 \r\n\r\n 4. 6. 5 高级操作 \r\n\r\n 4. 6. 6 在表中保存对象 \r\n\r\n 4. 7 修改地图对象 \r\n\r\n 4. 7. 1 修改对象的过程 \r\n\r\n 4. 7. 2 修改对象的属性 \r\n\r\n 4. 7. 3 改变对象的类型 \r\n\r\n 4. 7. 4 设置目标对象 \r\n\r\n 4. 7. 5 擦除对象 \r\n\r\n 4. 7. 6 合并对象 \r\n\r\n 4. 7. 7 分割对象 \r\n\r\n 4. 7. 8 在交叉点增加节点 \r\n\r\n 4. 8 查询地图对象 \r\n\r\n 4. 8. 1 空间量算 \r\n\r\n 4. 8. 2 坐标量算 \r\n\r\n 4. 8. 3 设置坐标系统 \r\n\r\n 4. 9 处理对象样式 \r\n\r\n 4. 9. 1 查询当前样式 \r\n\r\n 4. 9. 2 查询样式属性 \r\n\r\n 4. 9. 3 创建样式 \r\n\r\n \r\n\r\n 第5章 管理工作表 \r\n\r\n 5. 1 操作工作表 \r\n\r\n 5. 1. 1 打开普通表 \r\n\r\n 5. 1. 2 打开外部文件 \r\n\r\n 5. 1. 3 关闭表 \r\n\r\n 5. 1. 4 创建新表 \r\n\r\n 5. 1. 5 紧缩表 \r\n\r\n 5. 1. 6 表的删除与重命名 \r\n\r\n 5. 2 操作表中字段 \r\n\r\n 5. 2. 1. 修改表结构 \r\n\r\n 5. 2. 2 增加列数据 \r\n\r\n 5. 3 操作表中记录 \r\n\r\n 5. 3. 1 访问表中指定的行和列 \r\n\r\n 5. 3. 2 删除记录 \r\n\r\n 5. 3. 3 保存对表的编辑 \r\n\r\n 5. 3. 4 放弃对表的修改 \r\n\r\n 5. 4 操作表属性 \r\n\r\n 5. 4. 1 获取表属性 \r\n\r\n 5. 4. 2 设置表属性 \r\n\r\n 5. 5 操作元数据 \r\n\r\n 5. 5. 1 创建. 修改和删除元数据 \r\n\r\n 5. 5. 2 读取元数据 \r\n\r\n 5. 6 操作无缝图层 \r\n\r\n 5. 6. 1 创建无缝图层 \r\n\r\n 5. 6. 2 访问无缝图层中的基表 \r\n\r\n 5. 7 导入与导出表 \r\n\r\n 5. 7. 1 导入表 \r\n\r\n 5. 7. 2 导出表 \r\n\r\n 5. 8 连接远程数据 \r\n\r\n 5. 8. 1 获取可使用的数据源 \r\n\r\n 5. 8. 2 连接和断开数据服务器 \r\n\r\n 5. 8. 3 执行SQL命令 \r\n\r\n \r\n\r\n 第6章 文件的操作 \r\n\r\n 6. 1 文件输入/输出基本概念 \r\n\r\n 6. 2 打开. 关闭和复制文件 \r\n\r\n 6. 2. 1 打开文件 \r\n\r\n 6. 2. 2 关闭文件 \r\n\r\n 6. 2. 3 复制文件 \r\n\r\n 6. 3 顺序文件的读写 \r\n\r\n 6. 3. 1 读顺序文件 \r\n\r\n 6. 3. 2 写顺序文件 \r\n\r\n 6. 4 随机文件和二进制文件的读写 \r\n\r\n 6. 4. 1 读随机文件和二进制文件 \r\n\r\n 6. 4. 2 写随机文件和二进制文件 \r\n\r\n 6. 5 判断文件的状态 \r\n\r\n 6. 5. 1 是否到达文件结尾 \r\n\r\n 6. 5. 2 文件长度 \r\n\r\n 6. 5. 3 当前文件指针的位置 \r\n\r\n 6. 5. 4 文件属性 \r\n\r\n 6. 5. 5 文件是否存在 \r\n\r\n \r\n\r\n 第7章 选择和查询 \r\n\r\n 7. 1 从表中选择数据 \r\n\r\n 7. 1. 1 Select子句 \r\n\r\n 7. 1. 2 From子句 \r\n\r\n 7. 1. 3 Where子句 \r\n\r\n 7. 1. 4 Into子句 \r\n\r\n 7. 1. 5 Group By子句 \r\n\r\n 7. 1. 6 Order By子句 \r\n\r\n 7. 1. 7 用于选择进行选择 \r\n\r\n 7. 1. 8 使用地图比较运算符 \r\n\r\n 7. 1. 9 选择性能 \r\n\r\n 7. 1. 10 查询选择表 \r\n\r\n 7. 2 通过地址查询地图对象 \r\n\r\n 7. 2. 1 初始化地址查询 \r\n\r\n 7. 2. 2 执行地址查询并获取查询结果 \r\n\r\n 7. 3 通过位置查询地图对象 \r\n\r\n 7. 3. 1 点查询 \r\n\r\n 7. 3. 2 矩形查询 \r\n\r\n 7. 3. 3 查询结果 \r\n\r\n \r\n\r\n 第8章 集成地图 \r\n\r\n 8. 1 集成地图开发概述 \r\n\r\n 8. 1. 1 集成地图开发实现技术 \r\n\r\n 8. 1. 2 在Visual Baisc中集成地图 \r\n\r\n 8. 1. 3 在C++Builder中集成地图 \r\n\r\n 8. 2 集成地图开发过程 \r\n\r\n 8. 2. 1 启动MapInfo \r\n\r\n 8. 2. 2 向MapInfo发送命令 \r\n\r\n 8. 2. 3 从MapInfo中查询数据 \r\n\r\n 8. 2. 4 重父化MapInfo窗口 \r\n\r\n 8. 2. 5 重父化图例窗口和其他特殊窗口 \r\n\r\n 8. 2. 6 提供改变地图窗口大小的功能 \r\n\r\n 8. 2. 7 集成MapInfo工具按钮 \r\n\r\n 8. 2. 8 自定义MapInfo快捷菜单 \r\n\r\n 8. 2. 9 打印集成窗口 \r\n\r\n 8. 2. 10 检测运行错误 \r\n\r\n 8. 2. 11 终止MapInfo \r\n\r\n 8. 2. 12 在线帮助 \r\n\r\n 8. 3 使用回调从MapInfo中获取信息 \r\n\r\n 8. 3. 1 使用OLE回调的步骤 \r\n\r\n 8. 3. 2 处理回调数据 \r\n\r\n 8. 3. 3 回调的其他方法 \r\n\r\n 8. 4 OLE自动化对象模型 \r\n\r\n 8. 4. 1 Application对象 \r\n\r\n 8. 4, 2 MBApplication集合 \r\n\r\n 8. 4. 3 MBGlobals集合 \r\n\r\n 8. 5 使用Visual C++和MFC集成地图 \r\n\r\n 8. 5. 1 准备工作 \r\n\r\n 8. 5. 2 初始化 \r\n\r\n 8. 5. 3 在视图中加入地图 \r\n\r\n 8. 5. 4 加入工具按钮和处理句柄 \r\n\r\n 8. 5. 5 增加工具栏按钮 \r\n\r\n 8. 5. 6 使用异常处理捕获MapInfo错误 \r\n\r\n 8. 5. 7 支持回调 \r\n\r\n 8. 6 运行外部应用程序 \r\n\r\n 8. 7 使用DDE集成其他应用程序 \r\n\r\n 8. 7. 1 创建DDE对话 \r\n\r\n 8. 7. 2 发送DDE命令 \r\n\r\n 8. 7. 3 通过DDE传值 \r\n\r\n 8. 7. 4 通过DDE获取值 \r\n\r\n 8. 7. 5 关闭DDE对话 \r\n\r\n 8. 7. 6 响应请求 \r\n\r\n \r\n\r\n 第2部分 使用IDL开发GIS \r\n\r\n 第9章 IDL概述 \r\n\r\n 9. 1 IDL主要功能 \r\n\r\n 9. 2 IDI集成开发环境 \r\n\r\n 9. 3 IDL应用程序基础 \r\n\r\n 9. 3. 1 IDL程序的种类 \r\n\r\n 9. 3. 2 过程和函数 \r\n\r\n 9. 4 IDL程序开发过程 \r\n\r\n 9. 4. 1 编写程序代码 \r\n\r\n 9. 4. 2 编译并运行程序 \r\n\r\n \r\n\r\n 第10章 IDL的图形图像处理 \r\n\r\n 10. 1 读写数据 \r\n\r\n 10. 1. 1 导入文本文件数据 \r\n\r\n 10. 1. 2 读写二进制数据 \r\n\r\n 10. 1. 3 保存模板 \r\n\r\n lo. 1. 4 读写图像文件 \r\n\r\n 10. 2 二维坐标图的绘制 \r\n\r\n 10. 3 信号处理 \r\n\r\n 10. 3. 1 创建测试数据集 \r\n\r\n 10. 3. 2 信号的平滑处理 \r\n\r\n 10. 3. 3 频率域滤波 \r\n\r\n 10. 4 图像增强处理 \r\n\r\n 10. 4. 1 读入和显示图像 \r\n\r\n 10. 4. 2 对比增强处理 \r\n\r\n 10. 4. 3 平滑图像 \r\n\r\n 10. 4. 4 锐化图像 \r\n\r\n 10. 5 格网表面和等高线的绘制 \r\n\r\n 10. 5. 1 显示格网表面 \r\n\r\n 10. 5. 2 绘制阴影表面 \r\n\r\n 10. 5. 3 绘制等高线 \r\n\r\n 10. 5. 4 使用SHOW3绘图 \r\n\r\n 10. 6 绘制地图 \r\n\r\n 10. 6. 1 绘制全球地图 \r\n\r\n 10. 6. 2 绘制正射投影 \r\n\r\n 10. 6. 3 绘制部分世界地图 \r\n\r\n 10. 6. 4 标注地图 \r\n\r\n 10. 6. 5 在地图上绘制等高线 \r\n\r\n 10. 6. 6 在地图中加入图像 \r\n\r\n 10. 7 处理不规则格网数据 \r\n\r\n 10. 7. 1 TRIANGULATE过程 \r\n\r\n 10. 7. 2 使用TRIGRID绘制结果 \r\n\r\n 10. 8 动态显示 \r\n\r\n 10. 8. 1 动态显示一系列图像 \r\n\r\n 10. 8. 2 以格网形式动态显示 \r\n\r\n 10. 8. 3 使用XINTERANIMATE动态显示 \r\n\r\n \r\n\r\n 第11章 开发图形界面 \r\n\r\n 11. 1 概述 \r\n\r\n 11. 1. 1 使用GUIBuilder的步骤 \r\n\r\n 11. 1. 2 启动GUIBuilder工具 \r\n\r\n 11. 2 创建应用程序实例 \r\n\r\n 11. 2. 1 为窗体创建菜单 \r\n\r\n 11. 2. 2 创建绘图控件 \r\n\r\n 11. 2. 3 用测试模式运行应用程序 \r\n\r\n 11. 2. 4 生成IDL代码 \r\n\r\n 11. 2. 5 处理事件 \r\n\r\n 11. 2. 6 编译并运行程序 \r\n\r\n 11. 3 创建并使用自定义控件 \r\n\r\n 11. 3. 1 创建自定义控件 \r\n\r\n 11. 3. 2 使用自定义控件 \r\n\r\n \r\n\r\n 第12章 面向对象的图形图像处理 \r\n\r\n 12. 1 面向对象的图形图像概述 \r\n\r\n 12. 1. 1 直接图形图像和面向对象的图形图像的区别 \r\n\r\n 12. 1. 2 如何使用面向对象的图形图像 \r\n\r\n 12. 1. 3 图形图像类库的组成 \r\n\r\n 12. 2 图形处理 \r\n\r\n 12. 2. 1 等高线对象 \r\n\r\n 12. 2. 2 多边形对象 \r\n\r\n 12. 2. 3 折线对象 \r\n\r\n 12. 2. 4 坐标图对象 \r\n\r\n 12. 2. 5 图例对象 \r\n\r\n 12. 3 表面处理 \r\n\r\n 12. 3. 1 表面对象 \r\n\r\n 12. 3. 2 光照对象 \r\n\r\n 12. 4 图像处理 \r\n\r\n 12. 4. 1 图像对象 \r\n\r\n 12. 4. 2 颜色条对 \r\n
\r\n
以计算机为核心的信息处理系统技术是二次世界大战后科技革命的主要标志之一. 在信息的诸多类型中, 与空间相关的信息是十分重要的一类, 人类生存的地球是一个三维空间, 其中的万事万物无不与空间位置相关, 如何利用计算机处理与空间相关的信息是地理信息系统(Geographic Information System, GIS)产生和发展的原动力. GIS起源于20世纪60年代, 它作为有关空间数据管理. 空间信息分析及其传播的计算机系统, 在其40多年的发展历程中已经取得了很大成就, 并广泛地应用于土地利用. 资源管理. 环境监测. 交通运输. 城市规划. 经济建设以及政府各职能部门. 随着计算机技术的不断发展, 计算速度越来越快, 也使得地理信息系统技术的应用领域越来越广泛. 目前, 地理信息系统在理论和应用上都处在一个飞速发展时期. “数字地球”概念的提出, 更进一步推动了作为其技术支撑的GIS的发展. 不管人们将21世纪称为什么世纪, GIS的广泛应用. 普及必将成为新世纪一个重要的特征.
今天, 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的应用开发技能.
地理信息系统(Geographic Information System, 简称GIS)是以地理空间数据库为基础, 在计算机硬件. 软件环境的支持下, 对空间相关数据进行采集. 管理. 操作. 分析. 模拟和显示, 适时提供空间和动态的地理信息, 为决策服务的一类信息系统. 同时, 地理信息系统也是一门综合了经济管理. 运筹学. 计算机科学等内容的, 正在发展的新兴学科. 随着计算机技术的不断发展, 计算速度越来越快, 也使得GIS技术应用领域越来越广, 如测绘. 规划. 电信线路管理. 煤气管道管理. 城市供排水管道管理. 电力输(配)电线路管理. 车辆调度定位管理. 防汛及河流管理等.
现在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全部介绍清楚, 是完全不可能的. 因此, 笔者极力把一些基本概念和一些通用的操作向读者介绍清楚, 使读者学一知十.
在本书的很多地方只给出了引导性的提示或建议, 读者学习了本书后, 除了做大量的练习外, 还应该找一些相关资料作为补充.
由于作者水平. 经验有限, 书中难免存在一些缺点和错误, 希望能得到广大专家和读者的批评和指正.