实验3选择与查询_第1页
实验3选择与查询_第2页
实验3选择与查询_第3页
实验3选择与查询_第4页
实验3选择与查询_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三选择与查询在日常生活中,往往需要对各种各样的事物进行选择,并根据不同的目的将它们分成不 同的小组。通过MapInfo能对数据创建类似的分组,将这些组称为选择集(Selections)。 选择集是根据一个或多个变量而分组的数据子集。尽管MapInfo允许将数据附加到地图上的对象中去,但其真正的分析能力在于数据分组 和组织数据的能力。一旦将数据逻辑分组,就可以根据一个或多个变量来分析这些数据。例如,有一顾客记录表,可以为所有居住在徐州周围50公里内的顾客创建一个子集; 也可以为所有购买商品超过5000元的顾客创建一个子集;还可以为所有姓名为3个字的顾 客创建一个子集。用于创建以上子集的语句称

2、为查询。查询相当于询问的另一种说法一一哪些顾客居住在 距徐州50公里以内?哪些顾客花费超过5000元?哪些顾客的姓名为3个字?当然,某些数据会明显地归入多个分类,这时可以使用多个变量对数据进行分组。例如 哪些顾客居住在徐州50公里以内并且购买了价值超过5000元的商品?选择集是一个临时表。当进行选择时,MapInfo创建这一临时表来存储所选择的记录。 对于选择集,可以执行作用于永久表的操作。选择集表也可以保存为一个永久表。一旦将选择集存为永久表,就可以像对待其他任何 表一样处理该表。选择集表完全依赖于创建它的永久表。如果关闭了该表,则所有与之相关的选择集表将 被删除。在MapInfo中可以通过

3、主工具栏中的一些选择工具从地图窗口中进行选择,也可以通过 Query菜单中的Select语句来选择。利用选择工具选择利用主工具栏中的选择工具选择记录之前,必须通过Layer Control对话框设置可选图 层。如果在一个地图窗口中有多个可选择对象,MapInfo将从最顶层的可选择图层中选择对 象。例如,有一个县行政区划图层和一个省行政区划图层,这两个图层都是可选择图层。如 果县行政区划图层在省行政区划图层之上,那末MapInfo将从县行政区划图层中选择对象。 若省行政区划图层在上面,那末MapInfo将从省行政区划图层中选择对象。类似地,应该将 要搜索的边界对象放在最上面的图层中。如果希望从非

4、最顶层的图层中选择对象,在选择对象时按Ctrl键即可。例如,在一个 地图窗口中地图窗口中从下到上依次有一个省行政区划图层、一个县行政区划图层和一个城 市图层,并且这三个图层都可选择。如果需要选择县行政区划中的对象,只要按住Ctrl键, 并用选择工具单击县区划对象即可。如果按住Ctrl键,再次用选择工具单击地图,就可以 从省行政区划层中选择对象了。如果需要从一组选择的对象或记录中撤消对其中某个对象或记录的选择,需要按住 Shift键,并用选择工具单击该对象或记录,即可使该对象变成未选择。如果需要撤消一组或所有选择的对象或记录,可以在地图窗口中没有任何对象处单击, 或者选择Query菜单中的Uns

5、elect All命令,或者使用热键Ctrl+W。MapInfo的主工具栏中提供了 6个选择工具,它们分别是选择工具、矩形选择工具、半 径选择工具、多边形选择工具、边界选择工具和反选工具,它们的功能如表3-1所示。表3-1各选择工具的主要功能图标工具名称主要功能选择工具通过单击对象,可以一次选择一个对象,或者选择同一区域内的所有对象。矩形选择工具通过用矩形选择工具单击并拖动鼠标,可以创建一个虚矩形,选择在该矩形 范围内的所有对象。半径选择工具通过用半径选择工具单击并拖动鼠标,可以创建一个虚圆,选择所有位于该 圆内的所有对象。边界选择工具用于选择位于某个选择区域或边界内的对象,例如,有一个剩行政

6、区划图层 和城市点图层,利用该工具单击某个省,便可以选择该省内所有的城市对象(注:在较高版本中还有其它的选择工具,请注意)通过查询来选择通过选择工具在地图窗口中选择对象的方法虽然很直观,但是对于某些复杂的选择,这 些工具却无法实现。此外,选择工具无法根据记录和对象的属性来进行选择。例如选择工具 不能实现选择所有人口大于100万的州。为此,我们可以通过构造围绕数据的问题或查询来创建查询表。MapInfo提供了两个功 能强大的查询命令,分别是Select和”SQL选择.”。我们将在下一实验中详细介绍” SQL 选择.”命令。例如,我们要选择那些人口密度大于500的州。打开包含美国州行政区划表,然后

