一种大容量地理空间数据导出VCT文件的方法技术

技术编号:19544493 阅读:27 留言:0更新日期:2018-11-24 20:44
本发明专利技术公开了一种大容量地理空间数据导出VCT文件的方法,属于地理信息系统数据交换领域,解决了目前无法将大数据量的空间数据导出为VCT文件的问题。主要包括预先参照VCT文件结构定义一组数据结构、设定一个缓存文件夹、读取数据库的基本信息、读取待导出要素类的基本信息、将文件头/要素类定义/属性表定义写入缓存文件中、处理待导出要素类以及拼接成大文件等操作步骤。本发明专利技术能够彻底解决大容量空间数据导出为VCT文件受内存限制的问题,构思巧妙,可靠性高,高效实现大容量空间数据与VCT文件的快速转换,具有很强地实用性,在地理信息系统数据交换领域具有重要意义。

A Method of Deriving VCT Files from Large Capacity Geospatial Data

The invention discloses a method for exporting VCT files from large-capacity geospatial data, which belongs to the field of data exchange of geographic information system, and solves the problem that it is impossible to export large-volume spatial data into VCT files at present. It mainly includes defining a set of data structures by referring to VCT file structure in advance, setting up a cache folder, reading basic information of database, reading basic information of element classes to be exported, writing the definition of header/element classes/attribute tables into cache files, processing element classes to be exported and splicing them into large files. Suddenly. The invention can thoroughly solve the problem of large capacity spatial data being exported to VCT file limited by memory, has ingenious conception, high reliability and high efficiency to realize fast conversion between large capacity spatial data and VCT file, has strong practicability, and is of great significance in the field of data exchange of geographic information system.

