ArcGIS VPD应用

简介:

1、在SDE数据库中创建测试面状要素类testfeature,如下:

   SQL> desc sde.testfeature;
Name     Type            Nullable Default Comments 
-------- --------------- -------- ------- -------- 
OBJECTID INTEGER                                   
TYPE     NUMBER(5)       Y                         
SHAPE    SDE.ST_GEOMETRY Y   

2 创建数据库访问角色和用户,并授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--创建地图服务账户user1
CREATE  USER  user1 IDENTIFIED  by  password123
DEFAULT  TABLESPACE SDE
TEMPORARY  TABLESPACE  TEMP ;
--为地图服务账户赋予数据库访问权限
GRANT  CONNECT ,RESOURCE  to  user1;
--创建地图服务账户user2
CREATE  USER  user2 IDENTIFIED  by  password123
DEFAULT  TABLESPACE SDE
TEMPORARY  TABLESPACE  TEMP ;
--为地图服务账户赋予数据库访问权限
GRANT  CONNECT ,RESOURCE  to  user2;
--授权user1和user2通过SDE用户访问SDE数据
ALTER  USER  user1  GRANT  CONNECT  THROUGH sde;
ALTER  USER  user2  GRANT  CONNECT  THROUGH sde;
--供水设施浏览角色:role1
CREATE  ROLE role1  NOT  IDENTIFIED;
GRANT  SELECT  ON  SDE.testfeature  TO  role1;
--将角色授权给用户
GRANT  role1  TO  user1;
GRANT  role1  TO  user2;
备注:授权user1和user2通过SDE用户访问SDE数据,可以省略不要。
ALTER USER user1  GRANT CONNECT THROUGH sde;

ALTERUSERuser2 GRANTCONNECTTHROUGH sde;

或可以不用创建角色,直接给用户user1和user2授权:

1
2
grant select  on sde.testfeature TO user1;
grant select  on sde.testfeature TO user2;


3 在sde用户中创建策略函数(以sde用户登录)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--编写策略函数(get_data)
CREATE  OR  REPLACE   FUNCTION   get_data(p_owner  in  varchar2, p_object  in  varchar2)  return  varchar2  IS
v_region varchar2(40);
begin
     v_region := sys_context( 'USERENV' , 'SESSION_USER' );
IF v_region =  'USER1'  then
   return   'Type=1' ;
ELSIF v_region =  'USER2'  then
   return   'Type=2' ;
ELSIF v_region =  'USER3'  then
   return   'Type=3' ;
ELSE
   return  null ;
end  IF;
end ;

4    在sys用户中应用策略

1
2
3
4
5
6
7
8
9
10
11
--应用策略
BEGIN
dbms_rls.add_policy(
     object_schema =>  'sde' ,
     object_name =>  'testfeature' ,
     policy_name =>  'testfeature_pol' ,
     function_schema =>  'sde' ,
     policy_function =>  'get_data' ,
     Statement_Types => 'Select' ,
     Enable => True );
END ;

5、 测试

(1)以sde用户连接数据库,加载要素类testfeature,结果如下:

wKioL1MgLybBKkw9AAFvWd3FBLU630.jpg

备注:策略函数中sde用户返回值为null,即不加谓词。

(2)以user1用户连接数据库,加载要素类testfeature,结果如下:

wKiom1MgL62QgbL-AACvM6DoS58142.jpg


备注:user1用户返回值为Type=1,即只显示Type=1的要素。


查看策略使用情况:

1
select  object_owner,object_name,policy,predicate  from  V$VPD_POLICY;

wKioL1MgNdeyxgQCAAFURLOEnqk136.jpg


清除所有数据:

1
2
3
4
5
6
7
8
9
10
11
drop  user  user1  cascade ;
drop  user  user2  cascade ;
drop  role role1;
drop  function  sde.get_data;
BEGIN
    DBMS_RLS.drop_policy (
                  object_schema =>  'sde' ,
                  object_name =>  'testfeature' ,
                    policy_name =>  'testfeature_pol' );
END ;
commit ;






     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1374177,如需转载请自行联系原作者










相关文章
|
9月前
|
数据可视化 定位技术
ArcGIS应用基础3 属性表的操作-以人口密度分布图为例
😀在本文中,作者以人口密度分布图为例,详细讲解了属性表的连接、字段添加和计算等功能,最终将人口密度可视化到地图上进行了底图整饰输出。
172 0
|
9月前
|
数据可视化 定位技术
ArcGIS应用基础2 制作数据统计图
😃在本文中,你将学会ArcGIS要素可视化,按空间位置选择要素,属性表汇总统计及统计图表绘制的基本流程
139 0
|
9月前
|
编解码 数据可视化 定位技术
ArcGIS应用基础4 专题图的制作
😉🏆🏆在本文中,作者以人口密度图为例,详细讲解了基于ArcGIS布局视图下专题图制作的流程,介绍了地图要素的配置。
113 0
ArcGIS应用基础4 专题图的制作
|
9月前
|
数据可视化 定位技术
ArcGIS应用基础1 数据显示、查询及可视化
😃在本文中,你将学会ArcGIS中数据查看、信息检索、要素符号化及要素标注的基本流程。
151 0