用户名:    密码:    验证码: 请点击刷新验证码 马上登陆 新用户注册
网站首页资讯动态教学时空文章作品数字旅游相册定制图片故事视频教程精品下载电子地图网站说明考试与测验系统百博数字淘宝店网址之家留言讨论
 当前位置:网站首页教学动态→查看教学

地理信息系统GIS——实习六

[ 作者:网络┋来源:百博数字┋发布:毛毛巴巴┋日期:2009年04月27日┋阅读:4119次┋字体:  ]


 
实习六  数据查询与统计分析   实习指导书6

    
一、实习目的
    掌握数据查询的基本方法和步骤,了解统计分析的一般过程。
    二、实习内容
    1.由浏览数据查询图形位置。
    2.由定位图形查询相关数据信息。
    3.定值查找。
    4.条件查询。
    5.计算各县(市)1982年至1990年增加人口数、增长率(%)、平均每年增长率(%)和1990年人口密度,并更新列。
6.    以1990年人口为基数,按年均人口自然增长5‰  ,预测到2010年
各县(市)总人口数,并计算人口密度,更新列。
    7.按列进行统计分析。
    8.计算河北省1990年平均人口密度。
    三、实习要求
    1.更新列的字段定义要求
内  容          字段名     类型   宽度   小数位
女人口数(人)    frk_90     整型           
增长率(%)       zzl        浮点    5        1
年均增长率(%)   zzln       浮点    4        1
1990年人口密度    rm_90      整型     
2010年总人口数    zrk_2010   整型
2010年人口密度    rm_2010    整型                   
2.注意事项
    (1)更新列数据注意存盘。
(2)查询练习结果一律不存盘。
四、实习步骤
    1.由浏览数据查询图形位置
    (1)选择“文件>打开表”命令,打开河北省政区多边形表XJ。
    (2)选择“窗口>新建浏览窗口”命令。
    (3)单选或多选每条记录前的小方框,则在地图窗口中显示所选中记录在图上的位置(如图6-12所示)。移动“浏览窗口”则可看到。
(4)关闭“浏览窗口”。
    2.由定位图形查询相关数据信息
    (1)在已打开的“地图窗口XJ”中,单击主工具条中的“信息”按钮。
                    图6-12  由数据表格查找图形
图6-13  由定位图形查找相关信息
(2)将光标移至要查询的图形范围内,单击鼠标左键,这时出现“信息工具”窗口,并显示数据信息,可滚动浏览表中数据(如图6-13所示)。
    (3)如果选择有多个重叠对象的某一位置,窗口底部显示选择对象数及包含这些对象的表的数目。选择一个对象,即可显示对象的数据信息。
(4)关闭“信息工具”窗口。结束查询,可击主工具条中的“选择”按钮。
    3.定值查询
查询编码为“0101”的县(市)的位置和数据信息,步骤如下:
    (1)设置政区表XJ为“可选择”状态。
    (2)选择“窗口>新建浏览窗口”。
    (3)选择“查询>查找”命令,这时出现查找对话框(如图6-14所示)。在“搜索表”栏中,选择XJ;在“查找对象所在列”栏中,选择编码bm;单击“标注符号”按钮,可在符号表中选定所用符号,单击“确定”回到原对话框。
    (4)击“确定”按钮,出现“查找”对话框。在“bm”栏中输入:“0101”(如图6-15所示),击“确定”按钮,这时在地图窗口石家庄市区范围内标注选定的符号,同时在浏览表中,第一行显示查找的编码和数据信息。
(5)利用同样的方法,可查找其它数据。若“浏览窗口”未打开,则只在地图窗口查找区域中标出符号,而不显示数据。
         图6-14  “查找”对话框之一        图6-15  “查找”对话框之二
    4.条件查询
   (1)查询1990年总人口大于50万的县(市)
    ① 使用已打开的政区表XJ。  
    ② 选择“查询>选择”命令,这时出现“选择”对话框。在“从表中选择记录”栏内,选择XJ;击“辅助”按钮,然后击“列”选zrk_90,接着击“运算符”选“>”,再手工键入:500000(如图6-16所示)。
    ③ 击“检验”按钮,检查语法是否正确,若正确则击“确定”按钮。
    ④ 在“结束排序按列”栏内,通过下拉菜单选bm,然后击“确定”,这时在地图窗口中显示选中的区域,同时出现“浏览窗口”并显示数据,可滚动浏览数据。
