《WalkScript培训教程.ppt》由会员分享,可在线阅读,更多相关《WalkScript培训教程.ppt(52页珍藏版)》请在课桌文档上搜索。
1、WalkScript培训,学习内容,WalkScript概述结构和语法标准函数实体类对象工具类对象脚本编辑工具样例讲解,WalkScript概述,WalkScript涵义和功能WalkScript术语解释简单WalkScript示例,WalkScript概述,WalkScript 是在Walk平台基础上构建起的一个Walk语言解释器。该解释器依附于Walk软件产品,可以在Walk产品环境中运行。通过利用WalkScript语言进行二次开发,可以自动完成一些数据处理操作,从而提高作业人员在操作过程中的效率。,WalkScript涵义和功能,WalkScript概述,WalkScript实例,1)
2、工作空间(Wks)所有对象的组织者,任何Walk数据对象都由此获得入口并进行操作。2)数据库(WalkDb)所有对象与数据进行有效组织管理的一种数据组织形式与管理工具。3)SQL(WalkSQL)实现数据库表中数据的查询与存储功能。4)层(Layer)按照专题要求组织起来的数据集合,一般具有相同的属性结构。5)地物(Feature)现实世界中地理事物的抽象与概括。,WalkScript概述,WalkScript术语解释,6)标注(Annotation)用于对地物等对象进行信息传达与特征描述。7)式样(Style)通常包含地物的符号化信息,如线型、线宽、颜色、面填充色等。8)文字(Text)用于
3、表述对象性质的文本信息。9)网格(Cells)层中按照规程设定的连续无边界的格子,一般代表一幅图并设为图廓大小。10)地物几何(Geometry)用于区分描述层中地物的几何特征,包括地物中的点、地物几何中的多边形及地物几何中的部分等内容。,WalkScript概述,WalkScript术语解释,WalkScript概述,WalkScript术语图解,void main()string s;s=Hello,World!;message(s);return;,WalkScript概述,WalkScript示例一,/给定半径,计算圆的面积void main()double r,s;/定义实数型变量r
4、=2.0;/给半径赋值为1.0s=3.14159265*r*r;/计算圆的面积string msg;/定义一个字符串msg.format(半径r=%f 时,面积s=%fn,r,s);message(msg);/显示计算结果,WalkScript概述,WalkScript示例二,/输入半径,计算圆的面积void main()wkView view;/定义一个wkView对象string sr;/定义一个字符串保存输入的半径sr=view.dlgInput(请输入圆的半径,);/输入半径double r,s;/定义实数型变量r=parseDouble(sr);/将字符型转换成实数型s=3.1415
5、9265*r*r;/计算圆的面积string msg;/定义一个字符串msg.format(半径r=%f,面积s=%fn,r,s);message(msg);/显示计算结果,WalkScript概述,WalkScript示例三,结构和语法,基本语法变量定义基本运算符流程控制宏,1.保留字(关键字)define,null,bool,int,double,string,array,wkPoint,if,else if,else,switch,case,default,for,while,break,continue,void,function,return2.大小写识别 3.字符串常量 字符串常量
6、用”表示,如:string s;s=Hello,World!;,结构和语法,基本语法,4.转义字符常见的转义符号及含义如下:t横向跳格n换行反斜杠b退格r回车”双引号例如,要在屏幕上显示,则在代码中需表示为,结构和语法,基本语法,5.数据类型格式控制%d以十进制输入输出一个整数%o以八进制输入输出一个整数%x以十六进制输入输出一个整数%f以小数形式输入输出一个单精度浮点数%lf以小数形式输入输出一个双精度浮点数%s以字符串形式输入输出字符串变量,结构和语法,基本语法,6.注释WalkScript的注释使用形式有两种:/*/段落注释/单行注释7.递归函数该解释器能够执行递归函数,但递归结果不能预
7、测,结构和语法,基本语法,7.程序结构控制语句分支语句二分支:if()else if()else 多分支:switch()case循环语句for()循环while()循环函数返回语句return其他语句:break,continue,结构和语法,基本语法,数据类型系统基本数据类型有7种:,结构和语法,变量定义,数据类型系统内置对象数据类型有19种:,结构和语法,变量定义,数据类型系统内置对象数据类型有19种(续表):,结构和语法,变量定义,变量的定义其值可以改变的量称为变量,变量定义的具体格式:define;变量定义关键字为define,可以省略例如:define int nCount;int
8、 i,j;wkGeoset geoset;变量的初始化在变量声明中可赋值,如:string strLayerName=”JZX”;for(int i=0;in;i+),结构和语法,变量定义,比较运算比较运算符包括:,结构和语法,基本运算符,四则运算四则运算包括:,结构和语法,基本运算符,位运算对整数的位操作,位运算包括:,结构和语法,基本运算符,逻辑运算逻辑运算包括:,结构和语法,基本运算符,运算的优先级(a)=!=(比较函数)(b)+-(加减)|(或)(c)*/(乘除)(异或)&(与)(d)!(反)说明:由(a)到(d),优先级依次增加。当然,若编程者对优先级不肯定时可使用(和)保证自己的预
9、期优先级。,结构和语法,基本运算符,if条件语句 if语句使用布尔表达式或布尔值作为分支条件来进行分支控制,其中if语句有三种形式:1.第一种形式:if(logic expression)statements.,结构和语法,流程控制,if条件语句第一种形式示例:void main()int age=30;if(age 20)/只有当age 20时,下面花括号括起来的语句块才会执行/花括号括起来的语句是一个整体,要么一起执行,要么一起不会执行message(年龄已经大于20岁了);message(20岁以上的人应该学会承担责任.);,结构和语法,流程控制,if条件语句2.第二种形式:if(log
10、ic expression)statements.elsestatements.,结构和语法,流程控制,if条件语句第二种形式示例:void main()/定义变量a,并为其赋值int a=5;if(a 4)/如果a4,执行下面的执行体,只有一行代码作为代码块message(a大于4);else/否则,执行下面的执行体,只有一行代码作为代码块message(a不大于4);,结构和语法,流程控制,if条件语句3.第三种形式:if(logic expression)statements.else if(logic expression)statements./可以有零个或多个else if语句el
11、se/最后的else语句也可以省略statements.,结构和语法,流程控制,if条件语句第三种形式示例:void main()int age=45;if(age 60)message(老年人);else if(age 40)message(中年人);else if(age 20)message(青年人);,结构和语法,流程控制,switch分支语句 switch语句由一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是整型或字符串,不能是boolean型。case标签后紧跟一个代码块,case标签作为这个代码块的标识。switch语句的
12、语法格式如下:,结构和语法,流程控制,switch分支语句语法结构switch(expression)case condition1:statement(s)break;case condition2:statement(s)break;.case conditionN:statement(s)break;default:statement(s),结构和语法,流程控制,switch分支语句示例void main()string score=C;/声明变量score,并为其赋值为“C“switch(score)/执行swicth分支语句case A:message(优秀);break;case
13、B:message(良好);break;case C:message(中);break;case D:message(及格);break;case F:message(不及格);break;default:message(成绩输入错误);,结构和语法,流程控制,while循环语句 循环语句可以在满足循环条件的情况下,反复执行某一段代码,while循环的语法格式如下:init_statementswhile(test_ expression)statements;iteration_statements,结构和语法,流程控制,while循环语句示例/求 1+2+3+.+99+100 的和void
14、 main()int i=1;int sum=0;while(i=100)sum=sum+i;i+;message(toString(sum);,结构和语法,流程控制,for循环语句for循环的语法格式如下:for(init_statements;test_expression;iteration_statement)statements,结构和语法,流程控制,for循环语句示例/求 1+2+3+.+99+100 的和void main()int sum=0;for(int i=1;i=100;i+)sum=sum+i;message(toString(sum);,结构和语法,流程控制,宏文件
15、包含:#include 文件名#include c:walkgiswalkScriptwcViewConstant.h#include wcViewConstant.h定义:#define 标识符#define DEBUG条件解释#ifdef 标识符#ifndef 标识符 程序段1程序段1#else#else 程序段2程序段2#endif#endif,结构和语法,流程控制,标准函数,main函数用户自定义函数系统标准函数字符串(string)数组(array)三维坐标点(wkPoint),程序从main()函数开始执行。执行脚本中不允许用户定义了一些函数,但是其中没有main()函数。main
16、函数有两种类型。一种是无参数,另一种为带参数。无参数void main()string s=”hellow!”;message(s);有参数void main(array args)for(int i=0;iargs.getSize();i+)message(argsi);,标准函数,mian函数,定义方法:function 返回类型 函数名(参数列表)函数体 函数的参数都是值参或引用。函数不支持重载。函数支持递归,但递归结果不能预测(即不能保证结果正确)。,标准函数,用户自定义函数,示例:/求两点之间的平面距离double distance(wkPoint a,wkPoint b)retur
17、n sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);void main()wkPoint p1,p2;p1.x=1;p1.y=1;p2.x=100;p2.y=100;message(toString(distance(p1,p2);,标准函数,用户自定义函数,输入输出函数数学函数转化函数字符串函数数组三维坐标点见Walkscript对象化开发手册3643页,标准函数,系统标准函数,Walk实体类对象,wkView:图形主窗口wkGeoset:工作空间wkDb:数据库wkLayer:图层wkFeature:地物wkAnnotation:文字和影像wkSty
18、le:式样wkGeometry:几何体wkPolygon:多边形wkParts:线流wkPoints:线串,Walk对象模型,Walk工具类对象,wkBox:矩形盒wkGis:GIS工具wkClean:线素整理和构面wkFile:读写文件wkDialog:自定义对话框wkTrans:坐标变换wkGdt:GDT表格,Walkscript编辑工具,使用Walk脚本编辑器编写脚本 使用Visual Studio编写脚本,Walkscript实例讲解,一、图层、地物和文字的获取二、图层的创建和添加三、地物和文字的添加四、地物属性操作五、线素整理和构面六、SQL语句的应用七、搜索和9交关系八、文件的读写九、对话框交互十、GIS分析,课时安排,课时安排(续),