7、选择Query菜单中的Select命令,打开如图3-1所 示的Select对话框。图3-1 Select对话框从图3-1所示对话框中的“从表中选择记录”下拉列表框中选择STATES表,表示将从 该表中选择记录。在“满足条件”文本框输入选择记录的条件,也就是查询表达式。如果非常熟悉查询表 达式的书写规则以及表中字段名称,可以直接在文本框中输入表达式。对于那些不太熟悉表 达式书写规则和表中字段的用户,可以通过单击“辅助”按钮,弹出如图3-2所示的对话框。 通过在对话框中使用MapInfo提供的字段列表、操作符列表和函数列表的帮助,构造一查询 表达式。对于本例,要选择人口密度大于500的所有州,查询

8、表达式如下:因此可以首先在“表达式”对话框的“输入一个表达式”文本框中输入“(”,然后从“列” 下拉列表框中选择Pop_1990字段,这时MapInfo自动将Pop_1990加入到表达式中,下面可 以在表达式中直接输入“/”或从“运算符”下拉列表框中选择“/”。然后从“函数”下拉 列表框中选择Area函数,那么MapInfo将自动将“ Area (obj, “sq mi”)”加入到图3-2表达式对话框表达式中,然后输入“广。接下来可以直接输入“=”,或从“操作符”下拉列表框中选择 该操作符。最后在表达式中输入500。这样就完成了构造查询表达式,为了确保表达式构造 正确,可以通过单击“校验”按钮

9、来验证,如果表达式不正确,MapInfo将显示一对话框, 说明语法错误。选择“确定”按钮退出“表达式”对话框,返回到“选择”对话框中。此时,MapInfo在“选择”对话框的“满足条件”中添加了我们在“表达式”对话框中 构造的表达式。单击“确定”按钮便可以进行选择了,选择显示如果如图3-3所示。3-3选择结果从选择如果可以看到有5个对象满足条件,分别是Connecticut、District of Columbia、 Massachusetts、New Jersey 和 Rhode Island,都集中在美国东北角。MapInfo提供了许多用于空间图形对象的函数,例如Area()、Perimet

10、er()、Distance()、 ObjectLen()、SphericalObjectLen()、CartesianObjectLen()等。SQL查询用户可以通过MapInfo的Select命令构造一个相当复杂的查询,然而MapInfo还提供 了一个功能更强大的“SQL选择.”命令。由Select命令生成的查询表中的记录不会拥 有基础表的记录不包含的信息,也不能减少在基础表中的信息,事实上,它们的记录完全相 同,该查询表只将选择的记录排列在一起,而不显示其他记录。但是对于“SQL选择.” 命令,用户可以创建许多隐含在基础表中的信息,例如各国人口密度、人口增长速度等。为 了创建该信息,可以将

11、对一张或多张表的数据进行合并、聚合、运算、分析和汇总等操作。同时,作为一个GIS软件,MapInfo的SQL查询命令中包含有许多用于空间分析的函数和操 作。查询各国人口密度下面我们通过查询各国人口密度为例来说明SQL查询。打开世界国家行政区划表。从“查询”菜单中选择“SQL选择.”命令,该命令打开 如图4-1所示的“SQL选择.”对话框。“选择列.”中的默认值是一个*号,表示查询结果表中包含所有基表中的属性字段, 可以根据需要用选择的列代替*号。每列之间用逗号隔开,列名可以从右侧名为“列”的下 拉列表框中选择,不过在选择列名之前,必须在“从表”中加入表名。“从表”是首先要填写的栏目,因为所有S

12、QL查询都是针对某一个或多个基础表来完成 的。同样,可以从右侧的“表”下拉列表框中选择表名。多个表名之间用逗号分开。“按列分组”栏对于数据的统计、汇总和求均值很有用。该栏经常与“选择列”配合使 用。“按列排序”栏用于对查询表中的记录进行排序,通过该栏目可以进行升序、降序以及 嵌套排列等。“结果放入表”栏中填写查询结果名称。要注意的是,不管是否对查询表进行了命名, 该表始终是一临时表,只有通过“另存入”命令才能将它保存为一普通表。图4-1SQL选择对话框图4-2查询结果在本例中,首先将光标移动到“从表”中,并从表下拉列表框中选择WORLD表。将光标移动到“选择列”栏中,删除号,并从“列”下拉列表

13、框中选择Country, 可以给该字段重新指定名称,例如“国家”。从“列”下拉列表框中选择Pop_1994并直接输入“/”或从“运算符”下拉列表 框中选择“/”,然后从“函数”下拉列表框中选择Area函数,这样就创建了一个派生列, 可以将该派生列指定为“人口密度”。将光标移动到“条件”栏中,从“列”下拉列表框中选择Pop_1994,并直接输入 “/”或从“运算符”下拉列表框中选择“/”,然后从“函数”下拉列表框中选择Area函数,再输入“=”号,最后输入500。这样建立了一个条件表达式,即选择人口密度大于等于500 人/k的国家。将光标移动到“按列排序”栏中,从“列”下拉列表框中选择Count

14、ry,表示依 据国家名的字母顺序排列记录。将光标移动到“结果放入指表”栏中,在其中输入“人口密度大于5000的国家” 作为表名。单击“校验”按钮,验证SQL查询表达式是否正确。如果语法错误,MapInfo将给出一 条错误信息,并说明错误原因。单击“确定”按钮,将创建如图4-2所示的查询表。使用聚合函数帮助查询MapInfo提供了 6个聚合函数,它们分别是:Count(*)。用于计算一组中记录的个数。可用“*”作为参数,因为它将整条记录作 为一个整体来考虑,而不单独作用于某一个特定的字段。-Sum(表达式)。用于计算一组中所有记录的表达式的总和。-Avg(表达式)。用于计算一组中所有记录的表达式

15、的平均值。 WtAvg (表达式)。用于计算一组中所有记录的表达式的加权平均值。Max(表达式)。用于计算一组中所有记录的表达式的最大值。Min(表达式)。用于计算一组中所有记录的表达式的最小值。下面我们利用MapInfo提供的聚合函数计算世界各个洲的国家数目、总人口和总面积信 息,步骤如下。打开World.tab表。选择菜单“查询”中的” SQL选择.”命令,打开” SQL选 择.”对话框。将光标移动到“从表”中,从“表”下拉列表框中选择WORLD表。将光标移动到“选择列”中,从“列”下拉列表框中选择“Continent”,并输入 一个空格,在其后输入“洲名”。然后从“聚合”下拉列表框中选择

16、“Count”函数,输入一 个空格后输入国家数目“国家数” ”。从“聚合”下拉列表框中选择Sum函数,然后从“列”下拉表框中选择Pop_1994。 将光标移动到Sum函数的后面,输入一个空格后输入“总人口数”。Sum(Pop_1994)将创建 一个计算总人口的派生列。从“聚合”下列表框中选择Sum函数,然后从“函数”中选择Area函数。将光标 移动到Sum函数的后面,输入一个空格后输入“总面积”。Sum(Area(obj, “sqmi”)表达 式将创建一个计算总面积的排生列。将光标移动到“按列分组”栏中,从“列”中选择“Continent,表示按洲进行 归组。将光标移动到“按列排序”栏中,从“

17、列”中选择Continent,表示按洲名的字 母进行排序。将光标移动到“将结果保存在表”栏中输入“各大洲总人口和总面积”作为查询 表名。输入完毕后的” SQL选择.”对话框如图4-3所示。请检查是否输入正确,可 以通过“校验”按钮来检查语法错误。在” SQL选择.”对话框中选择“确定”按钮,将进行SQL查询。查询结果如图4-4 所示。图4-3输入查询表达式后的SQL选择对话框图4-4查询结果利用地理运算符帮助查询地理运算符允许用户根据对象的空间关系选择对象。MapInfo中与地理运算符同时 使用的关键字是obj,该关键字通知MapInfo是基于地理对象而不是表格数据来获取数 据。地理运算符放在

18、两个指定的对象之间,例如A Contains B。MapInfo提供了 5个地理运算符,它们分别为:-A Contains B。若对象B的中心在对象A中,则对象A包含对象B。, A Contains Entire B。若对象B的边界完全在对象A的边界内,则对象A完全 包含对象B。-A Winthin B。若对象A的中心在对象B中,则对象A包含于对象B中。-A Winthin Entire B。若对象A的边界完全在对象B的边界内,则对象A完全 包含于对象B中。 A Intersects B。若对象A和对象B至少有一个公共点或某一个完全在另一个之中时,对象A与对象B相交。例如,我们要统计在美国各个州中的城市,可按如下步骤操作。(1)打开States.tab表和City_125.tab表,并从“查询”菜单中选择”SQL选择.” 命令,打开” SQL选择.”对话框。(2)将光标移动到“从表”栏中,从“表”下拉列表框中以此选择CITY_125和STATESo(3)将光标移到“选择列”栏中,从“列”下拉对话框中依次选择CITY_125.City和 STATES.State_Name。(4)将光标移到“条件”栏中,先从“列”下拉列表框中选择CITY_125.obj,然后从 “运算符”中选择“Within”,最后从“列”下拉列表框中选择States.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论