⑤关闭“浏览窗口”。
                      图6-16  “选择”对话框的使用
   (2)查询邢台市1990年总人口大于30万小于50万的县(市)
    ① 选用政区表XJ。
               图6-17  “SQL选择”对话框的使用
    ② 选择“查询>SQL选择”命令,这时出现“SQL选择”对话框。
③ 如图6-17所示,在“从表”栏中,选XJ;把光标移入到“条件”栏内,选择并输入表达式: mid$(bm,1,2)=“05” and zrk_90 between 300000 and 500000;在“按列排序”栏内,选zrk_90;击“确定”按钮。
④ 滚动浏览数据信息,然后移动浏览窗口,可观察地图窗口中所选中的区域。
⑤ 关闭浏览窗口。
   (3)查询河北省面积最小的县
    ①选用政区表XJ。
    ② 选择“查询>SQL选择”命令,在“SQL选择”对话框中,“从表”栏中,选XJ;在“条件”栏内,选择并输入表达式: mid$(bm,3,1)>=“2”;在“结果放入表”栏内,输入:XY,形成临时表,击“确定”。
③ 选择“查询>SQL选择”命令,如图6-18所示,在“从表”栏中选择XY;在“选择列”中,选择并输入: Min(mj);在“结果存入新表”栏中,输入:XX,单击“确定”按钮。这时屏幕上只显示最小面积数值(如图 
图6-18  使用“SQL选择”查找最小面积    图6-19  浏览器显示面积数值
6-19所示)。用笔记录下来该数值。
④ 选择“查询>选择”命令,如图6-20所示,在“从表选择记录”栏内选XY;“满足条件”栏内,选择并输入: mj=记录下来的最小数值(如170),确定即可,这时显示一条记录的全部信息(如图6-21所示)。
         图6-20  使用选择对话框寻求一条记录

                   图6-21  浏览器显示选择的记录信息
    5.计算各县市女人口数及1982至1990年增长率、年平均增长率和1990年的人口密度,并更新列
   (1)选用政区表XJ。
   (2)选择“地图>图层控制”命令,单击“可编辑”按钮。
   (3)选择“表维护>修改表结构”命令,按规定的字段要求,增加“1990年女人口数”、“增长率”、“年平均增长率”和“1990年人口密度”选项字段。然后击“确定”按钮。
   (4)选择“表>更新列”命令,出现“更新列”对话框。如图6-22所示,按提示分别选择:
    要更新的表[T]:      XJ
    要更新的列[C]:      frk_90
    从中获得值的表[G]:  XJ
把光标移到“值”栏内,然后击“辅助”按钮,在“表达式”框内,选择输入:  zrk_90-nrk_90;击“确定”按钮,退出“表达式”对话框。再击“确定”,开始更新列,这样便在电子表格中追加“女人口数”一列数据。
(5)保存表XJ。

            图6-22  使用“更新列”增加女人口数据项
(6)重复第4、5步,按表达式:((zrk_90-zrk_82)/zrk_82)*100、
((zrk_90/zrk_82)∧(1/8)-1)*100和zrk_90/mj 分别更新增长率、年均增长率和1990年人口密度数据列。
    6. 2010年人口预测
    参照第5项实习内容的计算和更新步骤,按表达式: zrk_90*(1+0.005)∧ 20和zrk_2010/mj 分别去更新2010年总人口和2010年人口密度数据项。
    7. 按列统计分析
   (1) 1990年河北省人口统计分析
    ①使用河北政区多边形表XJ。
