Query Layer介绍writeline特点
题记
Query Layer的具体介绍大家在2010年Esri中国北方用户大会分发的ArcGIS中国通讯上已经有《ArcGIS10新特性之Query Layer介绍》,这里面就不做重复的说明了。下面所介绍的就是对文中没有涉及知识的相关补充。
概念
Query Layer是通过SQL 查询定义的图层或独立表。通过查询图层可将空间信息和非空间信息都存储在DBMS 中,从而使这些信息可以轻松地整合到ArcMap 中的各GIS 项目。
其实就是把我们的空间数据图层的概念看作成后台数据库存储的表的概念,因为我们通常习惯于利用SQL语句来直接操作属性表,但是对空间数据图层来说在ArcGIS10之前是不支持的,鉴于大家对SQL的喜爱,Esri在ArcGIS10就引入了Query Layer,它就可以直接使用SQL语句进行查询或者空间数据与属性数据的联表查询。
使用前
必须采用当前使用的ArcGIS 版本支持的DBMS 版本。
∙查询图层定义中必须包括在查询图层中用作对象ID 的唯一、非空的列或列组合。
∙根据所使用的DBMS 类型,可能需要在DBMS 中进行一些必要的配置来使用空间类型。
∙另外,根据DBMS 类型,可能需要在从中创建查询图层连接的每个客户端计算机上进行一些配置。
特点
保存为文件
通过另存为图层文件(.lyr)、创建图层包(.lpk) 或通过地图包(.mpk) 绑定地图和关联数据,查询图层可在用户之间、应用程序之间和其他地图文档之间轻松地实现共享。
其实这个文件与我们经常使用的MXD文件有异曲同工之妙,该文件并没有存储真正的查询数据信息,而是存储了服务器连接信息、查询过滤条件信息,这样也就保证我们随时可以查询最新的信息。
案例
为了证明新增数据可以同步在Query Layer显示,笔者进行了相关测试。
环境:Oracle数据库、ArcMap10、ArcSDE10
1:新建一个Query Layer图层
2:选择数据连接
3:针对一个图层或者一个图层与普通表进行条件过滤或者联表查询条件过滤
4:参数添加完毕后,Query Layer就可以加载到ArcMap上了,然后也可以另存为上面所说的相关格式文件。假如我们将Query Layer存储为XX.lyr文件,C:\Users\gis\AppData\Roaming\ESRI\Desktop10.0\ArcMap文件夹下会产生一个***.qcf存储Query Layer的连接信息文件。
5:编辑当前源数据文件,修改相关属性,使其在过滤条件之内。
6:重新加载Query Layer文件,发现并没有实时的将最新的数据给加载上去。这是为什么呢?
解决方式:查看帮助,ArcGIS10有中文帮助,肯定让不少GISer为之疯狂。
如果在ArcSDE 地理数据库中对版本化的要素类定义了查询,则查询将只返回基表中的数据;而不会返回添加表(Add 表)或删除表(Delete 表)中的任何信息。
看到这个信息就恍然大悟,原来这个Query Layer针对版本数据时这个概念啊!这点相似于版本与历史归档的关系。
感觉这个让用户有点不爽了,编辑完数据,必须实时的进行Compress,才能使数据进行同步了。
扩展
鉴于Query Layer可以保存为一个文件而不用保存数据的特点,我们在使用ArcGIS Engine开发的时候,也可以事先把我们经常要使用的查询语句所对应的数据以Query Layer的文件形式保存,到时候我们直接可以加载该*.lyr文件,然后再进行相关分析。案例
在国土行业中,我们会使用地类图斑这个面状图层进行相关分析,因为该图层包含一个土地用途的字段(土地用途就是将不同的土地利用以不同的利用代码),因为该土地用途包含了我们使用的所有代码,但是我们有时候针对的数据往往可能是,我专门对耕地(011,012,013)或者建设用地(201等)这些进行分析或者统计,那么我们就可以事先创建不同的Query Layer进行分析,不用每次就进行先查询后分析的过程了。Query Layer比较
Query Layer VS. Definition Query
Definition Query:单个要素类、动态显示、非保存
只是对某一个要素类进行过滤条件的查询,而且这些数据不能以文件的形式保存(注意不是将数据导出,而是说,我进行该方式的查询,如果再一次使用同样的条件只能将Where 条件重新输入。
Query Layer VS. Join
Join:可以进行单个要素与属性表的连接,动态显示、非保存
这一点其实与上面的Definition Query比较类似。而且Join不能处理1对多的关系。Query Layer VS. ArcSDE视图
ArcSDE视图:与Query Layer类似,支持单个要素类或者一个要素类与属性表联表、在数据库中以视图的形式存储。
Query Layer可用于作为地理处理工具的输入来显示数据,或使用开发人员API 通过编程方式进行访问。Query Layer可以修改相关的过滤条件,但是ArcSDE视图都不能做到。ArcGIS Engine开发Query Layer
获得SQL工作空间
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论