[发明专利]一种大容量VCT文件导入空间数据库方法有效
申请号: | 201910357079.6 | 申请日: | 2019-04-29 |
公开(公告)号: | CN110110024B | 公开(公告)日: | 2021-12-17 |
发明(设计)人: | 王鸣飞;郭胜涛 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F16/29 | 分类号: | G06F16/29 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 周蔚然 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 容量 vct 文件 导入 空间 数据库 方法 | ||
1.一种大容量VCT文件导入空间数据库方法,其特征在于:包括以下步骤:
步骤一:定义一个存储要素目标标识码、几何类型、几何数据存储行号和属性数据存储行号的索引表;
步骤二:打开预导入的VCT文件,对VCT文件进行逐行读取;
步骤三:依次遍历点、线、面、体状要素和聚合对象要素的空间几何数据;
步骤四:读取要素的目标标识码,连同要素几何类型和当前的文件的行号信息写到索引表中;
步骤五:循环上述步骤直至空间几何数据读取完毕;
步骤六:遍历属性数据中每个属性表的属性数据记录;
步骤七:读取要素的目标标识码,当前的文件的行号值;通过目标标识码作为匹配条件,将当前的文件行号值写入到索引表中已经存在记录的属性数据存储行号域;
步骤八:循环上述步骤直至所有的属性数据记录和属性表读取完毕;
步骤九:关闭当前VCT文件,完成索引表创建;
步骤十:将预导入的VCT文件复制一个副本,同时打开原始和副本两个文件;
步骤十一:依次遍历已经建立的索引表记录;
步骤十二:读取要素的目标标识码、几何类型、空间几何数据行号、属性数据行号;通过行号分别在两个文件中进行定位,然后读取空间数据和属性数据,将解析后的空间数据和属性数据写入到目标空间数据库表中;
步骤十三:循环上述步骤,直到索引表记录遍历完毕;
步骤十四:关闭两个文件,导入VCT文件。
2.根据权利要求1所述的一种大容量VCT文件导入空间数据库方法,其特征在于:步骤一所述的存储要素目标标识码、几何类型、几何数据存储行号和属性数据存储行号的索引表用一个“键值对”字典来表达,字典的键是要素的目标标识码,值是一个包含目标标识码、几何类型、几何数据存储行号和属性数据存储行号的结构体。
3.根据权利要求1所述的一种大容量VCT文件导入空间数据库方法,其特征在于:步骤二:由于VCT文件是一个文本文件,为了得到要素空间数据存储所在行号和属性数据的存储行号,在后续数据读取过程中实现通过行号定位文件位置的功能,需要预先建立一个行号和文件绝对位置的对应关系,建立这个对应关系的实施方法是:
1)以流方式打开文件,预先定义一个文件偏移值数组linePosition;
2)读取第一个字节,记录为rByte,判断rByte是否为0,如果其值是0,则表示文件为空,退出程序;如果其值大于0,则做以下循环;
3)如果rByte值是0x0d,则读取文件当前位置的下一个字节,记录为nextByte;
4)如果nextByte大于0,则做以下循环;
5)如果nextByte值是0x0a,则将当前文件偏移值加入到linePosition中,并退出当前循环;
6)继续向后读取一个字节,记录为nextByte,直到nextByte是0时,退出循环;
7)继续向后读取一个字节,记录在rByte中,如果rByte是0则退出结束当前子程序;
经过上述步骤后,将得到一个文件偏移值数组linePosition,其内部存储的文件偏移值代表了文件行号是数组下标时对应的文件位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910357079.6/1.html,转载请声明来源钻瓜专利网。