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文件在存储结构上的差异带来的问题,是一种高效 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。