深入探讨GIS数据字典生产

阿尔吉侬的梦 分享 时间: 收藏本文

【简介】感谢网友“阿尔吉侬的梦”参与投稿,下面是小编收集整理的深入探讨GIS数据字典生产(共8篇),仅供参考,希望能够帮助到大家。

篇1:深入探讨GIS数据字典生产

深入探讨GIS数据字典生产

本文基于笔者多年从事GIS数据制作的工作经验,以数据字典生产为研究对象,深度探讨了数据字典的作用、存储方式、内容和标准,是对数据字典生产的一个较为全面的诠释,文中的一些方法也是笔者工作实践的总结,相信本文的'研究对从事相关工作的同行有着重要的参考价值和借鉴意义.

作 者:张玉茜  作者单位:深圳市龙岗规划交通研究中心,广东深圳,518000 刊 名:科技资讯 英文刊名:SCIENCE & TECHNOLOGY INFORMATION 年,卷(期): “”(7) 分类号:P2 关键词:地理信息系统   数据字典   标准   方法  

篇2:地理信息系统数据字典生产研究

地理信息系统数据字典生产研究

本文以数据字典生产为研究对象,深度探讨了数据字其的概念、作用、存储方式、内客和标准,是对数据字其生产的一个较为全面的诠释,相信本文的.研究对从事相关工作的同行有着重要的参考价值和借鉴意义.

作 者:程雷  作者单位:61512部队,北京,100088 刊 名:科技资讯 英文刊名:SCIENCE & TECHNOLOGY INFORMATION 年,卷(期):2009 “”(20) 分类号:P2 关键词:地理信息系统   数据字典   标准  

篇3:数据字典在ArcView GIS中的实现与应用

数据字典在ArcView GIS中的实现与应用

数据字典在ArcView GIS中的实现与应用

汪新庆 李伟忠 刘刚

(中国地质大学国土资源信息系统研究所 武汉 430074)

摘  要:数据字典保存了有关数据库结构的重要信息,对于数据库系统的开发、维护有重要的意义。ArcView GIS是一款地理信息系统软件,具有对属性数据的操作功能,本文就数据字典在基于ArcView GIS的地理信息系统开发中的应用进行了探讨,通过数据字典技术管理ArcView中的图层,实现程序代码与数据模型的分离,从而提高程序的适应性。

关键词:数据字典 ArcView GIS   图层

数据字典是数据库系统中用来保存非数据信息的数据库,它承担着管理数据资源、数据标准化等功能,以其重要性被称为“数据库的数据库”[1][2]。ArcView GIS是ESRI(环境系统研究所)开发的桌面地理信息系统软件,采用了一种无拓扑关系的矢量数据格式shapefile,同时具有管理、处理属性数据表的能力[3][4]。

