针对包含 ST_Geometry 列的表应用空间视图

空间视图是包含空间列的数据库视图。

空间视图的用途之一是消除多余的空间列,以便在 ArcGIS 中查看数据。由于无法注册包含多于一个空间列的空间表,因此如果要通过 ArcGIS 客户端应用程序与数据交互,使用表的空间视图是唯一选择。

定义视图时,只能选择将其中一个空间列包含在视图中。

以下是使用 SQL 创建空间视图的示例:

创建包含一个空间列的视图

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);

创建空间物化视图

物化视图是包含查询结果的数据库对象。这些对象通常用于 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 物化视图复制。

相关主题

9/15/2013