② 选择“查询>计算统计值”,出现“计算列统计值”对话框。如图6-23所示,按提示进行如下选择输入:
表[T]:  XJ
列[C]:  zrk_90 
        图6-23  “计算列统计值”对话框      图6-24  “列统计”数据显示
    ③ 单击“确定”按钮,“列统计”结果框出现。如图6-24所示,包括计数(表中的记录数),最大值(该列最大值),最小值(该列最小值),范围(最大值与最小值之差),总和(所有值的总和),平均值(所有值的平均值),方差(方差分布的标准统计值)和标准差(方差的平方根)。
    ④ 击“确定”按钮,列统计框关闭。
    ⑤ 用同样方法分析河北省人口增长数据,2010年人口预测数据等。
  (2)1990-2010年石家庄市人口增加值统计分析
    ①使用河北省政区多边形表XJ。
    ② 选择“查询>SQL选择”命令。在“SQL选择”对话框中,在“从表”栏中,选择XJ;在“条件”栏内,输入表达式: mid$(bm,1,2)=“01”;在“结果放入表”栏内,输入:SJZ;击“确定”。
③ 选择“查询>SQL选择”命令。如图6-25所示,在“从表”栏中选择SJZ;在“选择列”中输入: zrk_2010-zrk_90(空格)“ZJ” ,形成一个临时列ZJ。在“结果存入新表”栏中,输入:SJZZJ;击“确定”按钮。
          图6-25  使用“SQL选择”生成临时列
    ④ 选择“查询>计算统计值”命令,在对话框内输入:
表[T]:   SJZZJ
            列[C]:   ZJ
    ⑤ 单击“确定”、“列统计”,分析结果出现。
    ⑥ 击“确定”,列统计框关闭。
    8. 计算1990年河北省平均人口密度
   (1)使用河北省政区多边形表XJ。
   (2)选择“查询>SQL选择”命令。如图6-26所示,在“从表”栏内选择XJ;在“选择列”栏内选择并输入: Sum(zrk_90)(空格)“HBRK”,Sum(mj)(空格) “HBMJ”;在“结果放入表”栏内输入: HBRM ;击“确定”按钮。
   (3)选择“查询>SQL选择”命令。在“从表”栏内选择HBRM;在“选择列”栏内选择并输入表达式: HBRK/HBMJ ;在“结果放入表”栏内,输入:  MD。
   (4)击“确定”按钮,可显示计算结果即河北平均人口密度。

                图6-26  使用“SQL选择”形成两个临时列

五、实习相关知识
1.显示记录数据
使用“信息”按钮可以显示地图或浏览窗口中的数据。要使用信息工具,对象所在图层必须可选择。
①打开地图或浏览窗口。
②单击信息按钮以访问信息工具。
③用信息工具在浏览窗口或地图中选择一个对象,单个对象的“信息工具”对话框出现。
 图6-1  “信息工具”窗口之一          图6-2  “信息工具”窗口之二

④选择有多个叠压对象的点,多个对象的“信息工具”对话框出现(如图6-1所示)。窗口底部显示出选中对象数目和包含选中对象的表数目。
⑤在列表中选择一个对象,显示出一个该对象所含表格数据的窗口(如图6-2所示)。
⑥使用滚动条可以在表中各记录间移动。
⑦使用箭头按钮可以在所选中对象之间上下移动。
⑧单击“列表”按钮返回前一个列有对象的窗口(如图6-2所示)。
如果正在使用信息工具而信息窗口中不含任何信息(提示“无记录”),检查一下该图层是否可选择。类似的,如果获取的信息不是与所感兴趣的对象相关的信息,检查一下哪些图层当前可选择。
键和信息工具在所有可选择图层间切换以访问叠压对象。
2.使用“SQL”查询
“SQL选择”是一多用途查询工具。使用“SQL选择”,能够执行下列任何任务(条件是至少一个表被打开):
·过滤数据以只查看感兴趣的行和列。
·执行将两个或更多表合并为一个结果表的相关连接。
·创建派生列(基于已有列的内容,计算新值的列)。
·按数字和/或字母顺序对数据排序。
·对数据进行分类汇总来只查看一系列小计而不是整个表。
(1)SQL选择对话框
该对话框是MapInfo中最复杂的对话框之一,一旦掌握每个框是干什么用的,那么创建功能强大的选择语句就相当简单了。可以直接在格个框中键入信息或使用右边弹出菜单来在框中输入各项。“SQL选择”对话框随复杂,但是其大多数域是可选的。例如,若不想创建分类汇总,可保留“按列分组”域为空白。SQL选择的主要选项有(如图6-3所示):
                 图6-3  “SQL选择”对话框

