ArcGIS中的查询

    最近身体不适,静下心来看了一下以前收集的电子书。下面是《ArcGIS地理信息系统教程_第5版》(李玉龙)第5章“查询”的读书笔记。

1.查询的常见应用:

    选择感兴趣的要素:查找哪些要素满足特定标准。例如当前成都哪些房价是本人能够承受的价格范围?应该没有。

    探索图案样式:从选定的要素中创建地图,并检查其空间分布。例如到底是哪些位置排污量大,造成如此重度污染?

    为进一步分析而分离要素:例如要分析个人的效益情况,先要把工资高、干活少的员工选择出来。

    探索空间关系:哪趟火车能够到达目的地附近50公里城市?

    创建栅格查询:矢量查询用得非常多,但栅格也可以按像元进行查询。例如从土地利用类型图上查询近3年本市建筑范围变化的区域。

    查询主要包括空间查询(Spatial Query)和属性查询(Attribute Query)两种。

2.属性查询

    属性查询遵守SQL语法,但需要每个表达式条件必须包含一个字段名(即使为相同字段),例如SQL无法正确识别表达式”Gay”=’工资高’ AND ‘干活少’,而应当写成”Gay”=’工资高’ AND ‘”Gay”=‘干活少’。

    除了AND、OR、NOT外,有时XOR也有用。

    当遇到多个表达式时,用括号来区分判断的先后顺序;或者使用“在当前选择集中选择”来一步一步地选择。

    模糊查询时,记住通配符,在Shapefile文件文件中’%‘表示任意个字符,’_‘表示一个字符;但在数据库中’?‘表示任意个字符,’?‘表示一个字符。

    例如:"NAME" LIKE ‘% LiJie%’,表达中第2个%,也许有人认为是多余的,通常情况是这样的。但是这确定避免出现一种特殊情况,就是姓名后面多出一些意外的空格,以致于无法选择正确的内容。

3.空间查询

    空间查询是GIS所独有的一种功能强大的工具,是基于空间关系进行选择。例如大家熟悉的平移和缩放也是一种特殊的空间查询类型。平移和绽放操作基于XY坐标定义了一个兴趣矩形,并提交软件返回落入其中的所有要素。

    因为要素类的精确度和几何准确度不同,经常会发生真实世界中的一致的两个对象(例如河流标尺和河流),当在GIS中比较其XY坐标时无法完全精确匹配。当评估空间条件时,指定搜索半径非常有用,可以使用要素不需要精确匹配。

    以城市与河流相交的问题为例。国家比例尺下的城市通过点来表达,而河流是通过广义线来表达的。即使城市真的与河流相交,如果点发生在表示西游记的线上也只是幸运,应用搜索半径是一种解决方案,假定典型的大城市可能通过一侧的10km2所表示,那么设置搜索半径为5km也许能够生成一种可以接受的结果。即使如此,可能还是会遇到一些错误的结果(正值的相关与负值)。

   必须总是记得真实世界中的实体与GIS所表现的实体之间的差别,并缓和由于比例尺或精度所导致的问题。例如在这种情况下,用户可能继续执行了查询,但是然后通过联机影像来检查每个选定的城市,从而确保存在正确的关系。

4.空间关系

    包含:检查一个要素是否包含另一个要素。分为以下六种情况:

    A严格等于B(具有完全相同的几何特征),对应are identical to(A相等B);

    B所有要素完全被A环绕,对应A completely contains B(A完全包含B),也对应B completely within A(B完全位于A范围内);

    B位于A内,但它们共享一条边,对应contains(A包含B),也对应B within A(B位于A范围内);

    A中某个要素的中心是否位于B中某个要素范围内,对应A have their center in B(A 中心位于 B)。

    相交:返回A中接触、穿越或叠加B中要素任何部分的任何要素. A are crossed by the boundary of B (A被B的边界所穿越),返回A中只穿越B中要素边界的要素。

    邻近:检测A中要素与B中要素之间有多么接近。最常见的检测是are within a distance of(在……距离范围内),选择A中位于B某个特定距离范围内的要素。例如返回学校周围2公里范围内所有地块。邻接(Adjacency)是一种特殊的邻近情形,距离变为0,实际上要素的边界彼此之间接触在一起,这些条件为share a line segment with(与……共享一条线段)和touch the boundary of(接触……的边界)运算符所覆盖。

5.要素选择方法

    在ArcMap中提供了3种要素选择方法:交互式选择,按属性选择和按位置选择。

    处理包含选择的图层,在ArcMap中有一个非常重要的原则:图层要素选中,只会处理选择的部分,否则全部处理。

    交互式选择方法

    创建选择图层:选择要素后可以右键创建选择图层,选择图层显示在原图层的上方,其具有几种优势,不仅可以为其指定自己的符号,而且能够独立于原始图层之外进行显示。如果选定的集合是复杂分析的焦点所在,那么该图层会为未来使用而保留选定的要素,从而避免意外清除这个选择而不得不再次执行它的风险。选择图层可用于将相同的要素集合输入到不同的工具或命令,对于 查看和记录长且复杂的系列查询的中间结果很有用。用户也可将该图层保存为图层文件,然后在其他地图文档中使用。当对源图层或选择图层进行编辑时,同时改变。

    因为基于要素类,所以不会创建要素的多个副本,也举改变源数据。当需要临时副本的时候,而要素来自于自己的数据或者多个用户所共享的机构数据库,这是最好的解决方案。

 

    定义查询:定义查询是图层的一种属性,类似于选择图层,但是不从选定的集合创建,查询实际上执行的目标是定义哪些要素包含在图层中。像图层一样,定义查询指向原始数据库,而不是创建其副本,并且分享相同的优点和缺点。

 

 

