ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:50.35KB ,
资源ID:10227752      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10227752.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(GIS制图实习六.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

GIS制图实习六.docx

1、GIS制图实习六实习六 MapBasic入门武汉大学资源与环境科学学院 程雄 王坤一MapBasic编程基础1MapBasic的基本语法规则1MapBasic的注释行:用英文单引号“”来标记注释语句。2程序中可以用大写、小写或混合的方式输入程序。3当一条语句超过一行所允许的长度时,可以把一个语句分成两行或多行书写。4通过Define语句可以定义一个标识符,它等价于一个特殊的值。例如:Define MY_COLOR l6711680Mapbasic.def中用Define语句定义了许多标准MapBasic的标识符。其中包括许多常用的颜色(例如BLACK,WHITE,RED,GREEN,BLUE,

2、 CYAN,MAGENTA和YELLOW) 和其他标识符(例如TRUE,FALSE,RED,GREEN,BLUE和TAB_INF_NAME等),只要在程序开头一般需要输入下语句,就可以任意地使用这些标识符了:Include “mapbasic.def”5Include语句的语法: Include “filename”这里filename是一个包含有MapBasic语句的文本文件。Filename还可以包括一个目录路径。如果没有指定路径,则编译器在当前工作目录寻找该文件,如果没有发现,则编译器又会在MapBasic安装目录下寻找。Mapbasic.def中用Define语句定义了许多标准MapB

3、asic的标识符(例如TRUE,FALSE,RED,GREEN,BLUE和TAB_INF_NAME等)。当开发了越来越多的MgpBasic程序时,会发现某些代码会经常重复使用。就可以写了一个或多个用户函数库(放到一个单独的文本文件中),如果在写的某个MapBasic程序中要使用这些用户函数,可以用Include调用这些用户函数,比如把该文件取名为functs.mb,可以用下面的语句把该函数库合并到程序中:Include “functs.mb”2常量MapBasic的常量有:字符串常量、数值常量、逻辑常量、日期型常量等。(1)字符串常量: 用两个英文双引号括起来表示的,双引号不是字符串的一部分,

4、字符串常量最长可以有65535个字符。(2)数值常量:数值常量又分为整型常数(整型常量)和实型常数(实型常量)。(3)逻辑常量:逻辑常量只有两个值TRUE和FALSE。TRUE为1,FALSE为0。(4)日期型常量: 2003年12月31日可以用两种方法表示。用八位整数“YYYYMMDD”表示,如20031231。也可以用一个字符串表达式“MM/DDYYYY”表示,如12312003。3变量MapBasic的变量分为全局变量和局部变量。全局变量在程序中的任何过程中使用。局部变量只能在定义它的函数或过程中使用。因此,应该尽量使用局部变量。MapBasic关于变量说明及变量赋值的语法规则与其他现代

5、BASIC语言类似。但是,MapBasic比其他BASIC语言支持更多的变量类型。(1)每个变量名必须以字母、下划线“_”或者“”号开头,后面可跟字母、数字、下划线“_”和“#”,变量名最多可以包含31个字符。不能用MapBasic的关键词作为变量名。(2)MapBasic支持以下类型变量,其中包括数值类型、字符类型、对象类型、逻辑型、日期型和样式类型等。MapBasic的变量类型如下:变量类型描述及例子SmallInt范围在-32767 +32767之间的整数,用两个字节存储Integer范围在-2,147,483,647 +2,147,483,647之间的整数,用四个字节存储Float浮点

6、数,用八个字节的IEEE格式存储String变长字符串,最多可有32767个字符String*n定长字符串,n为字符串长度(最多可有32767个字符)Logical逻辑值TRUE或FALSE,用两个字节存放(O为FALSE,非0为TRUE)Date日期型(MM/DD/YYYY),其中两个字节存放年,另两个字节存放月和日Object图形对象,如点(Point)、线(Line)、区域(Region)等Pen线型,如hwypen = MakePen(1,3,BLACK)Brush填充模式,如zbrush = MakeBrush(5,BLUE,WHITE)Font字体,如lbl_font = Make

7、Font(“Helv”,1,20,BLACK,WHITE)Symbol点符号(3)程序中使用的变量都要先声明,然后才能使用,并且要保证声明的类型正确。Dim语句用来声明局部变量。Dim语句的语法形式如下:Dim var_name ,ver_name, As var_type,var_name,ver_name, As var_typeGlobal语句用来声明全局变量,其用法和Dim语句相同。为了便于管理全局变量,可以建立一个定义文件(Globals.def),并在该文件中定义全局变量,然后在程序中用Include语句将全局变量添加到程序中。(4)MapBasic中只能定义一维数组变量,定义数组

8、变量的方法是在变量后面加一对圆括号,圆括号中设定数组长度。如果在定义数组变量时,没有定义大小则不能赋值,必须用ReDim重新定义大小后才能使用。Dim code() As String,I As Integer 定义数组变量Code和整型变量IReDim code(10) As String 定义数组变量Code的大小I=Ubound(code) 获得数组长度10ReDim code(I+10) 数组长度增加到20(5)用Type End Type语句可以定义一个用户数据类型(Custom Date Types)。用户数据类型是一个或多个常规变量类型的组。一般情况下,把Type End Typ

9、e放在程序的开始处。如下例,定义了一个用户数据类型employee,然后把变量manager, staff(10),声明为employee类型,并给变量manager赋值:Type employee name As String title As String id AS IntegerEnd TypeDim manager,staff(10) As employeemanager.name = “Joe”manager.title = “Director of Publications”manager.id = 1112233334表达式表达式是由一个或多个常量、变量、函数、表和运算符组成的

10、式子。表达式即可以简单到用一个常量表达,也可以由多个变量、常量、函数、表和操作符组成。5运算符运算符是作用于一个或多个常量、变量或其他值,从而产生一个结果,它的表达形式可以是一个特殊的字符(如+、*、)、一个词(如:And、Or、Not) 或者是一个词组(如:Contains Part、Entirely Within)。在MapBasic中,运算符报括算术运算符、字符串运算符、日期运算符、比较运算符、逻辑运算符、地理运算符。算术运算符:常用的有:+(加法)、-(减法)、*(乘法)、/(除法)、(整除)、Mod(取余)、(乘方)。字符串运算符:常用的有:+、&、Like。其中:“+”和“&”运算

11、符可以把两个或多个字符串表达式连接成一个更长的字符串表达式。“Like”运算符执行字符串的比较。字符串可以含有通配符“_”,和“%”,其中下划线“_”,表示任意一个字符,而百分号“%”表示任意一个或多个连续字符。日期运算符:常用的有:加号“+”和减号“-”。一个日期型值加上(或减去)一个整数,将返回一个日期型值,表示该日期以后(或之前)的一个日期。两个日期型值相减将返回一个整型值,表示两个日期之间相隔的天数。下面的例子用CurDate()函数确定当前的日期,然后计算出明天的日期tomorrow,一星期后的日期one_week_late以及今天是今年的第几天days_elapsedDim tod

12、ay, tomorrow, next_day As Date,Days_elpsed As IntegertodayCurDate()tomorrow = today+1next_day = today+7days_elapsed = today StringToDate(“1/1”)比较运算符:常用的有:=、=、BetweenAnd比较运算符通过比较两个相同类型的项产生一个逻辑值,TRUE或FASLE。逻辑运算符:逻辑运算符对两个逻辑值进行运算,结果仍产生一个逻辑值。常用的有以下三种: And、Or、Not地理运算符:在MapBasci中,可以使用下列地理运算符对表对象运算,其结果是产生一个

13、逻辑值。运算符 返回TRUE的情况 Contains 第一个对象包含第二个对象的中心Contains Part 第一个对象包含第二个对象的部分Contins Entire 第个对象包含第二个对象的全部Within 第一对象的中心在第二个对象中Partly Within 第一个对象的部分在第二个对象中Entirely Within 第一个对象全部在第二个对象中 Intersects 两个对象相交 运算符的优先级就是指在一个包含多个运算符的复杂表达式中,决定哪一个运算符优先被执行。MapBasic对每一个运算符的优先级进行了规定,在同一行中的运算符的优先级顺序是:最高优先级:圆括号() 乘方 *,

14、Mod, +,-, 字符串连接(+,&) 地理运算符,比较运算符,Like Not And最低优先级:Or当一个表达式中有多个运算符时,优先级高的先处理,优先级低的后处理。一般地,优先级相同的运算符从左到右依次处理,但对于乘方(A),是从右向左运算。例如:赋值语句x = 223给变量x赋的值是256而不是64。6流程控制结构流控制结构语句将影响到程序中语句的执行顺序,MapBasic主要有以下三种类型的流控制结构语句:(1)分支语句(IF.Then、GoTo、Do Case)If.Then语句的语法如下:If if_condition ThenIf_statement_listElseIf e

15、lseif_condition Thenelseif_statement_listElseIfElseelse_statement_listEnd if Do.Case语句的语法如下:Do.Case do_conditionCase Case_exprstatement_listCaseCase Elsestatement_listEnd Case GoTo语句在MapBasic程序运行时,GoTo语句可将跳转到程序中指定的标号行,执行该标号行后的语句,也可以返回到原来的位置执行。GoTo语句要指定一个标号。这个标号必须是在同一过程中的某一行。标号是放在行首的名字,每个标号必须以一个冒号结尾。

16、例如:If ccountNew,打开新的程序编辑窗口。图5-01 MapBasic开发环境(2)在编辑窗口中输入一行MapBasic程序代码,如图5-02所示。图5-02 MapBasic(3)在主菜单中选择File-Save,将该程序保存为一个MapBasic源代码文件,例如first.mb。(4)选择Project-Combile Current File,对程序进行编译。如果编译成功将自动生成一个相应的可执行文件,在本例中为first.mbx;(5)启动MapInfo。选择MapInfo中Tools-Run MapBasic Program,选择编译生成的可执行文件first.mbx,M

17、apInfo将运行该程序,程序运行结果如图5-03所示。(6)或者,在MapBasic中,选择Project-Run系统将自动启动MapInfo系统,并执行刚才生成的可执行文件first.mbx。在这个简单的实例中,演示了MapBasic程序开发基本过程从程序创建、代码输入、编译和运行的全过程。在实际的程序开发中每一步都比实例复杂,下面分步介绍各阶段中常见问题及处理方法。2建立一个项目文件的步骤:选择FileNew打开一个编辑窗口。在编辑窗口中输入下面这一行:Link接着输入这样一行文本Application = appfilename(这里appfilenams是指建立的可执行文件的文件名)

18、。例如:Application = C:MBCODECUSTOM.MBX接着再输入一行文本Module = modulename(这里mdulename是指MapBasic的目标文件名),例如:Module = C:MBCODECUSTOM.MBO请注意文件的扩展名,MapBasic的目标文件的扩展名为.mbo。当多模块项目中的一个单独的模块被编译时,MapBasic就会为它建立一个目标文件。当选择projectCompile Current File时,MapBasic就会试图把当前文件编译成一个可执行文件(扩展名为.mbx)。如果该程序文件调用了不在此文件中的函数或过程,MapBasic则

19、不能建立一个.mbx文件。在这种情况下MapBasic假设它只是一个大项目的一个部分,而把它编译成一个目标文件(.mbo)。另外,当一个程序没有主过程时,MapBasic在编译时也把它编译成一个目标文件。重复第步,直到包括应用程序的所有模块。选择FileSave As保存项目文件。注意在Save As对话框中选择文件类型中的“Project File”(从对话框左下角的文件类型列表中选择),以便使保存的项目文件有扩展名.mbp。最后选择“file-save”命令保存这个工程文件,扩展名为.mbp。现在按照下面的方法来编辑和链接这个工程文件:(1)编译每个在工程文件中使用的模块,选择Projec

20、t菜单中的“compile current file”命令。(2)选择Project菜单中的“select project file”命令,在打开的对话框中,选择一个工程文件,以让MapBasic知道哪个工程文件需要链接。(3)选择Project菜单中的“link current project”命令以完成对应用程序的链接。MapBasic读列在工程文件中的对象文件(.mbo)。若链接无错误,则MapBasic建立一个可执行文件(.mbx);若有错误,则显示错误信息。3. 调试程序调试程序一般是指发现并改正运行错误的过程。有些运行错误很容易纠正,例如由输入错误引起的(原应输入表名“states”而不是“stats”)。但是另外一些错误却很难定位,为了帮助检测和纠正程序中的错误,MapBasic提供了调试程序的工具(Stop和Continue语句)。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1