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数据,可以省略不要。
ALTERUSERuser1 GRANTCONNECTTHROUGH 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,如需转载请自行联系原作者










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