示例:使用 SQL 在 PostgreSQL 中创建空间视图并对其进行注册
通过使用 SQL 并将空间列包含到视图定义中,可以在 ArcSDE 地理数据库中创建空间视图。使用 SQL 创建空间视图时,必须将其注册到 ArcSDE,才能使用 ArcGIS 查询该空间视图,并使其显示为要素类。
本示例在 employees 表与 region 要素类之间创建了一个空间视图。
创建包含空间列的视图
对视图进行定义,使其包括来自要素类的空间列和对象 ID 以及所需的其他属性列。
employees 表和 regions 要素类的所有者是 gdb 用户;因此,该用户已经具有创建该视图的所需权限。
psql testdb gdb Enter password for user gdb: CREATE VIEW emp_region_vw AS SELECT ( employees.emp_name,employees.emp_id, hbear.regions.rname, hbear.regions.reg_id, hbear.regions.region) FROM employees, hbear.regions WHERE employees.emp_id = hbear.regions.emp_id;
reg_id 是来自 regions 要素类的非空整型列,在将视图注册到 ArcSDE 时,它将用作行 ID。Region 是来自 regions 要素类的空间列。
授予空间视图权限
创建了视图后,将 select 权限授予 dispatch1 用户。通过包含 WITH GRANT OPTION,用户 dispatch1 便可将视图权限授予其他用户。
GRANT SELECT ON emp_region_vw TO dispatch1 WITH GRANT OPTION;
将视图作为图层注册到 ArcSDE
要使用 ArcGIS 查询空间视图,必须将视图作为图层注册到 ArcSDE。这样做便会将记录添加到 ArcSDE sde_layers 和 sde_geometry_columns 系统表。
sdelayer -o register -l emp_region_vw,region -e a -t ST_GEOMETRY -C reg_id,USER -E 2.20,2.20,3.01,3.01 -R 1 -i sde:postgresql -s mypgdbserver -D testdb -u gdb -p gdb.bdg
视图中的 region 空间列使用 ST_GEOMETRY 存储类型并且存储面要素;因此,使用 –t 选项来指定 ST_GEOMETRY,而使用 –e 选项来指定 a(面积)。这些选项以及除 –o 选项外的所有其他选项均视数据而定。
有关 sdelayer 命令的详细信息,请参阅《管理命令参考》。
7/10/2012