○“选择列”:使用“选择列”域来指定查询结果表中应该出现哪些列。若想结果表中含有与原始表相同的列集,在“选择列”域中输入一个星号(*)。星号告诉MapInfo:结果表中包含表中的每一列。若想结果表中含有的列集与原始表不同,删除星号,并输入用逗号分隔的一系列列名或表达式。“选择列”域可包含星号或一系列列表达式,但二者不可得兼。在填写“选择域”之前,请先填好“从表”域。
若查询涉及多个表,每个列名前必须加上表名,用句点分开表名和列名。这样,若你执行涉及两个表的查询,其中一个是Canada表,你希望查询包括Canada表的Population列,则必须使用列表达式Canada.Population。无论何时使用两个或多个表,“列”下拉式列表会自动将表名插入到列名前。
○“从表”:该域告诉MapInfo查询哪张表。在“从表”域中至少要输入一个表名。若想查找多个表可输入逗号分隔的表名清单。若在“从表”域中输入两个或多个表名时,则必须在“条件”域中设定一个表达式来告诉MapInfo如何连接表。输入两个表名时,MapInfo自动计算一个合适的“条件”表达式;但若使用三个以上表名,则必须手工修正“条件”表达式。若执行多表连接,则所有的表都必须是基表,且不能在多表SQL查询中使用结果表(如Query3)。
○“条件”:根据查询性质,该域有不同用途。当查询单个表时,该域是可选的;若查询涉及到连接两个或两个以上的表,则必须设定“条件”表达式。表达式必须指示MapInfo如何连接这两个表。
若你要连接两个表,必须确定第一个表中是否有一列含有能匹配第二个表中某一列的值。设想有一个带有人口统计信息的县表——每个县中不同年龄段的人口数、种族群和职业类型。也可能有一个顾客订单数据库,你想检查这两个表并找出是否有订单来自那些具有某些人口统计特征的县。你可能想根据订单和人口统计特征的组合选择一些县。为此需要进行表连接。
假设县表含有县的名称。类似地,订单表中有一列含有发出该订单的县名。这样,两个表有一个公共列,即县名。MapInfo能利用该公共字段将两表连接。
Counties Table                     Orders Table
CountyName  Pop_1980  Pop_1990   Order #   Customer   County
Foster        23,789      27,135     478001    Francis    Foster
Williamette    35,456      34,846     478002    James     Foster
Mason       147,101     151,201     478003   Wickwire   Mason
在“SQL选择”对话框中,可使用“条件”域来告诉MapInfo如何连接这两个表。SQL选择对话框可能如下:
选择列: *
从表:   Counties, Orders 
条件:   Counties.CountyName = Orders.County 
表名顺序(“从表”域中)很重要,若两个表都含有地图对象,结果表将只保留“从表”域中第一个表的地图对象。进一步讲,当查询完成时,MapInfo自动从“从表”域的第一个表中选择部分或全部记录。这样,对于上例,MapInfo会从县表中选择部分或全部记录。结果表也包括从订单表拷贝来的数据,但本质上讲不从订单表选择记录。
当连接两个表时,结果表中记录数目取决于两个表的匹配情况。假设订单表有10,000条记录,它与州表(有50条记录)相连接。结果表可能包含10,000条记录。不过,若订单表中有些记录与州表中的所有记录都无法匹配,则结果表包含记录数将少于10,000。这样,若订单表中有400条记录不含有州名(可能是录入错误),而关系型连接又是根据州名进行,则结果表可能只有9600条记录。
可以使用“更新列”来修改SQL选择多表连接的结果。当你想用另一个表中的信息来更新某个表中的一列时,可以这样做:
①用“SQL选择”连接表。
②对Selection使用“更新列”。更新将自动对适当的基础表生效。
○“按列分组”:该域可用于对结果表分类汇总。当在“按列分组”域中输入一个列名(或用逗号分隔的列名清单)时,MapInfo将对查询结果进行分类汇总,并只显示分类汇总而不显示从表中检索出的每行。计算分类汇总分两步:首先“按列分组”域中输入一个列名(或多个列名);其次在“选择列”域中输入相同的列名和聚类运算符(如Sum或Count)。“按列分组”域是可选的。若保留该域为空白(缺省情况),则MapInfo不计算分类汇总。
○“按列排序”:该列可用于对结果表排序。若在“按列排序”域中输入一个列名(或一个逗号分隔的列名清单),MapInfo将对结果表的列数据进行排序。缺省时,按生序对列数据排序。为了按降序排序,可以在列名之后输入单词desc。“按列排序”域是可选的。若保留该域为空白,则结果表不排序。
○“结果放入表”:该域用于设定结果表的名称。缺省时,结果表名为Selection。惹要赋给结果表另一个名称,可在“结果放入表”域中键入指定名称,但所输入的表名不能是一个已经打开的表的名称。若经常使用SQL查询,并使用Selection作为结果表名,则最终会留下大量的结果表(例如,Query1、Query2、Query3等),虽然这些Queryn表不会产生什么害处,但一些人不喜欢有大量打开的表。若要避免大量打开的Queryn表,可在“结果放入表”域中输入一个替代表名。例如,可在该域中输入表名Results。则以后SQL查询操作都使用Results作为结果表名。这样,不管执行多少次查询都只需处理一个结果表(Results)。
○“浏览结果”:若选中了“浏览结果”复选框,则MapInfo将在浏览窗口显示查询结果。
○使用下拉列表(“聚合”、“函数”、“运算符”等):“SQL选择”对话框的右边包含5个下拉列表:“表”、“列”(如图6-4所示)、“运算符”(如图6-5所示)、“聚合”(如图6-6所示)和“函数”(如图6-7所示)。这些下拉列表可方便地通过点按和单击来填写“SQL选择”对话框,而不用靠人工键入。也就是说使用这5个下拉列表是减少键入工作量的一条捷径。
图6-4  选择列  图6-5 选择运算符 图6-6 选择聚合函数  图6-7  选择函数
(2)使用“SQL选择”的一般步骤
使用“SQL选择”的通常步骤如下:
①打开希望查询的表(倘若尚未打开的话)。要查询的表称为基础表。若用“SQL选择”对World表查询,World表就是基础表。
②选择“查询>SQL选择”。将“SQL选择”对话框的各部分按需要填好。单击“确定”后,MapInfo执行查询。MapInfo从基础表中抽取数据,并将查询结果保存在一个特殊的名为结果表的临时表里。结果表只含有满足要求的行和列。结果表的缺省名为Selection(你可以在“SQL选择”对话框的“结果放入表”框中指定一个不同的结果表名)。
③打开一个地图窗口或一个浏览窗口(若想看到查询结果)。缺省情况下,MapInfo自动在一个浏览窗口中显示结果表(除非清除了“SQL选择”对话框中的“浏览结果”复选框)。若结果表名为Selection(缺省名),浏览窗口会显示不同的表名,如Query1或Query2。这是因为当你浏览Selection表时,MapInfo对该表“拍”了一个“快照”,并将“快照”命名为Queryn(其中n是数字,为1或更大)。MapInfo“拍”这个“快照”是因为“Selection”是个特殊的表名;每次选择行或撤消对行的选择时,Selection的内容都会动态变化。在“SQL选择”对话框中,可以为结果表输入不同的表名(如可以将其命名为My_Query)。这可避免MapInfo将结果表改名为Queryn。
④MapInfo自动选中结果表中所有行。这样,在执行“SQL选择”后,就可以对选中行组成的整个集合进行操作。例如,可以应用另一种填充颜色到所有选中行(选择“选项>区域样式”),或剪切或拷贝所有选中行。通常,对结果表的任何改动都会自动作用于原始(基础)表。例如,若使用“SQL选择”从Orders表中选择了某些行,然后又从结果表中删除了若干行,则MapInfo会删除基础表(Orders)那些对应行。不过,若查询生成了分类汇总,对结果表的改动不会影响到基础表。
⑤若希望对查询表做一个永久拷贝,选择“文件>另存为”命令。若未执行“另存为”命令,当退出MapInfo时那些结果表将被删除。
3.更新列的使用
使用“更新列”命令可以为列指定值(如图表6-8、6-9所示)、用其它
  图6-8  同表“更新列”对话框      图6-9  辅助中的“表达式”对话框
