示例:使用 SQL 在 SQL Server 中创建空间视图并对其进行注册

复杂程度: 入门级 数据要求: 使用自备的数据

通过使用 SQL 并将空间列包含到视图定义中,可以在 ArcSDE 地理数据库中创建空间视图。使用 SQL 创建空间视图时,必须将其注册到 ArcSDE,才能使用 ArcGIS 查询该空间视图,并使其显示为要素类。

本示例在 employees 表与 region 要素类之间创建了一个空间视图。

创建包含空间列的视图

对视图进行定义,使其包括来自要素类的空间列和对象 ID 以及所需的其他属性列。

employees 表和 regions 要素类的所有者是 gdb 用户;因此,该用户已经具有创建该视图的所需权限。

USE testdb;

CREATE VIEW emp_region_vw
AS SELECT (e.emp_name,e.emp_id,r.rname,r.reg_id,r.region) 
FROM employees e JOIN region r 
ON e.emp_id = r.emp_id;

GO

reg_id 是来自 regions 要素类的非空整型列,在将视图注册到 ArcSDE 时,它将用作行 ID。Region 是来自 regions 要素类的空间列。

授予空间视图权限

现在已创建好视图,可以将 select 权限授予 ptolemy 域登录名。通过包含 WITH GRANT OPTION,用户 ptolemy 便可将视图权限授予其他用户。

USE testdb;

GRANT SELECT 
ON emp.region.vw 
TO [ourdomain\ptolemy]
WITH GRANT OPTION;

GO
提示提示:

在将权限授予 ptolemy 域登录名之前,必须将其添加到 SQL Server 实例和 testdb 数据库中。

将视图作为图层注册到 ArcSDE

要使用 ArcGIS 查询空间视图,必须将视图作为图层注册到 ArcSDE。这样做便会将记录添加到 ArcSDE SDE_layers 和 SDE_geometry_columns 系统表。

图层必须由视图所有者注册;因此,必须通过–u 和 –p 选项提供 gdb 用户名和密码。

sdelayer -o register -l emp_region_vw,region -e a 
-t GEOMETRY -k GEOMETRY -C reg_id,USER -R 1
-E 2.20,2.20,3.01,3.01 -u gdb -p gdb.bdg 
-i sde:sqlserver:server1\ssinstance2 -D testdb

emp_region_vw 中的空间列使用 SQL Server Geometry 存储类型并且存储面要素;因此,使用 –t 和 –k 选项来指定 GEOMETRY,而使用 –e 选项来指定 a(面积)。为这些选项以及除 –o 外的所有其他选项所赋的值将视数据而定。

有关 sdelayer 命令的详细信息,请参阅《管理命令参考》


7/10/2012