【技术实现步骤摘要】
一种大容量地理空间数据导出VCT文件的方法
本专利技术属于地理信息系统数据交换领域,具体地说,尤其涉及一种大容量地理空间数据导出VCT文件的方法。
技术介绍
VCT是国家现行标准《GB/T17798-2007地理空间数据交换格式》中规定的矢量数据交换格式,该格式规定空间数据以文本存储在一个单独的文件中,为不同GIS系统、平台或环境之间建立一种交换标准。VCT文件由八个部分组成:1)文件头,描述数据的基本特征,包括数据范围、坐标维数、数学基础信息等;2)要素类型参数;3)属性数据结构;4)空间几何数据;5)注记数据;6)空间拓扑数据;7)属性数据;8)图形表现数据。上述的八部分内容按照先后次序存储在文本文件中。业界流行的地理信息系统一般以空间数据库来管理数据,将空间几何数据存储在主流的数据库系统中,如Oracle,SQLServer或者MySQL。空间数据库与VCT文件相比较具有两个差别:1)空间数据库中各个要素层是以表形式分散存储,没有先后次序,VCT文件中要素数据按照几何类型依次序存储;2)空间数据库中要素的几何数据与属性数据是以记录的形式集中存储,而VCT文件中几何数据和属性数据是分开在不同位置进行存储。当需要通过计算机程序将空间数据库中数据以VCT文件导出进行交换时,一般采用如下思路实现:1)参照VCT文件结构定义一组数据结构;2)按照数据结构的存储次序,从空间数据库中获取对应的基本信息、要素数据,将这些数据存储在内存中。3)将内存中的数据以流的形式输出成VCT文件。上述的思路能够有效消除空间数据库与VCT文件在存储结构上的差异带来的问题,是一种高效的小数据量导出方法。然而,这种导出方法需要将待导出数据全部存储在内存中,内存相对于外部存储容量有限制,无法将大数据量的空间数据导出为VCT文件。
技术实现思路
本专利技术的目的是针对现有技术存在的不足,提供了一种可靠的、高效的大容量地理空间数据导出VCT文件的方法。本专利技术是通过以下技术方案实现的:一种大容量地理空间数据导出VCT文件的方法,包括以下步骤:a.预先参照VCT文件结构定义一组数据结构,用于地理空间数据在内存中存储和组织;b.在文件系统中设定一个缓存文件夹;c.从空间数据库中读取数据库的基本信息,加载到内存中与VCT文件中文件头对应的数据结构中;d.从空间数据库中读取待导出要素类的基本信息,加载到内存中与VCT文件中要素类定义和属性表定义相对应的数据结构中;e.将所述文件头、所述要素类定义以及所述属性表定义三个部分的内容按照VCT格式写到缓存文件夹中;f.开始依次处理待导出要素类;首先处理第一个要素类,遍历该要素类内的各个要素,将空间几何数据和属性数据分别加载到内存中,当遍历的要素数达到一个限定值时,把已经存在内存中的空间几何数据和属性数据分别写入到缓存文件夹中,并清空当前的内存中存储要素数据的空间,清空后继续遍历要素,直到所有要素遍历完;g.依照所述步骤f的要素导出方法循环处理下一个待导出的要素类,直到所有要素类处理完毕;h.将所述缓存文件夹中生成的多个缓存文件按照VCT格式规定的次序拼接成大文件,得到最终结果。优选地,所述步骤a中参照VCT文件结构定义一组数据结构,其包括VCTDocument、VCTFileHead、VCTFeatureStructure、VCTTableStructure、VCTPointData、VCTLineData、VCTPolygonData、VCTAnnotationData、VCTTableRow、VCTCoordinate十大类名称;其中,所述VCTDocument类为主类,表示整个VCT文件在内存中的映射;所述VCTFileHead类是所述VCTDocument类的子类,表示文件头信息;所述VCTFeatureStructure类表示VCT文件中的要素类定义信息,是所述VCTDocument类的子类;所述VCTTableStructure类表示VCT类中属性表定义,包含了字段定义的内容;所述VCTPointData类是表示点空间几何数据;所述VCTLineData类表示线空间几何数据;所述VCTPolygonData类表示面空间几何数据;所述VCTAnnotationData类表示注记数据;所述VCTTableRow表示属性表记录数据,所述VCTCoordinate表示一个坐标点,拥有X,Y,Z三个坐标值。优选地,将所述文件头、所述要素类定义以及所述属性表定义三个部分的内容按照VCT格式写到缓存文件夹中的具体过程包括:e1:生成一个名称为fileHead.vct的文件,并以写文件方式打开;e2:写入FileHeadBegin标记;e3:把FileHead类实例的各项成员依次写入到文件中,写入FileHeadEnd标记;e4:写入FeatureCodeBegin标记;e5:遍历VCTFeatureStructure实例列表,将每个VCTFeatureStructure实例的要素类型代码,要素类型名称,几何类型,属性表写入到文件中;e6:写入FeatureCodeEnd标记;e7:写入TableStructureBegin标记;e8:遍历包含VCTTableStructure实例列表,将每个VCTTableStructure实例的属性表名,字段个数和每个字段项的字段名称,字段类型,字段长度和精度写入到文件;e9:写入TableStructureEnd标记;e10.保存文件,结束文件写操作。优选地,所述步骤f中待导出的要素类以国家第三次土地调查颁布的《土地利用现状数据库标准》中规定的各个要素类。优选地,所述导出要素类具体包括以下操作步骤:f1:声明两个VCTDocument类实例,分别命名为geometryDataDoc和attributeDataDoc,用于存储空间几何数据和属性记录数据,通过要素类名称获取要素类对象;f2:通过游标遍历要素类中每一个要素,读取要素的空间几何数据和属性数据,将空间几何数据写入到模型对象geometryDataDoc中,将属性数据写入到模型对象attributeDataDoc中;通过ArcObjects的IFeature接口中Shape属性读取要素的空间几何数据,得到对象需要判断一下空间几何类型,根据不同的几何类型对数据进行解析,并创建对应的对象写入到geometryDataDoc对象的属性中;属性数据的获取通过遍历IFeature.Fields属性,结合get_Value(int)方法获取每个具体的字段值,然后创建对应的VCTRowData并写入到attributeDataDoc对象中;f3:判断当前游标遍历循环中处理的要素数量是否达到上限阈值,如果是,则将模型类实例geometryDataDoc和attributeDataDoc输出为缓存文件;其中,空间几何数据缓存文件以“SHP_”+要素类名称+流水号+“.vct”命名,属性数据缓存文件以以“ATT_”+要素类名称+流水号+“.vct”格式命名;根据文件名判断当前文件是否已经在已输出的文件内,若存在则按照流水号续编文件名再输出文件;f4:当一个要素类内的所有要素遍历完成后,结束当前要素类导出处理,执行下一个要素类,直到本文档来自技高网
...