表中的数据增加新(临时)列、在列之间移动数据以及向描述性数据的列中输入图形信息。条件是至少有一个可编辑MapInfo表被打开。可以使用该命令利用其它表中的数据为一个表增加临时列:
①打开至少两个表。
②选择“表>更新列”命令,“更新列”对话框出现(如图6-10所示)。
③选择要加入新列的表。
④选择将从中检索更新信息的表。
⑤从“要更新的列”选项中选择增加新的临时列。必要时,指定用于连接两个表的信息(如图6-11所示),MapInfo将利用两表共同的表格数据或图形数据连接它们。
⑥根据“计算”框中的列和表达式指定如何计算信息,以确定怎样产生新列。
 图6-10  异表“更新列”对话框       图6-11  “指定连接”对话框
⑦单击“浏览结果”复选框,显示出含有新增临时列的表。
⑧单击“确定”按钮。按所指定信息产生的临时列被加入到表中。
此后若改变数据表,新建的临时列也自动更新。要保存表及其新建的临时列,可使用“文件>另存为”命令。如果临时列被增加到位于工作空间中的表里,在保存工作空间时所做的改动自动被保存。
4. MapInfo表达式
(1)输入特定值(常数)到表达式
当在表达式中输入特定字符串、数字和日期时,必须遵守以下约定:
○字符串:当在表达式中键入某个字符串时,必须把它放在双引号内。这样MapInfo会把它处理为字符串而不是一个列名。例如,"Orange"和"New York"是有效的字符串常数,而字符串Orange和New York却不是。
○数字:当输入某个数值时,请勿使用逗号、$符号或其它任何并非数字、小数点和负数所用负号的字符。可以使用E来在指数中给定指数。
○日期:日期包含月、日及可选的年份,年份为二或四个数字,并且括在双引号内。日期的各组成部分要用连字号或斜杠隔开。若未指定年份,则缺省采用计算机时钟的设置值。以下是有效的日期数据:"1-20-92"、"01/20/1992"和"1/20"。
(2)数学运算符
数学运算符常用于创建表达式。下表显示了各个运算符的符号、名称、实例以及如何处理不同数据类型。
+    加号   A + B         日期+数字:日期      数字+数字:浮点数
浮点数+日期:日期    整数+整数:整数
-    减号   A-B(减法) 日期-数字:日期      数字-日期:日期
-A(负号) 整数-整数:整数       数字-数字:浮点数
*     乘号   A * B        整数*整数:整数       数字*数字:浮点数
/     除号   A / B        数字/数字:浮点数
^     指数   A ^ B        数字^数字:浮点数
以下运算是可能的:
·将数字加到日期上产生另一个日期。
·从日期减去数字产生另一个日期。
·从日期减去日期产生一个数字。
若你将数字加到日期上或从日期减去数字,MapInfo将数字处理为天数。若要增加或减去一周,可用数字7。若增加或减去一月,可用数字30或31。若MapInfo从日期减去另一个日期,结果表示天数。
(3)比较运算符
创建表达式时常需使用比较运算符,下表给出各个比较运算符的描述:
=      相等
<>    不等
>     大于
<     小于
>=    大于等于
<=    小于等于
_      单个字符的通配符
%     多个字符的通配符
(4)逻辑运算符
MapInfo提供以下逻辑运算符:
and    当(且仅当)两个参数(它所连接的表达式)都为真时,为“真”。记录必须同时满足这两个条件才被选中。
or    当参数(它所连接的表达式)中有一个,或两个都为真时,为“真”。记录只需要满足一个条件即被选中。若两个条件都满足它也被选中。
not   当参数(它所作用的表达式)为假时,为“真”。记录不满足所给条件时被选中。
(5)地理运算符
MapInfo有几个地理运算符。使用它们能把对象根据其与其它对象的空间关系而选择出来。MapInfo有一个特殊的关键词(列名):“obj”或“object”,它可用于地理运算符。该关键词(列名)告诉MapInfo得根据表中的图形对象来求值,而不是表格数据。地理运算符放在所指定的两个对象中间。可从“运算符”下拉列表中选择空间运算符。MapInfo地理运算符如下:
Contains            对象A包含(Contains)对象B:B的中心在A的边界内任一点。
Contains Entire     对象A完全包含(Contains Entire)对象B且B的边界完全位于A的边界之内。
Within              对象A位于(Within)对象B之内:A的中心在B的边界之内。
Entirely Within     对象A完全位于(Entirely Within)对象B之内:对象A的边界完全位于B的边界之内。
Intersects          对象A与对象B相交(Intersects):它们至少有一个公共点,或一个完全位于另一个对象之内。
(6)表达式中的字符串运算符
表达式中的字符串运算需要使用连接运算符:
+    “连接”,连接字符串与字符串表达式。字符串必须用双引号括起来。例如:"Ms. "+Last_Name。当MapInfo把此当作表达式的一部分求值时,它把"Ms."放在每个姓的前面。字符串常量("Ms.")放在引号内。同样地:    "Hello, "+"world"得到结果"Hello,world"。
(7)表达式中的关键词
MapInfo支持使用关键词“any”、“all”、“in”和“between”。这些关键词必须键入到表达式中。
○使用“any”选择若干项中的任一项:
  ABBR = any("AL", "MN", "TX")
