第5章空间数据查询.ppt

上传人:本田雅阁 文档编号:2550968 上传时间:2019-04-07 格式:PPT 页数:24 大小:598.01KB
返回 下载 相关 举报
第5章空间数据查询.ppt_第1页
第1页 / 共24页
第5章空间数据查询.ppt_第2页
第2页 / 共24页
第5章空间数据查询.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章空间数据查询.ppt》由会员分享,可在线阅读,更多相关《第5章空间数据查询.ppt(24页珍藏版)》请在三一文库上搜索。

1、第5章 空间数据查询,5.1 对象查询 5.1.1 对象 5.1.2 对象查询 5.2 SQL查询 5.2.1 通过“选择”来查询 5.2.2 通过“选择SQL”查询 5.2.3 “SQL选择”的操作示例,5.2.4 SQL选择 5.2.5 “选择列”字段 5.2.6 “条件”字段 5.2.7 “按列排序”字段 5.2.8 “按列分组”字段 5.2.9 聚合函数 5.3 习题5,5.1 对象查询,5.1.1 对象 1. 点对象 :点是有特定的位置,维数为零的物 体 。 2. 线对象:是GIS中非常常用的维度为一的空 间组分,表示对象和它们边界的空间属性,由一 系列坐标表示。 3. 多边形对象

2、:面状实体也称为多边形,是对 湖泊、岛屿、地块等一类现象的描述。通常在数 据库中由一封闭曲线加内点来表示。,5.1.2 对象查询,图5-1 选择好记录的窗口,图5-2 “浏览表”对话框,图5-3 查询结果浏览窗口,5.2 SQL查询,SQL(Structure Query Language)是结构化查询语言,是一套强大的查询系统。语言简单、指令简洁、操作简单、功能强大,被广泛运用在相互关联的数据库中,并能完成十分复杂的查询和选择。,5.2.1 通过“选择”来查询,图5-4 “查询”菜单,图5-5 “选择”对话框,1. 从表中选择记录 2. 满足条件 3. 存结果于表 4. 结果排序按列 5.

3、浏览结果 6. 保存模板 7. 载入模板,图5-6 “表达式”对话框,5.2.2 通过“选择SQL”查询,1. 选择列 2. 从表 3. 条件 4. 按列分组 5. 按列排序,6. 结果放入表 7. 浏览结果 8. 使用下拉列表 9. 保存模板 10. 载入模板,图5-7 “SQL选择”对话框,5.2.3 “SQL选择”的操作示例,例如:查询并显示出人口大于3000万的省份,图5-9 满足条件的浏览窗口,图5-10 人口3000万的省份单独显示,图5-11 不排序 图5-12 升序 图5-13 降序,5.2.4 SQL选择, 打开希望查询的表(倘若尚未打开的话)。 选择“查询”“SQL选择”。

4、 打开一个地图窗口或一个浏览窗口(若用户想看到查询结果)。 MapInfo自动选中结果表中所有行。 若希望对查询表做一个永久拷贝,选择“文件”“另存为”。,5.2.5 “选择列”字段,1. 计算派生列 “SQL选择”可以计算派生列并将其保存在结果表中。 【例5-1】显示一个进行加法运算的派生列表达式,它将两个数值型列相加。例中假设Purchase92和Purchase93都是数值型字段。 选择列:Purchase 92 Purchase 93,2. 选择显示在结果表中的列 结果表中只包括在“选择列”域中输入的一个或多个列。这一点在表中有许多列,而只希望使用其中少数列(可能是因为在屏幕上一次只能

5、显示其中少数列)时很有用。 输入一系列列名: 在“从表”域中输入表名(若还未输入的话)。可以直接输入表名或是在“表”下拉式列表中选择表名。 单击“选择列”域,该域中出现插入符。 如果该域中有星号,先用Backspace键或Delete键将其删除。“选择列”域中可以含有一个星号或者一系列列名。 在对话框右侧的“列”下拉列表中选择一个列名。MapInfo将该列名复制到“选择列”域中。 如果希望查询中包含多个列,可以在“列”下拉式列表中选择其它列名。在选择其它列名时,MapInfo自动插入逗号以分隔列名。,3. 使用“SQL选择”对话框的“选择列”字段 使用“选择列”域来指定查询结果表中应该出现哪些

6、列。若想结果表中含有与原始表相同的列集,在“选择列”域中输入一个星号(*)。 若想结果表中含有的列集与原始表不同,删除星号,并输入用逗号分隔的一系列列名或表达式,如下所述。“选择列”域可包含星号或一系列列表达式,但二者不可得兼。在填写“选择域”之前,请先填好“从表”域。 若查询涉及多个表,每个列名前必须加上表名,用句点分开表名和列名。这样,若你执行涉及两个表的查询,其中一个是“Canada”表,用户希望查询包括“Canada”表的“Population”列,则必须使用列表达式Canada.Population。无论何时使用两个或多个表,“列”下拉式列表会自动将表名插入到列名前。,5.2.6 “

