数据库基础
‘壹’ 数据库基础
数据库 主要是一些概念的理解
例如 数据库、表、列、行 的关系。
1NF 2NF 3NF 什么的基本概念。
要背的, 一般也就是几个 主要的 sql 语句里面的关键字 和 语法
例如
查询用的 SELECT
插入用的 INSERT
更新用的 UPDATE
删除用的 DELETE
‘贰’ MySQL数据库基础+ 数据库的基本操作
需要用的资料以链接的形式给需要的同学。
我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw
图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs
开始我的MySQL之旅吧 始于2016.12.04
--WH
一、数据库的安装
这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(MySQL安装教程)去看,就能够安装完好。
安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去网络搜教程。
二、数据库的基本操作
1、开启mysql服务命令
net start mysql
2、进入mysql的两种方式
明文进入:mysql -uroot -proot格式:mysql -u帐号-p密码
密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。
3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)
前面四个数据库是mysql中自带的,也就是必须的.
SHOW DATABASES;
4、创建名为test_1的数据库
格式:CREATE DATABASE 数据库名
CREATE DATABASE test_1;
5、删除名为test_1的数据库
格式:DROP DATABASE 数据库名
DROP DATABASE test_1;
总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库
三、数据表的基本操作
数据表和数据库还有Mysql三者的关系
mysql中保存了很多数据库、一个数据库中可以保存很多表。
对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)
前提:表是在数据库下的,所以要先确实使用哪个数据库。
USE test_1;
1、创建数据表
格式:CREATE TABLE 数据表名(
字段名1数据类型[列级别约束条件],
字段名2数据类型[列级别约束条件],
字段名3数据类型[列级别约束条件]
);
注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。
解释:
1、[]中括号中的内容表示可以有可以没有,
2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横
3、约束条件后面会讲到
1.1、创建没有约束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注释:SHOW TABLES 查询数据库底下的所有表。
1.2、创建有约束的student表
六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加
1.2.1:主键约束
PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。
一般被主键约束了的字段度习惯性的称该字段为该表的主键
单字段主键约束
两种方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id) );
多字段主键约束(复合主键)
这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY,nameVARCHAR(12),
ageINT(11)ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外键约束
什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。
外键约束的特点:
1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。
2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。
3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。
注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。
格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES 主表名(主键字段)
英文解释:CONSTRAINT:约束REFERENCES:参考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id
1.2.3:非空约束
NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一约束
UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是说在插入的记录中,每条记录的name值不能是一样的。
1.2.5:默认约束
Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自动增加
AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查询表结构
2.1、查看表基本结构语句
格式1:DESCRIBE 表名/DESC 表名这两个的功能是一样的,简写了单词describe
DESCRIBEstudent;
2.2、查看创建表的语句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
这样显示的格式很不好,看不清楚,所以有了下面这个语句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改数据表
修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER
3.1、修改表名
格式:ALTER TABLE<旧表名> RENAME[TO]<新表名>;
将student表名改为student1(改完后在改回来)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的字段名
格式:ALTER TABLE<表名> CHANGE<旧字段名><新字段名><新数据类型>
将student表中的name字段名改为 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的数据类型
格式:ALTER TABLE<表名> MODIFY<字段名><数据类型>
ALTER TABLE student MODIFY username VARCHAR(20);
解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。
3.4、修改字段的排列位置
方式1:ALTER TABLE<表名> MODIFY<字段1><数据类型> FIRST|AFTER<字段2>
解释:将字段1的位置放到第一,或者放到指定字段2的后面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><数据类型> FIRST|AFTER<字段3>
解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
总结
CHANGE和MODIFY的区别?
原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。
3.5、添加字段
格式:ALTER TABLE<表名称> ADD<新字段名><数据类型>[约束条件][FIRST|AFTER<已存在的表名>]
解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、删除字段
格式:ALTER TABLE<表名称> DROP<字段名>;
ALTER TABLE student DROP sex;
3.7、删除表的外键约束
格式:ALTER TABLE<表名称> DROP FOREIGN KEY<外键约束名>
注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。
3.8、更改表的存储引擎
格式:ALTER TABLE<表名> ENGINE=<更改后的存储引擎名>
这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。
4、删除表
4.1、删除无关联表
格式:DROP TABLE<表名>;
ALTER TABLE student;
4.2、删除被其他表关联的主表
这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法
1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除
2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。
‘叁’ sql数据库入门需要学习那些
数据库基本原理,要懂一些的.
可以对照理论在SQL数据库中走例子, 大量的练习这个是必须的了.
学会了基本的,搞搞SQL优化,便是提高了.
‘肆’ 数据库基础知识
1)
select b.name from book as a ,student as b where a.title like '数据库原
理';
2)
select a.sid form student as a, lend as b,return as c where (b.sid =
a.sid or c.sid = a.sid )and ldate = rdate;
3)
select distinct (t.title)书名,(select(max(a.price) from book as a)价格
from book as t
‘伍’ 数据库学习需要什么基础
不需要基础,计算机的学习最大的基础就是兴趣,只要有兴趣,许多东西不学就会了。
‘陆’ 基础数据库
(一)数据内容
基础数据库包括系统运行前所采集到的所有支撑数据,数据的具体内容在数据分类与数据源章节中已描述,概括可分为以下几类。
(1)遥感影像数据:包括历史图像数据,以及按照一定监测周期更新的遥感图像数据。
(2)数字线划图数据:矢量数据(现状专题图和历史专题图数据)、栅格数据、元数据等。入库前数据以ArcInfoCoverage格式分幅或整体存储,采用地理坐标系统。
(3)数字栅格图数据:包括1∶5万和1∶10万基础地理图形数据的扫描栅格数据。
(4)数字高程模型数据:塔里木河干流河道1∶1万和“四源一干”区域1∶10万数字高程模型。
(5)多媒体数据:考察照片、录像、录音和虚拟演示成果等多媒体资料。
(6)属性数据:社会经济与水资源数据、水利工程数据、生态环境数据等。
(二)数据存储结构
1.栅格数据
栅格数据包括遥感影像、数字栅格图、数字正射影像图、数字高程模型等,这些数据的存储结构基本类似,因此可进行统一设计。遥感图像数据库与普通的图像数据库在存储上有些差别,遥感图像作为传感器对地理、空间环境在不同条件下的测量结果(如光谱辐射特性、微波辐射特性),必须结合同时得到的几个图像才可以认为是对环境在一定的时间条件下的完整的描述,也即是说,可能需要一个图像集合才能构成一个图像的完整的概念,并使之与语义信息产生联系(罗睿等,2000)。因此,遥感图像数据存储结构模型必须能够描述几个图像(波段)之间的逻辑关系。利用ArcSDE进行数据入库时,系统可自动建立各图像(波段)之间的关系,并按一定规则存储在数据库系统中。
对栅格数据在后台将采用Oracle数据库管理系统进行存储。Oracle系统可直接存储影像信息,并具有较强的数据管理能力,可以实现栅格数据信息的快速检索和提取。数据引擎采用ArcSDE,实现各类影像数据的入库。数据存储的关键是建立图幅索引,本系统数据的存储按图幅号、图名、采集时间等内容建立索引。
栅格数据依据图形属性一体化的存储思想,采用大二进制格式直接存储数据,这种方式的存储可实现内容的快速检索查询,按索引表检索出相关项后可直接打开栅格数据,提高栅格数据的管理效率。
2.矢量数据
本系统采用图属一体化思想即将空间数据和属性数据合二为一,全部存在一个记录集中的思想存储空间数据,是目前GIS数据非常流行的存储方法。考虑到数据的具体情况,决定采用数据库存储空间数据和属性数据,部分具有少量、定型几何信息的地理要素如水文测站、河流、湖泊等,采用图属一体化思想存储其信息,而与其有关联关系的大量、多边化的属性信息如水文信息,则存储在属性数据表中,利用唯一标识符信息建立两表的关联。
针对本系统空间数据的特点,系统按照“数据库—子库—专题(基础数据)—层—要素—属性”的层次框架来构筑空间数据库,按照统一的地理坐标系统来存储空间数据,以实现对地理实体/专题要素进行分层叠加显示。
3.多媒体数据
Oracle系统可直接存储图片和视频信息,并具有较强的数据管理能力,可以实现多媒体信息的快速检索和提取。多媒体数据存储的关键是建立索引表,本系统多媒体数据的存储按类型、时间、内容等项目建立索引,直接存储于Oracle数据库中。
多媒体数据存储时,可以将多媒体内容与索引表结构合为一体,采用大二进制格式直接存储,这种存储方式可实现内容的快速检索和查询,按索引表检索出相关项后可直接打开多媒体内容,而且多媒体数据库也便于维护管理。
(三)空间索引设计
1.矢量空间索引
确定合适的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度就低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率低。每一个数据层可采用不同大小、不同级别的空间索引格网单元,但每层级数最多不能超过三级。索引方式设置遵循以下基本原则:
(1)对于简单要素的数据层,尽可能选择单级索引格网,减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程;
(2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网;
(3)如果用户经常对图层执行相同的查询,最佳格网的大小应是平均查询范围的1.5倍;
(4)格网的大小不能小于要素封装边界的平均大小。为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取要素封装边界平均大小的3倍;
(5)格网单元的大小不是一个确定性的问题,需要多次尝试和努力才会得到好的结果。有一些确定格网初始值的原则,用它们可以进一步确定最佳的格网大小。
SDE(Spatial Data Engine,即空间数据引擎),从空间管理的角度看,是一个连续的空间数据模型,可将地理特征的空间数据和属性数据统一集成在关系型数据库管理系统中。关系型数据库系统支持对海量数据的存储,从而也可实现对空间数据的海量存储。空间数据可通过层来进行数据的划分,将具有共同属性的一类要素放到一层中,每个数据库记录对应一层中一个实际要素,这样避免了检索整个数据表,减少了检索的数据记录数量,从而减少磁盘输入/输出的操作,加快了对空间数据查询的速度。
ArcSDE采用格网索引方式,将空间区域划分成合适大小的正方形格网,记录每一个格网内所包含的空间实体(对象),以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网号,就可以快速检索到所需的空间实体。因此确定合适的格网级数、单元大小是建立空间格网索引的关键,太大或太小均不合适,这就需要进行多次尝试,确定合适的网格大小,以保证各单元能均匀落在网格内。利用ArcSDE的索引表创建功能,记录每一网格单元的实体分布情况,形成图层空间索引表。根据空间索引表,ArcSDE实现了对空间数据的快速查询。
2.栅格数据空间索引
栅格数据的空间索引通过建立多级金字塔结构来实现。以高分辨率栅格数据为底层,逐级抽取数据,建立不同分辨率的数据金字塔结构,逐级形成较低分辨率的栅格数据。该方法通常会增加20%左右的存储空间,但却可以提高栅格数据的显示速度。在数据库查询检索时,调用合适级别的栅格数据,可提高浏览和显示速度。
(四)入库数据校验
入库数据的质量关系到系统评价分析结果的准确性。数据在生产中就需要严格进行质量控制。依据数据生产流程,将数据质量控制分成生产过程控制和结果控制。生产过程控制包括数据生产前期的质量控制、数据生产过程中的实时质量控制,结果质量控制为数据生产完成后的质量控制(裴亚波等,2003)。对入库数据的校验主要是进行数据生产完成后的质量控制和检查。
1.规范化检查
(1)代码规范化:所有地理代码尽量采用国家标准和行业标准,例如,行政代码采用中华人民共和国行政区划代码国标。
(2)数据格式规范化:所有数据采用标准交换数据格式,例如,矢量数据采用标准输出Coverage格式和E00格式。
(3)属性数据和关系数据字段规范化:所有属性数据和关系数据提前分门别类地设计字段的内容、长短和格式,操作过程中严格执行。
(4)坐标系统规范化:本系统所有与空间有关的数据采用统一的空间坐标系统,即地理坐标系统。
(5)精度规范化:所有数据按照数据精度与质量控制中所要求的精度进行采集和处理。
(6)命名规范化:所有数据按照命名要求统一命名,便于系统的查询。
(7)元数据规范化:依照元数据标准要求,进行元数据检查。
2.质量控制
数据质量是GIS成败的关键。对于关系型数据库设计,只要能保证表的实体完整性和参照完整性,并使之符合关系数据库的三个范式即可。对于空间数据库设计,则不仅要考虑数据采样、数据处理流程、空间配准、投影变换等问题,还应对数据质量做出定量分析。
数据质量一般可以通过以下几个方面来描述(吴芳华等,2001):
(1)准确度(Accuracy):即测量值与真值之间的接近程度,可用误差来衡量;
(2)精度(Precision):即对现象描述得详细程度;
(3)不确定性(Uncertainty):指某现象不能精确测得,当真值不可测或无法知道时,就无法确定误差,因而用不确定性取代误差;
(4)相容性(Compatibility):指两个来源不同的数据在同一个应用中使用的难易程度;
(5)一致性(Consistency):指对同一现象或同类现象表达的一致程度;
(6)完整性(Completeness):指具有同一准确度和精度的数据在类型上和特定空间范围内完整的程度;
(7)可得性(Accessibility):指获取或使用数据的容易程度;
(8)现势性(Timeliness):指数据反映客观现象目前状况的程度。
塔里木河流域生态环境动态监测系统的所有数据在数据质量评价后,还需要从数据格式、坐标一致性等方面进行入库质量检验,只有通过质量检验的数据才可以入库。
3.数据检验
空间数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)投影方式是否正确;
(4)坐标系统是否正确;
(5)改错是否完成,拓扑关系是否建立;
(6)属性数据是否正确,包括字段设置是否依据设计进行、是否有空属性记录、是否有属性错误记录等。
关系数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)数据字段是否按设计要求设置;
(4)是否有空属性记录;
(5)是否有属性错误记录。
属性数据的校验,主要采用以下三种方式:
(1)两次录入校验:对一些相互之间毫无关联的数据,进行两次的录入,编写程序对两次录入的结果进行比较,找出两次录入结果不一样的数据,查看正确值,进行改正。
(2)折线图检验:对一些相互之间有关联的序列数据,如人口统计数据,对这一类数据,编写程序把数据以折线图的形式显示在显示器上,数据的序列一般都有一定规律,如果出现较大的波动,则需对此点的数据进行检查修改。
(3)计算校验:对一些按一定公式计算后所得结果与其他数据有关联的数据,如某些数据的合计等于另一数据,编写程序对这类数据进行计算,计算结果与有关联的数据进行比较,找出结果不一样的数据,查看正确值,进行改正。
图形数据的校验,主要包括以下步骤(陈俊杰等,2005):
(1)图层校验:图形要素的放置图层是唯一的。对于入库的Coverage数据,系统将根据图层代码进行检查,确保图形要素对层入座。
(2)代码检查:图形要素的代码是唯一的。对于入库的Coverage数据,系统将根据入库要素代码与特征表中的代码进行比较,确保入库数据代码存在,杜绝非法代码入库。
(3)类型检查:对入库的数据,检查该要素的类型与特征表中的类型是否一致,确保图形要素对表入座。如点要素、线要素、面要素仅能赋相应的点、线、面代码,且该代码必须与特征表中的数据类型代码相同。
(4)范围检查:根据入库的数据,确定该类要素的大体范围(如X、Y坐标等),在数据入库前,比较入库数据与范围数据的大小,若入库数据在该范围内,则入库,否则给出提示检查信息。
(五)数据入库
1.遥感影像数据
利用空间数据引擎———ArcSDE可实现遥感影像数据在Oracle数据库中的存储和管理,在影像数据进行入库时,应加入相应的索引和影像描述字段。
遥感影像入库步骤:
(1)影像数据预处理:要将塔里木河遥感影像数据库建成一个多分辨率无缝影像数据库系统,客观上要求数据库中的影像数据在几何空间、灰度空间连续一致。因此,在数据采集阶段就需要对影像数据进行预处理,包括图像几何校正、灰度拼接(无缝镶嵌)、正射处理、投影变换等。
几何校正的目的是使校正后的图像重新定位到某种地图投影方式,以适用于各种定位、量测、多源影像的复合及与矢量地图、DTM等的套合显示与处理。几何校正多采用二次多项式算法和图像双线性内插重采样法进行图像校正。将纠正后具有规定地理编码的图像按多边形圈定需要拼接的子区,逐一镶嵌到指定模版,同时进行必要的色彩匹配,使整体图像色调一致,完成图像的几何拼接,再采用金字塔影像数据结构和“从粗到精”的分层控制策略实现逐级拼接。
数字正射影像具有统一的大地坐标系、丰富的信息量和真实的景观表达,易于制作具有“独立于比例尺”的多级金字塔结构影像。可以采用DTM和外方位元素经过数字微分纠正方法,获得数字正射影像,它的基本参数包括原始影像与正射影像的比例尺、采样分辨率等(方涛等,1997)。
投影变换需根据数据库系统定义的标准转换到统一的投影体系下。
(2)影像数据压缩:随着传感器空间分辨率的提高和对遥感信息需求的日益增长,获取的影像数据量成几何级数增大,如此庞大的数据将占用较大的存储空间,给影像的存储和传输带来不便(葛咏等,2000)。目前,系统处理的遥感影像数据已达数百千兆,单个文件的影像数据最大达到了2G,这样的数据量在调用显示时速度很慢,对影像数据进行压缩存储,将大大提高影像访问效率。本系统采用ArcSDE软件提供的无损压缩模式对入库影像进行压缩。
(3)影像导入:遥感影像的入库可通过ArcSDE或入库程序进行导入,并填写相关的索引信息,在入库时对大型的遥感影像数据进行自动分割,分为若干的块(tiles)进行存储。
(4)图像金字塔构建:采用ArcSDE提供的金字塔构建工具在入库时自动生成图像金字塔,用户只需要选择相应的参数设置即可。图像金字塔及其层级图像按分辨率分级存储与管理。最底层的分辨率最高,并且数据量最大,分辨率越低,其数据量越小,这样,不同的分辨率遥感图像形成了塔式结构。采用这种图像金字塔结构建立的遥感影像数据库,便于组织、存储与管理多尺度、多数据源遥感影像数据,实现了跨分辨率的索引与浏览,极大地提高了影像数据的浏览显示速度。
2.数字线划图
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和拼接存储的数字矢量图,就可以进行图形数据入库。
(1)分幅矢量图形数据、图幅接合表:按图形比例尺、图幅号、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
(2)拼接矢量图形数据:按图形比例尺、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
3.栅格数据
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和整体存储的数字栅格图,然后进行图形数据入库。
(1)分幅栅格图形数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)整幅栅格图形数据:按比例尺、制作时间等方式,通过入库程序导入到数据库中。
4.数字高程模型
(1)分幅数字高程模型数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)拼接数字高程模型数据:按比例尺、制作时间等方式通过入库程序导入到数据库中。
5.多媒体数据
多媒体数据入库可根据多媒体数据库内容的需要对入库数据进行预处理,包括音频、视频信息录制剪接、文字编辑、色彩选配等。对多媒体信息的加工处理需要使用特定的工具软件进行编辑。由于音频信息和视频信息数据量巨大,因此,对多媒体数据存储时需采用数据压缩技术,现在的许多商用软件已能够直接存储或播放压缩后的多媒体数据文件,这里主要考虑根据数据显示质量要求选择采用不同的存储格式。图4-2为各类多媒体数据的加工处理流程。
图4-2 多媒体数据加工处理流程图
6.属性数据
将收集的社会经济、水利工程、生态环境等属性资料,进行分析整理,输入计算机,最后经过程序的计算处理,存储到数据库中,具体流程如图4-3所示。
图4-3 属性数据入库流程图
‘柒’ 学数据库要什么基础
Database理论基础
SQL语言加强一下
然后啃一本Oracle入门书,并且多加练习,遇到困难多查manual
有问题别上网络这问,去找个专业点的Oracle论坛,边学边问
‘捌’ 数据库基本概念
字段
记录中的一个数据项称为字段。
数据项
数据项也称为分量,是数据库中可以命名的最小逻辑数据单位,指某个元组对应列的属性值,用来描述属性的数据。
记录
记录也称为元组,指的是关系中的一行数据,用它描述实体。它是数据项的有序集,即一个记录是由若干个数据项组成。
‘玖’ 数据库系统的基础是什么
现有的数据库系统均是基于某种数据模型的。数据模型是数据库系统的核心和基础。
‘拾’ 什么是数据库的基础数据
数据库的基础数据通常是指一些基本资料的数据,例如:
部门表
商品类型表
商品表
客商类型表
客商资料表
它们的特点就是(每行)单一一个对象,所以又叫基本资料表.
相对来讲复杂的表,例如销售订单表.通常复合了多个对象,比如销售订单表可能有这些字段:
落订日期业务员客商ID单号等.已经包含了员工资料,和客商资料等.