在“计算机辅助区域地质调查实习系统”的开发过程中,我们尝试了将数据字典技术应用到GIS图层的管理中。该系统涉及到地质观察点图层、GPS点图层、地质路线图层、地质界线图层、断层线图层、地质体图层等多类图层,而建立各类图层的关键在于建立图层的属性数据表,传统的编程开发都是将数据与代码紧紧绑在一起,这种方法的缺陷在于程序代码严重依赖数据模型,不利于系统的维护、升级,开发过程中一旦图层的`属性表的结构发生了更改,开发者将不得不更改大量的代码段。

鉴于ArcView GIS中的图层同数据库系统中的数据表存在相似性,在ArcView GIS中可以借鉴数据库系统中的数据字典来管理图层。简单地说,该数据字典主要包括以下几个数据表:

图层编号

图层说明

图层类型

图例文件

001

地质观察点图层

Point

Legend1.avl

002

地质路线图层

PolyLine

Legend2.avl

003

地质体图层

PolyGon

Legend3.avl

……

……

……

……

表1:图层信息表

字段代号

字段名称

字段类型

字段宽度

小数宽度

QDEBGA

地质点编号

CHAR

8

0

QDETYP

地质点类型

CHAR

1

0

PADTHP

地质路线编号

CHAR

6

0

……

……

……

……

……

表2:字段属性表

其中,表1是关于图层信息的数据表,主要保存系统中所存在的各图层的基本信息,其中[图层编号]字段中的值对于各个图层来说是唯一的,此编号由系统开发者编制,而非系统运行过程中随机生成。[图层类型]字段保存了各图层中空间对象的类型,[图例文件]字段中保存了缺省状态下系统为该图层配置的图例文件;表2是字段属性表,描述所有图层的属性表中包含的所有字段的信息,由于不同的图层可能包含同一字段,因此另有专门的数据表在图层与字段间建立链接。表2中各条记录(即各个字段)以”字段代号”相区别;表3表示了图层包含字段的关系。

图层编号

字段代号

001

QDEBGA

001

QDETYP

002

PATHID

篇4:简介Oracle的数据字典

首先,Oracle的字典表和视图基本上可以分为三个层次,

1.1 X$表

这一部分表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。

这部分表对数据库来说至关重要,所以Oracle不允许SYSDBA之外的用户直接访问,显示授权不被允许。

如果显示授权你会收到如下错误:

SQL> grant select on x$ksppi to eygle;grant select on x$ksppi to eygle*ERROR at line 1:ORA-02030: can only select from fixed tables/views

1.2 GV$和V$视图

从Oracle8开始,GV$视图开始被引入,其含义为Global V$.

除了一些特例以外,每个V$视图都有一个对应的GV$视图存在。

GV$视图的产生是为了满足OPS环境的需要,在OPS环境中,查询GV$视图返回所有实例信息,而每个V$视图基于GV$视图,增加了INST_ID列判断后建立,只包含当前连接实例信息。

注意,每个V$视图都包含类似语句:

where inst_id = USERENV(’Instance’)

用于限制返回当前实例信息。

我们从GV$FIXED_TABLE和V$FIXED_TABLE开始

SQL> select view_definition from v_$fixed_view_definition

where view_name=’V$FIXED_TABLE’;

VIEW_DEFINITION

----------------------------------------------------------

select NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE

where inst_id = USERENV(’Instance’)

这里我们看到V$FIXED_TABLE基于GV$FIXED_TABLE创建。

SQL> select view_definition from v_$fixed_view_definition

where view_name=’GV$FIXED_TABLE’;

VIEW_DEFINITION

-----------------------------------------------------------

select inst_id,kqftanam, kqftaobj, ’TABLE’, indx from x$kqfta

union all

select inst_id,kqfvinam, kqfviobj, ’VIEW’, 65537 from x$kqfvi

union all

select inst_id,kqfdtnam, kqfdtobj, ’TABLE’, 65537 from x$kqfdt

这样我们找到了GV$FIXED_TABLE视图的创建语句,该视图基于X$表创建。

1.3 GV_$,V_$视图和V$,GV$同义词

这些视图是通过catalog.ql创建,

当catalog.sql运行时:

create or replace view v_$fixed_table as select * from v$fixed_table;

create or replace public synonym v$fixed_table for v_$fixed_table;

create or replace view gv_$fixed_table as select * from gv$fixed_table;

create or replace public synonym gv$fixed_table for gv_$fixed_table;

我们注意到,第一个视图V_$和GV_$首先被创建,v_$和gv_$两个视图。

然后基于V_$视图的同义词被创建。

所以,实际上通常我们访问的V$视图,其实是指向V_$视图的同义词。

而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)。

而v$fixed_view_definition视图是我们研究Oracle对象关系的一个入口,仔细理解Oracle的数据字典机制,有助于深入了解和学习Oracle数据库知识。

1.4 再进一步

1.4.1 X$表

关于X$表,其创建信息我们也可以从数据字典中一窥究竟。

首先我们考察bootstrap$表,该表中记录了数据库启动的基本及驱动信息。

SQL> select * from bootstrap$;LINE# OBJ# SQL_TEXT-------------------------------------------------------------------1 -1 8.0.0.0.00 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 M8 8 CREATE CLUSTER C_FILE#_BLOCK#(“TS#” NUMBER,“SEGFILE#” NUMBER,“SEGBLOCK#” NUMBER)9 9 CREATE INDEX I_FILE#_BLOCK# ON CLUSTER C_FILE#_BLOCK# PCTFREE 10 INITRANS 2 MAXT14 14 CREATE TABLE SEG$(“FILE#” NUMBER NOT NULL,“BLOCK#” NUMBER NOT NULL,“TYPE#” NUMBE5 5 CREATE TABLE CLU$(“OBJ#” NUMBER NOT NULL,“DATAOBJ#” NUMBER,“TS#” NUMBER NOT NULL6 6 CREATE CLUSTER C_TS#(“TS#” NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS 2557 7 CREATE INDEX I_TS# ON CLUSTER C_TS# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (....

这部分信息,在数据库启动时最先被加载,跟踪数据库的启动过程,我们发现数据库启动的第一个动作就是:

create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents(file 1 block 377))

这部分代码是写在Oracle应用程序中的,在内存中创建了bootstrap$以后,Oracle就可以从file 1,block 377上读取其他信息,创建重要的数据库对象。从而根据这一部分信息启动数据库,这就实现了数据库的引导,类似于操作系统的初始化。 这部分你可以参考biti_rainy的文章。

篇5:如何有效地利用oracle的数据字典

oracle的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。

数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。我们不能手工修改数据字典里的信息。很多时候,一般的oracle用户不知道如何有效地利用它。

dictionary 全部数据字典表的名称和解释,它有一个同义词dict

dict_column 全部数据字典表里字段名称和解释

如果我们想查询跟索引有关的数据字典时,可以用下面这条sql语句:

sql>select * from dictionary where instr(comments,'index')>0;

如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条sql语句:

sql>select column_name,comments from dict_columns where table_name='user_indexes';

依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看oracle的其它文档资料了。

下面按类别列出一些oracle用户常用数据字典的查询使用方法。

一、用户

查看当前用户的缺省表空间

sql>select username,default_tablespace from user_users;

查看当前用户的角色

sql>select * from user_role_privs;

查看当前用户的系统权限和表级权限

sql>select * from user_sys_privs;

sql>select * from user_tab_privs;

二、表

查看用户下所有的表

sql>select * from user_tables;

查看名称包含log字符的表

sql>select object_name,object_id from user_objects where instr(object_name,'log')>0;

查看某表的创建时间

sql>select object_name,created from user_objects where object_name=upper('&table_name');

查看某表的大小

sql>select sum(bytes)/(1024*1024) as “size(m)” from user_segments where segment_name=upper('&table_name');

查看放在oracle的内存区里的表

sql>select table_name,cache from user_tables where instr(cache,'y')>0;

三、索引

查看索引个数和类别

sql>select index_name,index_type,table_name from user_indexes order by table_name;

查看索引被索引的字段

sql>select * from user_ind_columns where index_name=upper('&index_name');

查看索引的大小

sql>select sum(bytes)/(1024*1024) as “size(m)” from user_segments where segment_name=upper('&index_name');

四、序列号

查看序列号,last_number是当前值

sql>select * from user_sequences;

五、视图

查看视图的名称

sql>select view_name from user_views;

查看创建视图的select语句

sql>select view_name,text_length from user_views;

sql>set long ;说明:可以根据视图的text_length值设定set long 的大小

sql>select text from user_views where view_name=upper('&view_name');

六、同义词

查看同义词的名称

sql>select * from user_synonyms;

七、约束条件

查看某表的约束条件

sql>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');

sql>select c.constraint_name,c.constraint_type,cc.column_name

from user_constraints c,user_cons_columns cc

where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')

and c.owner = cc.owner and c.constraint_name = cc.constraint_name

order by cc.position;

八、存储函数和过程

查看函数和过程的状态

sql>select object_name,status from user_objects where object_type='function';

sql>select object_name,status from user_objects where object_type='procedure';

查看函数和过程的源代码

sql>select text from all_source where owner=user and name=upper('&plsql_name');

九、触发器

查看触发器

set long 50000;

set heading off;

set pagesize 2000;

select

'create or replace trigger “' ||

trigger_name || '”' || chr(10)||

decode( substr( trigger_type, 1, 1 ),

'a', 'after', 'b', 'before', 'i', 'instead of' ) ||

chr(10) ||

triggering_event || chr(10) ||

'on “' || table_owner || '”.“' ||

table_name || '”' || chr(10) ||

decode( instr( trigger_type, 'each row' ), 0, null,

'for each row' ) || chr(10) ,

trigger_body

from user_triggers;

篇6:GIS图形数据质量检查与实现

GIS图形数据质量检查与实现

针对地理信息系统中图形数据的质量问题,分析了图形数据缺陷的.特性,描述了图形数据的质量检查方法.

作 者:叶雁玲 YE Yan-ling  作者单位:广东省地图出版社,广东,广州,510075 刊 名:测绘与空间地理信息 英文刊名:GEOMATICS & SPATIAL INFORMATION TECHNOLOGY 年,卷(期): 32(4) 分类号:P208 关键词:地理信息系统   空间数据   质量  

篇7:建设GIS数据超市的构想

关于建设GIS数据超市的构想

通过对GIS数据分析,从数据库建设技术出发,提出GIS数据超市的概念,对从GIS底端产品、GIS中端产品、GIS高端产品到形成GIS数据超市的构想进行详细阐述.

作 者:张瑛 ZHANG Ying  作者单位:成都市勘察测绘研究院,四川,成都,610081 刊 名:测绘通报  ISTIC PKU英文刊名:BULLETIN OF SURVEYING AND MAPPING 年,卷(期): “”(8) 分类号:P208 关键词:GIS   底端产品   中端产品   高端产品   数据超市  

篇8:ECDIS与GIS数据集成研究

ECDIS与GIS数据集成研究

通过ECDIS与GIS技术的集成,可以利用GIS强大的空间数据处理能力和空间分析功能,促进ECDIS的应用与推广.本文通过对S-57标准与GIS数据模型的分析,研究了在GIS平台下建立S-57数据模型的`方法,并在MapInfo平台下完成了S-57电子海图向GIS数据格式的转换,实现了ECDIS与GIS的数据集成.

作 者:李勇 包世泰 周品 谭建军 陈少沛 LI Yong BAO Shi-tai ZHOU Ping TAN Jian-jun CHEN Shao-pei  作者单位:李勇,LI Yong(中山大学生命科学学院3S实验室,广州,510275;中国科学院广州地球化学研究所地理信息中心,广州,510640)

包世泰,BAO Shi-tai(华南农业大学信息学院,广州,510642)

周品,谭建军,ZHOU Ping,TAN Jian-jun(中国科学院广州地球化学研究所地理信息中心,广州,510640)

陈少沛,CHEN Shao-pei(中国科学院广州地球化学研究所地理信息中心,广州,510640;French Naval Academy Research Institute France,29240)

刊 名:测绘科学  ISTIC PKU英文刊名:SCIENCE OF SURVEYING AND MAPPING 年,卷(期):2007 32(4) 分类号:P208 关键词:电子海图显示与信息系统   地理信息系统   电子海图   S-57   数据集成  

相关专题 字典深入