空间数据库引擎探究(转自 http://www.goldenbg.com/article.asp?id=819)
2007-05-31 15:55
513 查看
把GIS数据放在RDBMS中,但是一般的RDBMS都没有提供GIS的数据类型(如点、线、多边形、以及这些feature之间的拓扑关系和投影坐标等相关信息),RDBMS只提供了少量的数据类型支持:int,float,double,Blog,Long ,char等,一般都是数字,字符串和二进制数据几种。并且RDBMS不仅没有提取对GIS数据类型的存储,也没有提供对这些基础类型的操作(如:判断包含关系,相邻、相交、求差、距离、最短路径等)。
为了实现GIS数据类型的存储和对GIS数据类型的操作支持。我们可以采用曲折的办法来达到这些目的。
1、 存储:把featrue以一个二进制的字段形式存储,同时建立对该二进制数据的描述信息(称为空间元数据)。
2、 操作:为每种feature建立一组函数包。
A、 读取时,先读取空间元数据,根据元数据把featrue的二进制数据填充到featrue对象的data部分中。
B、 写入时,先写入空间元数据,然后把featrue对像的data部分序列化为二进制数据,然后存储到feature字段中。
C、 空间运算:空间运算操作的内容为fatrue对象的data部分,而空间运算做为fatrue类成员函数。或者单独为每种feature建立相关的函数包。
下面我们先探究空间数据类型的存储。存储主要牵涉到的是GIS数据的元数据部分。我们需要管理好各种空间数据。
同种类型的featrue我们归为一类,我们称为featrue类,每个feature类对应着数据库中的一个二进制字段,每个feature对象对应着这个二进制字段的具体数值。为了把GIS的feature的属性数据和空间数据存储到一起,统一管理。我们建立这样几个概念。
数据集:对应着数据库中的一张表,这个表里有featrue的二进制字段和一般的属性字段,同时还包括每个feature对象的元数据字段如:周长、面积以及辅助字段。
数据源:对应着数据库中的一组表,由两部分组成:一部分是数据集,另一部分是对数据集描述的表(称空间元数据表)。通常是每个schma(或者数据库)下一组空间元数据表。
起辅助作用的数据库对象:包括为各个数据集建立的索引、触发器、序列……
空间元数据表包括:
A:描述每个数据集的表:这个表里的字段包括:每个数据集的包围盒。以及对该数据集所建的索引的类型,名称等。
B:描述数据集字段的表:这张表的字段包括:数据集名,字段名称,字段类型,字段别名、数据集别名、数据集类型等……
C:辅助对象的元数据表:包括描述索引与数据集之间关系的表,包括描述触发器与数据集之间关系的表,包括描述序列与数据集之间关系的表。描述数据集之间关系的表(如网路数据集,是由点类型的数据集与线类型的数据集组成,这就需要说明点与线之间的拓扑关系咯)
上面我们只讨论矢量的GIS数据类型的存储,下面我们来探究下栅格类型的GIS数据存储。
同样的也有栅格的数据集,只不过是字段的类型稍微改变了下而已。为了加快数据存取,我们应当使得GIS操作只存取它所需要的数据,以一张遥感影像为例,我们可以把一块大影像按一定规则切割为一系列的小图块,然后把这些小图块以二进制的形式存储到IMAGE字段里,同时把该小图块的偏移位置(有了其实位置,和偏移位置以及每个图块的大小就知道了该图块的地理范围了)作为表的属性字段存储下来。以后在取数据时,需要先查该图块的元数据内容,得出地理范围(或者干脆就把每个图块的地理范围存储下来),这样就知道在显示时需要取哪些记录,然后再把需要显示的记录的IMAGE的数据取出来,根据地理范围把数据拼接起来就可以了(矢量数据的显示与操作也是这么干)。图块大小的划定规则是比较重要的,这非常影响速度的。
一般来讲一个波段,对应着一个栅格数据集。在显示影像时,需要同时读取多个栅格数据集,在显示的时候把它们拼接到一起。
我们还需要描述这些栅格数据集的元数据表,比如,那几个栅格数据集是一组的对应着同一个影像文件,地理坐标的情况怎样,影像金字塔信息。
后面我们讨论下影像金字塔,为了加快数据显示,有些空间数据库引擎是对最原始的数据抽稀,按每一层金子塔抽稀为一个栅格数据集。抽稀一般采用幂级数的方式。这是一种以空间换时间的做法。
对于影像压缩技术,我没有研究过,等过段时间看看再说吧。
有了这些元数据表和feature表后,这就为展开GIS操作奠定了基础。
为了实现GIS数据类型的存储和对GIS数据类型的操作支持。我们可以采用曲折的办法来达到这些目的。
1、 存储:把featrue以一个二进制的字段形式存储,同时建立对该二进制数据的描述信息(称为空间元数据)。
2、 操作:为每种feature建立一组函数包。
A、 读取时,先读取空间元数据,根据元数据把featrue的二进制数据填充到featrue对象的data部分中。
B、 写入时,先写入空间元数据,然后把featrue对像的data部分序列化为二进制数据,然后存储到feature字段中。
C、 空间运算:空间运算操作的内容为fatrue对象的data部分,而空间运算做为fatrue类成员函数。或者单独为每种feature建立相关的函数包。
下面我们先探究空间数据类型的存储。存储主要牵涉到的是GIS数据的元数据部分。我们需要管理好各种空间数据。
同种类型的featrue我们归为一类,我们称为featrue类,每个feature类对应着数据库中的一个二进制字段,每个feature对象对应着这个二进制字段的具体数值。为了把GIS的feature的属性数据和空间数据存储到一起,统一管理。我们建立这样几个概念。
数据集:对应着数据库中的一张表,这个表里有featrue的二进制字段和一般的属性字段,同时还包括每个feature对象的元数据字段如:周长、面积以及辅助字段。
数据源:对应着数据库中的一组表,由两部分组成:一部分是数据集,另一部分是对数据集描述的表(称空间元数据表)。通常是每个schma(或者数据库)下一组空间元数据表。
起辅助作用的数据库对象:包括为各个数据集建立的索引、触发器、序列……
空间元数据表包括:
A:描述每个数据集的表:这个表里的字段包括:每个数据集的包围盒。以及对该数据集所建的索引的类型,名称等。
B:描述数据集字段的表:这张表的字段包括:数据集名,字段名称,字段类型,字段别名、数据集别名、数据集类型等……
C:辅助对象的元数据表:包括描述索引与数据集之间关系的表,包括描述触发器与数据集之间关系的表,包括描述序列与数据集之间关系的表。描述数据集之间关系的表(如网路数据集,是由点类型的数据集与线类型的数据集组成,这就需要说明点与线之间的拓扑关系咯)
上面我们只讨论矢量的GIS数据类型的存储,下面我们来探究下栅格类型的GIS数据存储。
同样的也有栅格的数据集,只不过是字段的类型稍微改变了下而已。为了加快数据存取,我们应当使得GIS操作只存取它所需要的数据,以一张遥感影像为例,我们可以把一块大影像按一定规则切割为一系列的小图块,然后把这些小图块以二进制的形式存储到IMAGE字段里,同时把该小图块的偏移位置(有了其实位置,和偏移位置以及每个图块的大小就知道了该图块的地理范围了)作为表的属性字段存储下来。以后在取数据时,需要先查该图块的元数据内容,得出地理范围(或者干脆就把每个图块的地理范围存储下来),这样就知道在显示时需要取哪些记录,然后再把需要显示的记录的IMAGE的数据取出来,根据地理范围把数据拼接起来就可以了(矢量数据的显示与操作也是这么干)。图块大小的划定规则是比较重要的,这非常影响速度的。
一般来讲一个波段,对应着一个栅格数据集。在显示影像时,需要同时读取多个栅格数据集,在显示的时候把它们拼接到一起。
我们还需要描述这些栅格数据集的元数据表,比如,那几个栅格数据集是一组的对应着同一个影像文件,地理坐标的情况怎样,影像金字塔信息。
后面我们讨论下影像金字塔,为了加快数据显示,有些空间数据库引擎是对最原始的数据抽稀,按每一层金子塔抽稀为一个栅格数据集。抽稀一般采用幂级数的方式。这是一种以空间换时间的做法。
对于影像压缩技术,我没有研究过,等过段时间看看再说吧。
有了这些元数据表和feature表后,这就为展开GIS操作奠定了基础。
相关文章推荐
- 申请免费JSP空间(支持FTP上传!)http://www.goldenbg.com/article.asp?id=247
- 《网络机器人java编程指南》源代码下载http://www.goldenbg.com/article.asp?id=644
- FLex Builder环境 使用 说明 BLOG http://www.akooc.com/article.asp?id=141
- asp.net控件开发基础 来源:http://www.clingingboy.com/blog/article.asp?id=258
- Asp.NET 2.0学习资源(reference from http://www.eyeya.com/article.asp?id=197)
- window.event对象详解 转自【http://www.jluvip.com/blog/article.asp?id=137】
- 让IIS6.0全面支持asp+php+jsp最新完整版 http://www.marktip.com/blog/article.asp?id=151
- 闭合浮动元素超级简单的方法http://www.jluvip.com/blog/article.asp?id=281
- 明基成人礼:巅峰战将营 http://www.cnvn.com.cn/Article/ShowArticle.asp?ArticleID=3172
- 网页编程之验证码识别技术 http://www.meiyisi.com/article.asp?id=1751
- Hibernate 学习之[hibernate的原理][转自http://www.sin-oil.com/oil/article.asp?id=182 作者:daxing22 ]
- 2009天心软件渠道合作伙伴招募计划(http://www.gz-sunlike.com/info.asp?article_id=557)
- 整合动网用户登陆 http://www.hotrich.com/blog/article.asp?id=20
- OPC DCOM 配置 - 摘自工控网 http://www.gongkong.com/tech/detail.asp?id=284940
- 第四章 嵌入式系统的调试工具及其开发环境http://www.decell.org/article.asp?id=53
- 因ARP欺骗网站源文件被注入了代码http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=1191
- 不完全HTML在线编辑器收集 http://www.cnbruce.com/blog/showlog.asp?log_id=1021
- winsock学习笔记(一)(http://www.vccode.net/article_view.asp?id=737)
- 地图投影的选择--http://www.spbdev.com/Articles/ArticleRead.aspx?id=30
- 正则表达式在UBB论坛中的应用(http://www.blueidea.com/bbs/newsdetail.asp?id=303249)