○使用“all”选择不在所列项中的任一项:
  ABBR <> all("AL", "MN", "TX")
○下例显示了“in”的用法:
  ABBR in("AL", "MN", "TX")
此处,“in”等价于“=any”,“not in”等价于“<>all”。
○下例说明“between” 的用法:
PRICE between 50000 and 100000
(PRICE between 50000 and 100000) or (PRICE between 150000 and 200000)
(8)运算符优先级
MapInfo对表达式求值时,需要知道要先对表达式的哪些部分求值。这被称为优先级。根据约定,各运算符被赋给不同的优先级。有最高优先级的被首先求值。下表按求值顺序列出MapInfo的运算符。同一优先级的运算符从左到右求值。
最高优先级:  括号、乘号、负号、乘、除、加、减
地理运算符、比较运算符
Not(非)、And(与)
最低优先级:  or(或)
5. MapInfo函数
(1)    使用函数
    表达式中可含有一个或多个函数调用。在以下各部分中,num是任何数值型表达式,str是任何字符串表达式,obj是任何对象表达式,如states.obj代表States表中的对象“列”。
  (2)数学函数
Abs(num)            返回数值的绝对值。
Cos(num)            返回数值的余弦;num单位弧度。
Int(num)            返回数值的整数部分。
Maximum(num,num)  返回两数中大者。
Minimum(num,num)       返回两数中小者。
Round(num1,num2)    返回数值(num1)与num2最接近的倍数(如若num2是10,则返回num1最接近10的倍数)。
Sin(num)             返回数值的正弦;num单位为弧度。
Tan(num)             返回数值的正切;num单位为弧度。
  (3)日期函数