【技术保护点】
1.一种大容量地理空间数据导出VCT文件的方法,其特征在于,包括以下步骤:a.预先参照VCT文件结构定义一组数据结构,用于地理空间数据在内存中存储和组织;b.在文件系统中设定一个缓存文件夹;c.从空间数据库中读取数据库的基本信息,加载到内存中与VCT文件中文件头对应的数据结构中;d.从空间数据库中读取待导出要素类的基本信息,加载到内存中与VCT文件中要素类定义和属性表定义相对应的数据结构中;e.将所述文件头、所述要素类定义以及所述属性表定义三个部分的内容按照VCT格式写到缓存文件夹中;f.开始依次处理待导出要素类;首先处理第一个要素类,遍历该要素类内的各个要素,将空间几何数据和属性数据分别加载到内存中,当遍历的要素数达到一个限定值时,把已经存在内存中的空间几何数据和属性数据分别写入到缓存文件夹中,并清空当前的内存中存储要素数据的空间,清空后继续遍历要素,直到所有要素遍历完;g.依照所述步骤f的要素导出方法循环处理下一个待导出的要素类,直到所有要素类处理完毕;h.将所述缓存文件夹中生成的多个缓存文件按照VCT格式规定的次序拼接成大文件,得到最终结果。

【技术特征摘要】
1.一种大容量地理空间数据导出VCT文件的方法,其特征在于,包括以下步骤:a.预先参照VCT文件结构定义一组数据结构,用于地理空间数据在内存中存储和组织;b.在文件系统中设定一个缓存文件夹;c.从空间数据库中读取数据库的基本信息,加载到内存中与VCT文件中文件头对应的数据结构中;d.从空间数据库中读取待导出要素类的基本信息,加载到内存中与VCT文件中要素类定义和属性表定义相对应的数据结构中;e.将所述文件头、所述要素类定义以及所述属性表定义三个部分的内容按照VCT格式写到缓存文件夹中;f.开始依次处理待导出要素类;首先处理第一个要素类,遍历该要素类内的各个要素,将空间几何数据和属性数据分别加载到内存中,当遍历的要素数达到一个限定值时,把已经存在内存中的空间几何数据和属性数据分别写入到缓存文件夹中,并清空当前的内存中存储要素数据的空间,清空后继续遍历要素,直到所有要素遍历完;g.依照所述步骤f的要素导出方法循环处理下一个待导出的要素类,直到所有要素类处理完毕;h.将所述缓存文件夹中生成的多个缓存文件按照VCT格式规定的次序拼接成大文件,得到最终结果。2.根据权利要求1所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于:所述步骤a中参照VCT文件结构定义一组数据结构,其包括VCTDocument、VCTFileHead、VCTFeatureStructure、VCTTableStructure、VCTPointData、VCTLineData、VCTPolygonData、VCTAnnotationData、VCTTableRow、VCTCoordinate十大类名称;其中,所述VCTDocument类为主类,表示整个VCT文件在内存中的映射;所述VCTFileHead类是所述VCTDocument类的子类,表示文件头信息;所述VCTFeatureStructure类表示VCT文件中的要素类定义信息,是所述VCTDocument类的子类;所述VCTTableStructure类表示VCT类中属性表定义,包含了字段定义的内容;所述VCTPointData类是表示点空间几何数据;所述VCTLineData类表示线空间几何数据;所述VCTPolygonData类表示面空间几何数据;所述VCTAnnotationData类表示注记数据;所述VCTTableRow表示属性表记录数据;所述VCTCoordinate表示一个坐标点,拥有X,Y,Z三个坐标值。3.根据权利要求1所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于,将所述文件头、所述要素类定义以及所述属性表定义三个部分的内容按照VCT格式写到缓存文件夹中的具体过程包括:e1:生成一个名称为fileHead.vct的文件,并以写文件方式打开;e2:写入FileHeadBegin标记;e3:把FileHead类实例的各项成员依次写入到文件中,写入FileHeadEnd标记;e4:写入FeatureCodeBegin标记;e5:遍历VCTFeatureStructure实例列表,将每个VCTFeatureStruct...

【专利技术属性】
技术研发人员:郭胜涛王伟光杨坤田贺
申请(专利权)人:江苏爬山虎科技股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1