现在的位置: 首页 > 综合 > 正文

ArcGIS表关联方式介绍(二)-ArcSDE视图、QueryLayer、RelationshipClass

2013年10月11日 ⁄ 综合 ⁄ 共 3103字 ⁄ 字号 评论关闭
文章目录

ArcSDE View

         使用数据:单个要素类,要素类与普通表

使用场景:必须存储在数据库中使用ArcSDE进行管理

存储方式:以视图的形式存储在数据库中,用户调用可以将该视图看作一个普通要素类,但是该视图为只读模式。

使用方法:必须在ArcSDE机器上创建相关的视图即可

C:\Users\gis>sdetable -o create_view -T myview -t place,owner -c place.name,place.shape,
place.pid,owner.name -w "place.id=owner.id" -i esri_sdeora -u test -p test
ArcSDE 10.0  for Oracle11g Build 1343 Thu Feb 17 11:45:42  2011
Attribute        Administration Utility
-----------------------------------------------------
        Error: Underlying DBMS error (-51).
        Error: Unable to create view myview
ORA-00957: 重复的列名
(myview)

之所以出这个错误,我们可以看出Place表有一个name字段,Owner表有一个name

字段,这个如果不定义-a(视图列)就会出现这个问题。


C:\Users\gis>sdetable -o create_view -T myview -t place,owner -c place.name,place.shape,
place.pid,owner.name  -a placename,shape,placeid,ownername -w "place.id=owner.id" 
-i esri_sdeora -u test -p test
ArcSDE 10.0  for Oracle11g Build 1343 Thu Feb 17 11:45:42  2011
Attribute        Administration Utility
-----------------------------------------------------
Successfully created view myview.

优点:用户可以创建自己想要的视图,而且用户在调用这些视图时就像操作普通的要

素类一样方便,不用的时候直接删除这些视图即可。

缺点:如果条件需要改变,需要重新创建视图;

     使用命令行操作,对用户要求比较高

     用户必须在服务器端(安装ArcSDE服务器)才能进行创建

注意:在进行数据编辑时需要注意,如果是对空间数据进行非版本编辑的话,打开视图

可以实时看到更新的数据,如果是对空间数据进行版本编辑的话,打开视图并不

能看到最新的数据,如果对数据进行协调提交压缩等操作到基表即可。

Query Layer

Query Layer是通过 SQL 查询定义的图层或独立表。通过查询图层可将空间信息和非空间信息都存储在 DBMS 中,从而使这些信息可以轻松地整合到 ArcMap 中的各 GIS 项目。

其实就是把我们的空间数据图层的概念看作成后台数据库存储的表的概念,因为我们通常习惯于利用SQL语句来直接操作属性表,但是对空间数据图层来说在ArcGIS10之前是不支持的,鉴于大家对SQL的喜爱,Esri在ArcGIS10就引入了Query Layer,它就可以直接使用SQL语句进行查询或者空间数据与属性数据的联表查询。

使用前

  • 必须采用当前使用的 ArcGIS 版本支持的 DBMS 版本。
  • 必须安装数据库的客户端
  • 查询图层定义中必须包括在查询图层中用作对象 ID 的唯一、非空的列或列组合。
  • 根据所使用的 DBMS 类型,可能需要在 DBMS 中进行一些必要的配置来使用空间类型。 SQLServer(Geometry、Geography),Oracle(ST_Geometry、SDO_Geometry)

保存为文件

通过另存为图层文件 (.lyr)、创建图层包 (.lpk) 或通过地图包 (.mpk) 绑定地图和关联数据,查询图层可在用户之间、应用程序之间和其他地图文档之间轻松地实现共享。

其实这个文件与我们经常使用的MXD文件有异曲同工之妙,该文件并没有存储真正的查询数据信息,而是存储了服务器连接信息、查询过滤条件信息,这样也就保证我们随时可以查询最新的信息。

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文件,发现并没有实时的将最新的数据给加载上去。

     注意:在进行数据编辑时需要注意,如果是对空间数据进行非版本编辑的话,打开

QueryLayer可以实时看到更新的数据,如果是对空间数据进行版本编辑的话,

打开Querylayer并不能看到最新的数据,如果对数据进行协调提交压缩等操作

到基表即可。

  这些信息其实和上面的视图描述基本一样,但是在ArcGIS10.1在QueryLayer

方面会有所改变,也就是不管你是版本编辑或者非版本编辑,都能实时更新最新

更新的数据。

Relationship Class

         其实对关系类来说,最大的优势并不是将空间要素类与属性表进行关联,它的最大的作用可以关联空间要素类与空间要素类的关系。举个国土的例子,国土有一种面状要素类称为宗地,还有一种面状要素类称为房屋,而且房屋要素必须在宗地上面,如果建立两者的拓扑关系,宗地要素必须包含房屋要素,那么这就产生了一种关系,可以存在无房屋的宗地,但是不能存在无宗地的房屋。所以关系类最大的作用就是管理空间数据的业务关系。

    

以下是使用关系类的优点:

l  使用关系类有助于增强相关对象之间的引用完整性。

建立关系类便可在修改对象时自动地更新其相关对象。这包括以物理方式移动相关要素、删除相关对象或更新属性。例如,您可以建立关系来确保当移动电线杆时,电线杆上的变压器和其他设备也随之一起移动。通过设置规则,关系类可以限制有效的关系类型。例如,一种电线杆最多可以支持三类变压器。钢制的电线杆支持 A 类变压器而不支持 B 类变压器。即使相关联的类中有一个没有被添加到 ArcMap 会话中,关系类也将有效地保持相关类之间的引用完整性。

l  关系类易于编辑,有助于降低您的维护成本。

通过自动更新相关对象,关系类可以减少额外的编辑操作。关系类有助于您在编辑的同时访问对象。可以选择一个对象,然后使用“属性”对话框或表查找所有相关对象。当您导航到相关对象时,就可以对该对象的属性进行编辑。无论链接多深,所有相关类都可进行编辑。因为关系类在地理数据库中存储,所以可以使用版本对其进行管理。多用户通过版本可以同时编辑关系中的要素或记录。

l  您可以使用关系类查询相关要素和记录。与ArcMap 连接类似,您可以对相关类的属性进行查询、执行分析以及生成报告。

l  对于不同分辨率,没有任何限制。简单或复合关系类可由不同分辨率的要素类组成。

关于关系类,我们专门进行一个专题研究,这里不再说明。


文档下载地址:http://download.csdn.net/source/3485040

抱歉!评论已关闭.