0CurDate()         返回当前日期。
Day(date)             返回date的(某月中的)日部分(1—31)。
Month(date)          返回date的月部分(1—12)。
Weekday( date )   返回date的星期部分(1—7);1代表周日。
Year(date)         返回date的年部分(如1994)。
  (4)字符串函数
Chr$(num)               返回与字符代码相对应的字符(如Chr$(65)返回字符“A”)。
DeformatNumber$(str)    撤消FormatNumber$函数的效果,返回一个不带千分位分隔符的字符串
Format$(num,str)      返回代表带格式数字的字符串。例如:Format$(12345678,$,#.##”),返回“$1234568”。
FormatNumber$(num)      返回代表带格式数字的字符串。 此函数比使用Format$简单,但对格式的控制较少(如它总是返回千分位分隔位)。
InStr(num,str1,str2)    从字符串str1的位置num开始搜索以找出str2是否出现。返回找到str2的位置,若未找到则返回0。要从首字符开始搜索,将num指定为1。
LCase$(str)            返回字符串str的全小写形式。
Left$(str,num)         返回字符串str的前面num个字符。
Len(str)               返回字符串中字符个数。
LTrim$(str)            删除字符串str的前导空格并返回结果。
Mid$ Mid$               返回字符串str中从位置num1开始的后num2个字符。
Proper$(str)           返回带适当大小写(每个词首字母大写)的字符串。
Right$(str,num)        返回字符串str的最后num个字符。
RTrim$(str)            删除字符串str的尾部空格并返回结果。
Str$(expr)              返回表达式的近似的字符串表示。
UCase$(str)            返回字符串str的全大写形式。
Val(str)               返回字符串的数值;例如,Val(“18”)返回数值18。
  (5)返回地理运算结果的函数
Area(obj,str)          返回对象面积。str参数指定面积单位名称,如“sq mi”或“sq”。
CentroidX(obj)         返回对象中心的X坐标。
CentroidY(obj)         返回对象中心的Y坐标。
Distance(num_x,num_y,  返回两点之间的距离。前两个参给出起始点
xnum_x2,num_y2,str)  的x值和y值;后两个参数给出终点的x和y值;str参数是距离单位名,如“mi”或“km”。
Objectlen(obj,str)     返回对象长度。str值指定距离单位名称,如“mi”或“km”。只有直线、折线和圆弧对象才有非零的长度。
Perimeter(obj,str)     返回对象周长。str值指定距离单位名称,如“mi”或“km”。
 只有区域、椭圆和矩形对象有非零的周长。
  (6)返回对象的函数
Buffer(obj,num_res,     返回代表缓冲区的区域对象。num_res 按每
        num_width,str)     个圆周的节点数指定分辨率;num_widt指定缓冲区的半径;str是距离单位名称(如,“mi”或“km”),此单位作用于num_width。
Centroid(obj)          返回位于obj中心的点对象。
Createcircle(num_x,     返回圆对象。num_radius以英里为单位指定
      num_y,num_radius)    距离。
CreateLine(num_x,      返回直线对象。   
    num_y,num_x2,num_y2)    
CreatePoint( num_x ,   返回点对象。
                num_y )   
上述每个函数都返回一个图形对象。若在MapBasic窗口中键入一条Update命令,就可以用这些函数为表中每行创建对象。
(7)聚合函数
MapInfo提供以下聚合函数:
Count(*)          计算一组中记录总数。它简单地使用*作参数,因为它应用到整条记录, 而非某个特定字段。
Sum(〈表达式〉)  计算一组中所有记录的〈表达式〉总计值。
Avg(〈表达式〉)  计算一组中所有记录的〈表达式〉平均值。
Max(〈表达式〉)  找出一组中所有记录的〈表达式〉最大值。
Min(〈表达式〉)  找出一组中所有记录的〈表达式〉最小值。
6.人口预测方法
    按自然增长法进行人口预测,公式为:
       B=A (1+k) n
式中:     B—规划目标年总人口数
 A—基期年人口数
 k—规划期间人口自然增长率
 n—规划年限
7.人口平均增长率计算方法
计算人口年均增长率,按如下公式:
     k=((B/A)1/n-1)*100 
    










复制此文】【打印此文】【关闭窗口

 上一条记录:公共选修课第三章绘图工具和图像编辑工具——之一
 下一条记录:地理信息系统GIS——实习七
返回顶部在线人数友情连接万年历