第五章地理信息系统-MapBasic
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Add "Weekly Report"
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
Create Table Towns ( townname Char(30), population SmallInt, median_income Decimal(9,2) )
Create Map For table Towns
2. 打开表 语法: Open Table 表 [ As 别名 ] [ Interactive ]
Open Table “country_col" As countries Interactive Map From countries
3. 关闭表
语法: Close Table 表 [ Interactive ]
Close Table Selection 4. 删除表 语法: Drop Table 表
过
程
定义一个过程
Declare sub sub…End Sub
调用过程
Call
退出过程
Exit Sub
主过程
Main
过 程 示 例
declare sub main declare sub report_sub sub main Alter Menu id 3 Calling report_sub end sub sub report_sub Note " Welcome to Report!" end sub 'id 3 = "Query"
[ Where
RowID =
行号 ]
Select * from countries where CentroidY(obj)>0 Area(obj, "sq km") > 5000000 into Selection
物流信息管理
大连海事大学
第五章 地理信息系统
创建MapBasic程序
本节主要介绍创建、调试、运行MapBasic程序的方法。
创建MapBasic程序的一般过程
在MapInfo窗口中显示一个对话框,内容为“Welcome to MapBasic”。 实现方法如下: ① 在MapBasic中新建一个程序窗口。如图8-4 所示。
Define 与Include语句
Define语句让你可以定义一个容易记忆的标识符,在编译时这个 标识符被它的实际值所替代。 Include语句:用以说明某文本文件为MapBasic程序的一部分。程 序编译时,该文本文件的全部内容将被全部插入到程序源文件中 。
语法:Define identifier definition
Date
Object
日期型(MM/DD/YYYY)
图形对象
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
变量类型 变量的定义
MapBasic开发环境
MapBasic程序编辑(编辑器)
生成后缀名为mb的文件,其大小限制为64K。
MapBasic程序编译(编译器) 生成后缀名为mbx的可执行文件
连接多个模块成一个项目(链接器)
联机帮助
MapBasic主要特色
功能强大,MapBasic提供了380多种函数和命令语句(联机帮助) 。 与其他应用程序链接 扩展MapInfo功能,定制MapInfo的界面 具有更强大的数据存取功能 一种类Basic语言,简单易学 MapBasic在线帮助 MapInfo的MapBasic交互命令窗口
MapBasic的表操作
1. 创建新表 语法: Create Table ( column 表 字段数据类型 保存位置 ] | [ , . . . ] )
[ File
[ { Type NATIVE
Type DBF [ CharSet
Type Access Database
char_set ]Table clients
5. 查询表 语法: Select 表达式列表 From 表1,表2, ... [ Where 表达式条件 ] 结果表 ]
[ Into
[ Group By [ Order By
字段 ] 字段 ]
Select * from countries where CentroidY(obj)>0 and Area(obj, "sq km") > 5000000 into Selection Browse * From Selection
Create Table BigCountries(Name Char(10))
and
Create Map For BigCountries
Insert Into BigCountries(obj) Select obj from Selection Map From BigCountries
6. 修改表数据 Update语句 语法: Update 表 Set 字段 = 表达式 [, 字段 = 表达式, ...]
5. 插入表数据 Insert语句 语法:
Insert Into 表
{
[
( 字段 )
]
Select 字段 From 表}
Values (字段表达式) 或
Select * from countries where CentroidY(obj)>0 Area(obj, "sq km") > 5000000 into Selection
流 程 控
制
循环语句: 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
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
主过程定义
Define identifier definition
Global var_name As var_type
Dim var_name As var_type
全局级声明
自定义函数
Function fname Dim … other statements End Function
Do Case 语句
语法:Include "filename"
Mapbasic支持的变量类型
SmallInt Integer Float String String*length Logical
整型(2个字节)(-32767至+32767) 整型(4个字节) (-2147483647 至+2147483647) 浮点型(8个字节) 可变长字符串(最多可有32767个字符) 固定长字符串(最多可有32767个字符) 逻辑型(TRUE或FALSE)
表达式
表示若干常量、变量及函数之关系的式子
数学运算符:+、-、*、/、\、mod、^等
字符串运算符+(&)、Like等
日期运算符:+、- 比较运算符=、<>、<、>=、Between…And…等
逻辑运算符And、Or 、Not 等
地理运算符(图形操作符):
图形操作符
includefilenamemapbasic支持的变量类型smallint整型2个字节32767至32767integer整型4个字节2147483647至2147483647float浮点型8个字节string可变长字符串最多可有32767个字符stringlength固定长字符串最多可有32767个字符logical逻辑型true或falsedate日期型mmddyyyyobject图形对象mapbasic对各种变量的声明globalnameintegerstartdate10typeendtype用户数据类型每个变量名最多可以包含31个字符可以包含字母数字及多种符号变量名不可以用数字开头必须以字母号开头mapbasic的关键字不能作为变量名
② 在空白窗口中输入程序语句。例如,输入一
个“Note ”Welcome to MapBasic“”。该语句可以在 MapInfo中产生一个含有一个简单消息的对话框。
图8-4 新建程序窗口
图8-5 保存程序菜单
③ 保存该程序。选择“File”→“Save”,将
文件保存起来。如图8-5所示。 ④ 编译程序。选择“Project”→“Compile
程
序
结
构
Include "filename“
Declare sub sub_proc
Declare Function fname
其它 过程定义
Sub Main Dim var_name As var_type other statements End Sub Sub sub_proc Dim … other statements End Sub
Contains Contain Part Contain Entire Within Partly Within Entirely Within Intersects
第一个对象包含第二个对象的中心 第一个对象包含第二个对象的一部分 第一个对象包含整个第二个对象 第一个对象的中心在第二个对象内 第一个对象的一部分在第二个对象内 第一个对象的完全在第二个对象内 两个对象在某处相交
变量命名规则
每个变量名最多可以包含31个字符,可以包含字母、数字及多种 符号
变量名不能含有空格
变量名不可以用数字开头,必须以字母、_、~ 号开头 可以包含$ , % , & , ! , # , and @,但只能作为结束字符 Mapbasic的关键字不能作为变量名: add,alter,call,dim,do,global,get,set……
Current File”编译当前文件。如图8-6所示。
系统会根据语法检查程序中是否存在错误。 若无误,程序会显示编译正确的对话框。如
图8-7所示。
图8-6 编译程序菜单
图8-7 编译正确对话框
⑤ 运行程序。选择“Project”→“Run”运 行程序。如图8-8所示。 运行结果显示在MapInfo窗口中。如图 8-9所示。
图8-8 运行程序菜单
图8-9 运行结果
1. MapBasic程序编辑
〈Ctrl〉+〈N〉:创建一个新文件。
〈Ctrl〉+〈O〉:打开一个已有文件。 〈Ctrl〉+〈C〉:复制。
〈Ctrl〉+〈V〉:粘贴。
〈Ctrl〉+〈X〉:剪切。 〈Ctrl〉+〈A〉:全选。
〈Ctrl〉+〈K〉:编译。
〈Ctrl〉+〈U〉:运行。
While…Wend语句
While condition
statement_list
Wend
Do……Loop语句
语法一
Do
statement_list Loop [ { Until | While } condition ] 语法二 Do Loop [ { Until | While } condition ] statement_list
MapBasic 基础
MapBasic 主要特色 MapBasic 开发环境
MapBasic 语言结构
MapBasic语言结构
程序结构 变量 Define及Include语句 表达式
流程控制
过程
变
量
变量的概念:在程序运行过程中将要发生变化的量
变量命名规则
2. MapBasic程序编译和运行
图8-12 编译出错
MapBasic编程设计
程序设计的一般规则
MapBasic 基础
MapBasic 菜单设计 MapBasic 对话框设计
MapBasic 按钮条设计
窗口
用户界面 主要内容
程序设计的一般规则
源程序文档化 命名-名副其实 注释-清楚明了 视觉-层次分明 数据说明规范化 语句结构简单、直观