1 / 55

实 习 七 总 结 任务与目标

实 习 七 总 结 任务与目标. 江苏省人口专题地图 若干 江苏省人口统计图. 必要的准备工作. 检查乡镇数据错误:重复数据、张冠李戴数据 通过 SQL 查询获得县市人口统计数据,作为县市分区统计地图的专题数据. 注意事项. 表示方法的选择要科学 图面视觉要美观 结果保存为工作空间. 第五章 GIS 产品开发. GIS 产品开发的一般步骤 MapBasic 编程设计. 第一节 GIS 产品开发的一般步骤. GIS 产品开发可以分为四个主要步骤:. 前期准备阶段. 系统设计阶段. 系统开发施工阶段. 系统运行及维护阶段. 前期准备阶段.

teresa
Download Presentation

实 习 七 总 结 任务与目标

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实 习 七 总 结任务与目标 • 江苏省人口专题地图若干 • 江苏省人口统计图

  2. 必要的准备工作 • 检查乡镇数据错误:重复数据、张冠李戴数据 • 通过SQL查询获得县市人口统计数据,作为县市分区统计地图的专题数据

  3. 注意事项 • 表示方法的选择要科学 • 图面视觉要美观 • 结果保存为工作空间

  4. 第五章 GIS产品开发 GIS产品开发的一般步骤 MapBasic编程设计

  5. 第一节 GIS产品开发的一般步骤 GIS产品开发可以分为四个主要步骤: 前期准备阶段 系统设计阶段 系统开发施工阶段 系统运行及维护阶段

  6. 前期准备阶段 • 立项 • 调研 • 可行性分析:经济、技术、法律、用户 • 用户需求分析 • 可利用资源、开发成本、开发进度、预期效益评估 • 制定开发计划

  7. 系统设计阶段 • 系统设计是GIS工程的技术核心 • 总体设计 / 概要设计 • 详细设计 对概要设计中每个模块要完成的工作进行具体的描述 • 提供设计说明书

  8. 系统开发施工阶段 • 数据库的建立 • 软件开发 • 试运行、测试、调整 • 撰写产品使用说明书

  9. 系统运行及维护阶段 • 产品投入正式使用

  10. MapBasic编程设计 • 程序设计的一般规则 • MapBasic 基础 • MapBasic 菜单设计 • MapBasic 对话框设计 • MapBasic 按钮条设计 • 窗口 用户界面主要内容

  11. 程序设计的一般规则 • 源程序文档化 命名-名副其实 注释-清楚明了 视觉-层次分明 • 数据说明规范化 • 语句结构简单、直观

  12. 第二节 MapBasic 基础 • MapBasic 主要特色 • MapBasic 开发环境 • MapBasic 语言结构

  13. MapBasic语言结构 • 程序结构 • 变量 • Define及Include语句 • 表达式 • 流程控制 • 过程

  14. 变 量 • 变量的概念:在程序运行过程中将要发生变化的量 • 变量命名规则 • 变量类型 • 变量的定义

  15. MapBasic开发环境 • MapBasic程序编辑(编辑器) 生成后缀名为mb的文件,其大小限制为64K。 • MapBasic程序编译(编译器) 生成后缀名为mbx的可执行文件 • 连接多个模块成一个项目(链接器) • 联机帮助

  16. MapBasic主要特色 • 功能强大,MapBasic提供了380多种函数和命令语句(联机帮助)。 • 与其他应用程序链接 • 扩展MapInfo功能,定制MapInfo的界面 • 具有更强大的数据存取功能 • 一种类Basic语言,简单易学 MapBasic在线帮助 MapInfo的MapBasic交互命令窗口

  17. Define 与Include语句 • Define语句让你可以定义一个容易记忆的标识符,在编译时这个标识符被它的实际值所替代。 语法:Define identifier definition • Include语句:用以说明某文本文件为MapBasic程序的一部分。程序编译时,该文本文件的全部内容将被全部插入到程序源文件中。 语法:Include "filename"

  18. Mapbasic支持的变量类型 • SmallInt 整型(2个字节)(-32767至+32767) • Integer 整型(4个字节) (-2147483647 至+2147483647) • Float 浮点型(8个字节) • String 可变长字符串(最多可有32767个字符) • String*length 固定长字符串(最多可有 32767个字符) • Logical 逻辑型(TRUE或FALSE) • Date 日期型(MM/DD/YYYY) • Object 图形对象

  19. MapBasic对各种变量的声明 • Global name as string(全局变量) • Dim x,y as float(局部变量) n as integer start_date(10) as date • Redim(扩充数组变量的长度) • Type…End Type(用户数据类型) • Undim x,y

  20. 变量命名规则 • 每个变量名最多可以包含31个字符,可以包含字母、数字及多种符号 • 变量名不能含有空格 • 变量名不可以用数字开头,必须以字母、_、~ 号开头 • 可以包含$ , % , & , ! , # , and @,但只能作为结束字符 • Mapbasic的关键字不能作为变量名:add,alter,call,dim,do,global,get,set……

  21. 表达式 表示若干常量、变量及函数之关系的式子 • 数学运算符:+、-、*、/、\、mod、^等 • 字符串运算符+(&)、Like等 • 日期运算符:+、- • 比较运算符=、<>、<、>=、Between…And…等 • 逻辑运算符And、Or 、Not 等 • 地理运算符(图形操作符):

  22. 图形操作符 • Contains第一个对象包含第二个对象的中心 • Contain Part第一个对象包含第二个对象的一部分 • Contain Entire第一个对象包含整个第二个对象 • Within第一个对象的中心在第二个对象内 • Partly Within第一个对象的一部分在第二个对象内 • Entirely Within第一个对象的完全在第二个对象内 • Intersects两个对象在某处相交

  23. 流 程 控 制 • 循环语句: 1. For…(Exit For)...Next 2. Do…Loop 3. While…Wend • 分支语句: 1. If…Then 2. Do Case 3. Goto • 其它流程控制语句: 1. End Program 2. Terminate Application 3. End Mapinfo

  24. While…Wend语句 While condition statement_list Wend

  25. Do……Loop语句 语法一 Do statement_list Loop [ { Until | While } condition ] 语法二 Do [ { Until | While } condition ] statement_list Loop

  26. 过 程 • 定义一个过程 • Declare sub • sub…End Sub • 调用过程 • Call • 退出过程 • Exit Sub • 主过程 • Main

  27. 过 程 示 例 declare sub main declare sub report_sub sub main Alter Menu id 3 'id 3 = "Query" Add "Weekly Report" Calling report_sub end sub sub report_sub Note " Welcome to Report!" end sub

  28. For…Next 与If…Then 语句 Open Table applpath+"world" as world dim nrows,n as integer dim Max_pop,Min_pop as float Max_pop=0 Min_pop=2000000000 nrows=tableinfo(world,tab_info_nrows) for n=1 to nrows fetch rec n from world if Max_pop<world.pop_1994 then Max_pop=world.pop_1994 else if Min_pop>world.pop_1994 then Min_pop=world.pop_1994 end if end if next

  29. 主过程定义 程 序 结 构 Sub Main Dim var_name As var_type other statements End Sub Sub sub_proc Dim … other statements End Sub Function fname Dim … other statements End Function Include "filename“ Declare sub sub_proc Declare Function fname Define identifier definition Global var_name As var_type Dim var_name As var_type 其它 过程定义 全局级声明 自定义函数

  30. Do Case 语句 do case commandinfo(CMD_INFO_MENUITEM) case 1 select * from world where continent="asia"into 亚洲 map from 亚洲 max case 2 select * from world where continent="africa" into 非洲 map from 非洲 max end case

  31. 第三节 MapBasic 菜单设计 一.事件驱动模式 1. 鼠标点击等 ——产生事件 例:当用户选择了一个菜单项时,我们说用户已经产生了一个菜单选择事件(Menu choose event);而当用户关闭了一个窗口时,我们说用户产生一个窗口关闭事件 2.执行事件处理程序 ——事件被驱动 例:若用户产生一个菜单选择事件,应用程序可能需要显示一个对话框; 若用户产生一个窗口关闭事件,应用程序可能需要对一个菜单项灰化或隐藏整个菜单。

  32. 二.菜单术语 Menu Bar Menu Menu Item

  33. 三、 编辑菜单条(Menu Bar) 1.创建菜单条 create menu bar as "分类查询", "条件查询", "分类统计", "统计图", "专题地图" 2.在菜单条上添加一个菜单 Alter Menu bar Add " maps" 3.在菜单条上删除菜单 Alter Menu Bar Remove " help" 4.恢复MapInfo原菜单条 Create Menu Bar as Default

  34. 四、菜单(Menu)编辑 1.创建菜单 Create Menu " maps" As "Layer Control" Calling 801 2.添加菜单项 Alter Menu " table" Add "Color Coded Maps " Calling 307 3.删除菜单项 Alter Menu id 1 Remove 104 4.改变菜单项状态 Alter Menu Item 1610 text "目标"

  35. 第四节 MapBasic 对话框设计 一、 MapInfo 对话框形式 二、 对话框语法 三、 对话框控件类型 四、 对话框变量传递

  36. 二 、对话框语法 Dialog 语句 Dialog [ Title title ] [ Width w ] [ Height h ] [ Position x , y ] [ Calling handler ] Control control_clause [ Control control_clause . . . ]

  37. Dialog Title "根据地块类型查找" Control StaticText Title "请输入地块类型:" Control EditText Into s_LandType Control OkButton Title "查找" Position 30,30 Control CancelButton Title "取消" Position 90,30

  38. 三、对话框控件类型 • 命令按钮(Button)。包括一般命令按钮和OK按扭、Cancel按钮。它是最普通的对话框控件,每个对话框都至少有一个命令按钮。通过命令按钮可以让完成某一操作。 • 静态文本框(StaticText)。通常提供一些文字说明,给用户提示,是一个非交互式控件。 • 编辑文本框(EditText)。让用户直接在此区域输入一些信息。

  39. 单选按钮集(RadioGroup)。用来显示选项,每次只能选择一组选项中的一个,也就是说,当用户选择了某一选项,在该组的其它选项将自动失效。单选按钮集(RadioGroup)。用来显示选项,每次只能选择一组选项中的一个,也就是说,当用户选择了某一选项,在该组的其它选项将自动失效。 • 组合框(GroupBox)。将完成某一功能的按钮用矩形框圈起来,并用文字加以描述,只是起一个分隔的作用。 • 检查框(CheckBox)。通常用来提供Yes/No或True/False选项,可以用检查框来提供多项选择,从而在其中选择一项或多项。

  40. 列表框(ListBox)和多项列表框 (MultiListBox)。通常提供一组信息,让用 户选择其中的一项或者多项。 • 弹出式按钮(PopupMenu)。 是一个右边带下箭头的按钮,当用户单击按钮时,将弹出一个文本列表,供用户选择。 • 线型、填充图案、符号、字体选择按钮。 MapInfo为图形对象专门提供的几个按钮,以便用户选择所需的图文式样(线型、填充图案、符号和字体),供绘图之用。

  41. GroupBox BrushPicker penPicker StaticText CheckBox EditText RadioGroup Button

  42. Popupmenu Listbox

  43. 请看示例程序 Prog11.mb

  44. 四、 对话框变量传递 Into s_LandType ReadControlValue()函数 If CommandInfo(CMD_INFO_DLG_OK) Then Call subSeach(s_LandType) End If Control OkButton Title “查找” Position 30,30 Calling OkHandler

  45. Sub SearchDialog Dim s_LandType As String … Dialog Title “根据地块类型查找” Control StaticText Title “请输入地块类型:” Control EditText Into s_LandType ID 12 Control OkButton Title “查找” Position 30,30 Calling OkHandler Control CancelButton Title “取消” Position 90,30

  46. If CommandInfo(CMD_INFO_DLG_OK) Then Call subSeach(s_LandType) End If End Sub Sub OkHandler If ReadControlValue(12)=”” Then Note “请在编辑文本框中输入一地块类型!” Dialog Preserve End If End Sub

  47. 第五节 MapBasic 按钮条设计 一、 按钮条类型 二、 创建按钮条 三、 改动按钮条

  48. 一、按钮条类型 • 触发式按钮(PushButton),当用户单击一个触发式按钮时,按钮会弹回来,执行相应的处理程序。例如:图层控制按钮。 • 开关式按钮(ToggleButton),当用户单开关式按钮时,按钮变成两种状态的一种,按下或没按下。例如:图例窗口显示/隐藏按钮。 • 工具按钮(ToolButton),当用户单击工具按钮时,一个工具将处于激活状态,并将始终保持这种状态直到用户选择了另外一个工具。例如:放大工具处于激活状态,并且用户在地图窗口、浏览窗口或布局窗口单击时,才会作出响应。

  49. 二、 创建按钮条 Create ButtonPad "Utils" As PushButton HelpMsg “显示查询对话框”Calling button_sub_proc Icon MI_ICON_ZOOM_QUESTION ToolButton HelpMsg “新画一条路线”Calling tool_sub_proc Icon MI_ICON_CROSSHAIR DrawMode DM_CUSTOM_LINE

More Related