时间: 2024-10-22 12:41:40

ArcGIS中的查询的相关文章

ARCGIS中,面图元与数据库的链接,求指点。

问题描述 请问各位老大,请教一个问题:在ARCGIS中我有一个面层,是管护区面,现在有一个ACCESS数据库,库中有管护区的表,我想把管护区面层和管护区的表链接起来,以实现面和数据库表中的数据一一对应,然后再实现把表中的各个列中的数据在ARCGIS中标记到管护区面层上,大概的步骤和思路应该是怎样的?新手小白刚接触ARCGIS,请尽量细致点说说,感激不尽~! 解决方案 解决方案二:找唯一值对应.arcmap中也可以加载表,加载图层,右键,Join,选择对应字段,挂接.在你新建的字段上赋值就可以了.

jsp问题-jsp中模糊查询,后台没有出错,为什么实现不了?

问题描述 jsp中模糊查询,后台没有出错,为什么实现不了? 点击查找只是刷新页面,后台没有问题,但是又实现不了 具体代码: <% request.setCharacterEncoding("utf-8"); %> <%! private static final String DBDRIVER ="org.gjt.mm.mysql.Driver"; private static final String DBURL ="jdbc:mysq

SQL邮件自动应答(根据收到的邮件中的查询语句回复语句执行结果)

语句|执行 SQLMail可以收发邮件,可能好多人都有xp_sendmail发送过邮件,这里介绍一种邮件服务器接收邮件后,根据邮件内容(只能是查询语句)把邮件中的查询语句执行后的结果以附件形式自动返回给发送邮件者. eg: 发送邮件,邮件内容为: select top 10 id,name from sysobjects则服务器自动回复邮件,内容为上述查询语句的执行结果,以附件形式发送. 1:当然是先配置好SQL邮件服务了,这方面的资料比较多,此处不赘述. 2: 把sp_processmail稍

使用准则进行条件查询--1.4.从窗体中选择查询的条件

4.从窗体中选择查询的条件 前面的方法虽然简单,但对用户来说操作不够方便,对设计者来说也难以控制,如果通过窗体来实现,这些问题就可以解决了. 如下面的窗体,运行时用户可以在组合框中选择要查询司机的姓名,按下查询按钮就可以看到查询的结果. 下面详细地列出设计的步骤: 创建一个窗体,按下控件向导按钮,在窗体上添加一个组合框.在第一个对话框中选择"我想让组合框在一个表或查询中查找这些值",下一步. 选择一个为组合框提供数据的表或查询.下一步. 选择组合框中要显示的数据,通常除了选择要显示在组

SQL SERVER中对查询结果随机排序

server|排序|随机 译:SQL SERVER中对查询结果随机排序 Randomly Sorting Query Results 查询结果随机排序 Q. How can I randomly sort query results?问:怎样才能对查询结果随机排序? A. To randomly order rows, or to return x number of randomly chosen rows, you can use the RAND function inside the S

Access2K中的查询分析器

access|查询分析 利用ACCESS可以用查询创建视图这一功能来进行查询分析. 选择查询->在设计视图中创建查询,然后关闭弹出的表选择对话框, 在下面的窗口上右击选择SQL视图就可以了,当然也可以在此时从系统菜单或者工具栏进入: 查询结果返回查询语句编辑界面也是在这个窗体上右击选SQL视图. 不过,记得最后不需要保存结果,不然真的是变成视图了.

提高商业智能环境中DB2查询的性能-专用于数据仓库和B 的查询调优方法(2)

方法 1:在事实表与三个维度表之间定义适当的参照完整性约束 在 DB2 中,可以定义主键和外键约束,以允许数据库管理器对数据实施参照完整性约束.外键等参照约束还有助于提高性能.例如,如果修改 清单 2 中的查询中的子表达式 TMP1,去掉 PRODUCT_DIM 表上的本地谓词,那么,如果在 SALES_FACT.PRODUCT_ID 上创建一个外键约束,则优化器会消除 SALES_FACT 和 PRODUCT_DIM 之间的连接.如果创建了外键约束,则那样的连接被认为是无损的(lossless

Access 2000中的查询分析器

利用ACCESS可以用查询创建视图这一功能来进行查询分析. 选择查询->在设计视图中创建查询,然后关闭弹出的表选择对话框, 在下面的窗口上右击选择SQL视图就可以了,当然也可以在此时从系统菜单或者工具栏进入: 查询结果返回查询语句编辑界面也是在这个窗体上右击选SQL视图. 不过,记得最后不需要保存结果,不然真的是变成视图了.

DB中如何查询Table占用空间的大小

Oracle和DB2都支持分区表,但是我们得知道什么样的表适合使用分区表技术,Oracle的官方建议是超过2G的Table就要使用分区表. 下面来总结一下,各DB中如何获得这些大小信息: Oracle 10G中: 查询出当前用户的表所占用的空间大小,并按大小进行降序排列: Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by Sum(bytes)/1024/1024 de