针对包含 ST_Geometry 列的表应用空间视图
空间视图是包含几何列的数据库视图。
空间视图的用途之一是消除多余的空间列,以便将视图注册到 ArcSDE。由于无法注册包含多于一个空间列的空间表,因此如果要注册到 ArcSDE,使用表的空间视图是唯一选择。
定义视图时,只能选择将其中一个空间列包含在视图中。然后可将视图注册到 ArcSDE。
以下为创建空间视图、然后在此视图上运行查询的示例。
创建包含一个空间列的视图
CREATE VIEW quake_v AS SELECT objectid,shape FROM quakes4;
在此例中,创建了空间视图并且在该视图上创建了空间连接。
CREATE VIEW san_berdoo_quakes_v AS SELECT a.objectid, a.location, b.name FROM quakes4 a, st_counties b WHERE b.name = 'San Bernardino' AND st_intersects(a.location,b.boundary)=1;
以下是 Informix 中地理数据库的同一个示例:
CREATE VIEW san_berdoo_quakes_v AS SELECT a.objectid, a.location, b.name FROM quakes4 a, st_counties b WHERE b.name = 'San Bernardino' AND st_intersects(a.location,b.boundary);
从视图中选择
SELECT COUNT(*) FROM san_berdoo_quakes_v;
创建空间物化视图
物化视图是包含查询结果的数据库对象。这些对象通常用于 Oracle 物化视图(或快照)高级复制。DB2 中,物化视图也称为物化查询表。
CREATE MATERIALIZED VIEW quake_mv AS SELECT objectid,shape FROM quakes4;
DB2
CREATE TABLE quake_mv as (SELECT objectid,shape FROM quakes4) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER SET INTEGRITY FOR quake_mv MATERIALIZED QUERY IMMEDIATE UNCHECKED
在物化视图上进行选择
SELECT COUNT(*) FROM quake_mv a, st_counties b WHERE b.name = 'San Bernardino' AND st_intersects(a.shape,b.shape)=1;
注意:
无法在 Informix 中创建与此类似的物化视图。查看视图时,仅一个视图要求创建临时表。例如,如果使用许多表的并集来创建视图,则查询此视图时,临时表必须由 Informix 创建。Informix 中没有等效机制。
与以 LOB 存储格式存储的 ArcSDE 要素类相同,使用 Oracle 物化视图复制也支持空间类型图层。DB2 复制套件允许空间数据复制,但此复制不等效于 Oracle 物化视图复制。
有关通过 ArcGIS 使用多版本化视图和其他数据库视图的详细信息,请参阅以下主题:
。相关主题
3/7/2012