[发明专利]一种大容量VCT文件导入空间数据库方法有效
申请号: | 201910357079.6 | 申请日: | 2019-04-29 |
公开(公告)号: | CN110110024B | 公开(公告)日: | 2021-12-17 |
发明(设计)人: | 王鸣飞;郭胜涛 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F16/29 | 分类号: | G06F16/29 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 周蔚然 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 容量 vct 文件 导入 空间 数据库 方法 | ||
本发明公开了一种大容量VCT文件导入空间数据库的方法,其基本思想是:导入VCT文件之前,先建立一个记录要素目标标识码、要素类型、空间几何数据存储行号和属性存储行号的索引表。当执行VCT文件导入时,将VCT文件复制一个副本,同时打开原始和副本两个文件,然后通过遍历索引表,根据要素的几何数据存储行号和属性存储行号分别从两个文件中读取并解析数据,将解析的结果一并写入到空间数据库中。本发明能够彻底解决大容量VCT文件导入到空间数据时受内存限制的问题,有效规避了由于VCT文件和一般空间地理数据库存储特点差异导致的数据交换效率低下的风险,为实际的数据转换工作提供一种可靠、高效的方法,在地理信息系统的应用中具有重要的实际意义。
技术领域
本发明属于地理信息系统(GIS)数据交换领域,具体涉及一种大容量VCT文件导入空间数据库方法。
背景技术
国标《GB/T 17798-2007 地理空间数据交换格式》规定,用于地理信息系统间数据交换采用矢量数据文件被称为VCT文件,后缀名是*.vct,空间数据以明文文本存储在一个VCT文件中。
VCT文件存储的内容可分为八个部分,如附图1所示,包括:1)描述数据的基本信息,如数据范围、坐标维数、数学基础信息的文件头;2)定义所包含空间数据分类的要素类型参数;3)定义属性数据的结构;4)空间几何数据;5)注记数据;6)拓扑数据;7)属性数据;8)图形展现数据。上述八个部分内容按照先后次序存放在VCT文件中。
用来存储空间数据的数据库一般称为地理空间数据库、时空数据库或空间数据库。业界流行的Oracle、SQLServer等关系型数据库,加上空间数据选件或空间数据库引擎后就具备了空间数据库的特性,满足存储地理空间数据的要求。空间数据库与VCT文件相比较具有两个差别:1)VCT文件中空间数据按照点、线、面、体和符合要素的先后次序依次存储,空间数据库中空间数据是以表形式无序分散存储,一般一个表只存储一种几何类型,但同一种几何类型可分为多表存储;2)由于空间数据库中要素可以用一条记录来表达,因此其几何数据与属性数据多数情况下是合并的,而VCT文件中,按照格式定义,要素的几何数据和属性数据必须存储在不同的位置,且相对地址相差甚远。
当需要通过计算机程序将VCT文件导入到空间数据库中时,一般采用两种思路实现。
第一种思路:1)依次遍历点、线、面等空间几何数据记录。2)读取几何数据记录的目标标识码,解析几何信息,在空间数据库对应的表中插入一条要素记录,写入目标标识码和几何信息。3)直到遍历完所有的空间几何数据。4)依次遍历属性表记录。5)读取属性数据的目标标识码,读取各个字段的属性数据,在空间数据库对应的表中通过目标标识码关联更新要素记录的属性字段值。6)直到遍历完所有的属性表记录。
上述思路存在明显的效率问题,当所有空间几何数据完成读取时,所有的要素已经在目标数据库表中被创建,接下来读取属性数据过程中,需要反复执行关联更新语句,算法复杂度为平方阶,当VCT文件较大时,将需要较长的时间才能完成数据导入。
第二种思路可以在第一种思路上加以改进,在遍历空间几何数据时,暂时不在数据库表中创建要素记录,先将要素的几何信息存储在内存中,当读取属性数据时,将读取到的属性信息与内存中的要素进行挂接,直到所有属性数据读取完毕后,再将内存中的要素批量写入到空间数据库表中。
第二种思路可以有效降低执行数据库查询操作的时间损耗,但是需要大量的内存作为要素临时存放区域。经测试,当文件超过600M时,用这种方法导入VCT文件就会产生内存溢出的异常情况。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910357079.6/2.html,转载请声明来源钻瓜专利网。