7、条件”字段,1. 按行序连接表 若两个表没有公共列,还可以按照记录的顺序进行表连接。若知道一个表的第一条记录对应于另一个表的第一条记录,或更一般地说,一个表的第N条记录对应于另一个表的第N条记录,就可以通过引用一个特殊的名为RowID的列将两个表连接。 RowID列含有代表着表中每个记录的行号的整数。因此,任何表的第一条记录的RowID值为1,第二条记录的RowID值为2,依此类推。 要连接两个表使得MapInfo匹配两个表的第N条记录,指定一个如下形式的“条件”表达式。 条件: TABLE_1.RowID = TABLE_2.RowID,2. 按地理关系连接表 若两个表有图形对象,MapIn

8、fo能根据那些对象之间的空间关系来连接表 。,图5-10 对象包蕴关系,3. 连接两个或多个表 MapInfo能利用该公共字段将两表连接。,表5-1 Counties表,表5-2 Orders表,方法: 选择列:* 从表:Counties, Orders 条件: Counties.CountyName = Orders.County,表5-1 Counties表,表5-2 Orders表,4. 执行子选择 MapInfo允许SQL选择中有子选择。子选择是被放在“SQL选择”对话框中的“条件”域内的选择语句。 【例5-9】选择states中超过4,000,000人的所有城市。 选择列* 从表 c

9、ities 条件 obj within any(select obj from states where Pop_1990 4000000),5. 设置过滤规则 过滤条件是常用于比较列值与其它值的逻辑表达式。例如,下面的过滤条件使用大于运算符()来检查Order_Amount列的值是否大于100。 “条件”:Order_Amount 100 如果查询包括上述“条件”子句,MapInfo只选择Order_Amount值大于100的行。 如果表达式被词and或or隔开,“条件”子域可包含两个或多个逻辑表达式。如果表达式被词and连接,MapInfo只选择满足全部两个条件的行。如果表达式被词or连接

10、,MapInfo选择满足任一条件的所有行。,6. 使用“SQL选择”对话框的“条件”字段 “条件”域有好几个作用。某些情况下,用户可能要使用一个条件表达式来过滤表,以便只看到那些满足一定准则的行。在其它情况下,可使用条件域来指定关系连接,从而查询能包括二个或多个表中的列。 注意:不能在“条件”域中使用聚合函数。,5.2.7 “按列排序”字段,1. 选择升序或降序排序 缺省情形下MapInfo按升序对表进行排序。要将字段按降序排以使大数字排在小数字前,可以在“按列排序”域中将desc放在列名字前。 【例5-12】查询World表时,以下的Order By排序准则。按列排序:Population

11、desc将该表按Population字段进行降序排序。 选择列: * 从表: City_1K 按列排序 State, Population desc,2. 使用“按列排序”字段排序结果表 在“SQL选择”对话框中使用“按列排序”域,可将结果表的记录排序。排序影响在浏览窗口中记录从上而下出现的顺序。 【例5-13】按照State列对City_1K表排序。 结果表按州名排序;但是,在California组内各行中,城市并未排序,San Francisco出现在Anaheim之上。要改正这一问题,可以在“按列排序”域中输入两个列名: 选择列: * 从表: City_1K 按列排序: State, C

12、ity,5.2.8 “按列分组”字段,1. 按列分组示例 【例5-14】设想有一个顾客订单表。该表中每一行表示单个订单。表中一列包含订货销售代理的名字,另一列含有顾客名字,还有一列包含订货量。 对每个销售代理,可找出: 该代理的订单数目。 该代理的平均订货量。 该代理的总订货量。 以下SQL选择查询产生所需结果: 选择列 Sales_Rep, count(*), average(AMOUNT), sum(AMOUNT) 从表 Orders 按列分组 Sales_Rep,2. 使用“按列分组”字段分类汇总结果表 【例5-15】若有一个顾客数据库,并按州名列分组,MapInfo会将所有得克萨斯州的

13、顾客放入一组,所有加利福尼亚州的顾客放入另一组,等等。然后,MapInfo计算每一组的聚合信息(总计、平均等)。 指定分类汇总标准: 在“按列分组”域中,输入MapInfo用于计算分类汇总的列的列名或列号。 例如,若要按州总计顾客表,可输入表示顾客所在州的列的列名(如StateName)。 在“选择列”域中,输入同一列名(如StateName)。 在“选择列”域中,输入一个或多个运算符(Sum、Count Avg、Min或Max)。请记住用逗号分隔开聚合运算符。,5.2.9 聚合函数,MapInfo提供以下聚合函数: Count(*):计算一组中记录总数。它简单地使用*作参数,因为它应用到整条

14、记录,而非某个特定字段。 Sum(表达式):计算一组中所有记录的表达式总计值。 Avg(表达式):计算一组中所有记录的表达式平均值。 Max(表达式):找出一组中所有记录的表达式最大值。 Min(表达式):找出一组中所有记录的表达式最小值。,5.3 习题5,一、 思考题 1. 对象有哪几种形式?并说明对象的特征。 2. 说明“选择”查询与“SQL”查询的区别是什么? 3. 使用“SQL”选择的过程步骤是什么? 4. 如何正确理解对象包蕴关系。 二、上机练习 1. 上机进行对象的查询,并显示查询结果。 2. 上机分别练习“选择”查询与“SQL”查询这两种查询方法。 3. 上机完成本书中的“SQL”查询实例。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1