CN108875001A - 一种大容量地理空间数据导出vct文件的方法 - Google Patents
一种大容量地理空间数据导出vct文件的方法 Download PDFInfo
- Publication number
- CN108875001A CN108875001A CN201810614418.XA CN201810614418A CN108875001A CN 108875001 A CN108875001 A CN 108875001A CN 201810614418 A CN201810614418 A CN 201810614418A CN 108875001 A CN108875001 A CN 108875001A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- vct
- class
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种大容量地理空间数据导出VCT文件的方法,属于地理信息系统数据交换领域,解决了目前无法将大数据量的空间数据导出为VCT文件的问题。主要包括预先参照VCT文件结构定义一组数据结构、设定一个缓存文件夹、读取数据库的基本信息、读取待导出要素类的基本信息、将文件头/要素类定义/属性表定义写入缓存文件中、处理待导出要素类以及拼接成大文件等操作步骤。本发明能够彻底解决大容量空间数据导出为VCT文件受内存限制的问题,构思巧妙,可靠性高,高效实现大容量空间数据与VCT文件的快速转换,具有很强地实用性,在地理信息系统数据交换领域具有重要意义。
Description
技术领域
本发明属于地理信息系统数据交换领域,具体地说,尤其涉及一种大容量地理空间数据导出VCT文件的方法。
背景技术
VCT是国家现行标准《GB/T 17798-2007地理空间数据交换格式》中规定的矢量数据交换格式,该格式规定空间数据以文本存储在一个单独的文件中,为不同GIS系统、平台或环境之间建立一种交换标准。
VCT文件由八个部分组成:1)文件头,描述数据的基本特征,包括数据范围、坐标维数、数学基础信息等;2)要素类型参数;3)属性数据结构;4)空间几何数据;5)注记数据;6)空间拓扑数据;7)属性数据;8)图形表现数据。上述的八部分内容按照先后次序存储在文本文件中。
业界流行的地理信息系统一般以空间数据库来管理数据,将空间几何数据存储在主流的数据库系统中,如Oracle,SQL Server或者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:当一个要素类内的所有要素遍历完成后,结束当前要素类导出处理,执行下一个要素类,直到所有要素类处理完毕。
优选地,所述上限阈值用常量FEATURE_CACHE_SIZE表示。
优选地,所述步骤g具体包括,将所述缓存文件夹中生成的缓存文件名称按照文件头、点、线、面、注记和属性记录的次序存储在内存中一个字符串数组中,并命名为cacheFileNames,创建一个最终文件输出流resultWriteStream,将cacheFileNames中所有文件拼接输出到resultWriteStream中,然后清空缓存文件夹,结束整个文件导出过程。
与现有技术相比,本发明的有益效果是:
本发明能够彻底解决大容量空间数据导出为VCT文件受内存限制的问题,构思巧妙,可靠性高,高效实现大容量空间数据与VCT文件的快速转换,具有很强地实用性,在地理信息系统数据交换领域具有重要意义。
附图说明
图1是本发明流程图;
图2是本发明VCT文件模型类类名称含义及关系说明表;
图3是本发明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:当一个要素类内的所有要素遍历完成后,结束当前要素类导出处理,执行下一个要素类,直到所有要素类处理完毕。
优选地,所述上限阈值用常量FEATURE_CACHE_SIZE。
优选地,所述步骤g具体包括,将所述缓存文件夹中生成的缓存文件名称按照文件头、点、线、面、注记和属性记录的次序存储在内存中一个字符串数组中,并命名为cacheFileNames,创建一个最终文件输出流resultWriteStream,将cacheFileNames中所有文件拼接输出到resultWriteStream中,然后清空缓存文件夹,结束整个文件导出过程。
本发明以C#为编程语言,在Microsofit Visual Studio2010开发环境下,结合ESRI ArcGIS Engine组件开发一个桌面应用程序来实现。选取三个县的土地利用现状数据作为待转换的地理空间数据库,格式为文件地理空间数据库(File Geodatabase),容量约1.5GB。待导出的要素类以国家第三次土地调查颁布的《土地利用现状数据库标准》中规定的各个要素类,其中地类图斑要素类中要素个数不低于20万条。
结合说明书附图图1对本发明做详细阐述。
(1)、为了将地理空间数据存储在内存中,参照VCT文件结构预先定义的一组数据结构,采用面向对象的设计思想,用一组模型类定义,如说明书附图图3所示;模型类类名称含义及关系说明如说明书附图图2所示;所述模型类类名称包括VCTDocument、VCTFileHead、VCTFeatureStructure、VCTTableStructure、VCTPointData、VCTLineData、VCTPolygonData、VCTAnnotationData、VCTTableRow、VCTCoordinate十大类名称;其中,所述VCTDocument类为主类,表示整个VCT文件在内存中的映射;所述VCTFileHead类是所述VCTDocument类的子类,表示文件头信息;所述VCTFeatureStructure类表示VCT文件中的要素类定义信息,是所述VCTDocument类的子类,具有多对一关系,即一个VCTDocument类实例中有多个此类实例;所述VCTTableStructure类表示VCT类中属性表定义,包含了字段定义的内容;所述VCTPointData类是表示点空间几何数据;所述VCTLineData类表示线空间几何数据;所述VCTPolygonData类表示面空间几何数据;所述VCTAnnotationData类表示注记数据;所述VCTTableRow表示属性表记录数据,包含多个属性项,项的个数与所属属性表定义中字段数保持一致;所述VCTCoordinate表示一个坐标点,拥有X,Y,Z三个坐标值,表示VCT中空间几何数据的类都依赖此类;
(2)、模型类定义后,通过一段计算机程序来执行整个大数据量VCT文件导出过程;在执行空间数据导出之前,首先以当前应用程序的启动目录下新建子文件夹作为缓存文件的输出位置;
(3)、缓存文件夹设置完毕后,从空间数据库中读取数据库的基本信息,写到VCTDocument对象的VCTFileHead子类对象中。VCTFileHead类中成员较多,这些成员与VCT中文件头部分一一对应,各项成员的赋值规定如下:
1)、DataMark:根据当前空间数据库的用途,遵循相关的交换协议设置一个固定的字符串值,本实施例中为LANDUSE_VCT;
2)、Version:这个遵循最新国标,设置为3.0;
3)、CoordinateSystemType:根据当前空间数据库的空间参考类型进行赋值,如果当前空间参考是地理坐标系统,则设置为C,如果是投影坐标系统则设置为P;
4)、Dim:默认为2;
5)、XAxisDirection:默认设置为E;
6)、YAxisDirection:默认设置为N;
7)、XYUnit:根据当前空间参考信息中的实际值做转换处理,如果是米,则设置为M,如果为大地经纬度坐标,则设置为D;
8)、ZUnit:取默认值M;
9)、Spheroid:根据当前空间参考信息中的实际值做转换处理,格式为“名称,长半轴,扁率”表述;
10)、PrimeMeridian:取默认值Greenwich;
11)、Projection:根据当前空间参考信息中的实际值做转换处理;
12)、Paramerters:根据当前的投影参数设置;
13)、VerticalDatum:默认为“1985国家高程基准”;
14)、TemporalReferenceSystem:设置为默认值“北京时间”;
15)、ExtentMin:根据当前空间参考信息中的实际值设置;
16)、ExtentMax:根据当前空间参考信息中的实际值设置;
17)、MapScale:本实施例中设置为5000;
18)、Offset:默认为0,0;
19)、Date:以当前空间数据库的创建日期为准;
20)、Sparator:设置为默认值,半角逗号——“,”;
其中空间参考信息是数据库基本信息的核心,空间参考信息主要从当前ArcGISAPI即ArcObjects中表达地理空间数据库的IWorkspace接口中获取。
(4)、从空间数据库读取待导出要素类的基本信息,根据要素类的基本信息初始化VCTFeatureStructure和VCTTableStructure类对象,将这些对象写入到VCTDocument对象中存储要素类定义和属性表定义信息对象的两个数组中。
VCTFeatureStructure类中各项内容包括要素类别代码,要素层名和属性表名,由于GIS平台数据库的差别,ArcGIS的空间数据库中并没有规定必须有要素类型代码,本实施例中,预先设置一个要素类和要素类型代码的对应字典,当遍历空间数据库中的要素类时,每获得一个要素类的名称,均从该字典获取一个要素类别代码值,另外对VCT中的层名和对应的属性表名,均取自要素类的名称。
VCTTableStructure包含了属性表的结构定义内容,主要是描述字段的个数、字段类型、字段长度和字段精度信息。可以通过ArcObjects中IFields和IField接口来获取相关的字段信息。
将VCTDocument对象中FileHead、要素类定义和属性表定义三个部分的内容按照VCT格式写到缓存文件夹中,写文件通过调用DotNet Framework提供的StreamWrite类来实现,其过程是:
1)、生成一个名称为fileHead.vct的文件,并以写文件方式打开。
2)、写入FileHeadBegin标记。
3)、把FileHead类实例的各项成员依次写入到文件中,写入FileHeadEnd标记。
4)、写入FeatureCodeBegin标记。
5)、遍历VCTFeatureStructure实例列表,将每个VCTFeatureStructure实例的要素类型代码,要素类型名称,几何类型,属性表写入到文件中。
6)、写入FeatureCodeEnd标记。
7)、写入TableStructureBegin标记。
8)、遍历包含VCTTableStructure实例列表,将每个VCTTableStructure实例的属性表名,字段个数和每个字段项的字段名称,字段类型,字段长度和精度写入到文件。
9)、写入TableStructureEnd标记。
10)、保存文件,结束文件写操作。
(5)、处理每个要素类之前,遍历预先设置的要素类和要素类型代码对应字典,依次处理每个待到处数据的要素类。具体以导出某个要素类的过程为例,其包括下列如下处理步骤:
1)、声明两个VCTDocument类实例,分别命名为geometryDataDoc和attributeDataDoc,用于存储空间几何数据和属性记录数据,通过要素类名称获取要素类对象;
2)、通过游标遍历要素类中每一个要素,读取要素的空间几何数据和属性数据,将空间几何数据写入到模型对象geometryDataDoc中,将属性数据写入到模型对象attributeDataDoc中;
读取要素的空间几何数据是通过ArcObjects的IFeature接口中Shape属性获得,得到对象需要判断一下空间几何类型,根据不同的几何类型对数据进行解析,并创建对应的对象写入到geometryDataDoc对象的属性中。属性数据的获取通过遍历IFeature.Fields属性,结合get_Value(int)方法获取每个具体的字段值,然后创建对应的VCTRowData并写入到attributeDataDoc对象中;
3)、判断当前游标遍历循环中处理的要素数量是否达到上限阈值(用常量FEATURE_CACHE_SIZE表示),如果是,则将模型类实例geometryDataDoc和attributeDataDoc输出为缓存文件,由于每个要素类中要素具体数量不确定,每个要素类可能对应生成多个缓存文件,因此,在生成的缓存文件之前,需要根据文件名判断是否已经在已经输出的文件中,如果存在则按照流水号续编文件名再输出文件,空间几何数据缓存文件以“SHP_”+要素类名称+流水号+“.vct”命名,属性数据缓存文件以“ATT_”+要素类名称+流水号+“.vct”格式命名;
4)、当所有要素遍历完成后,结束当前要素类导出处理,执行下一个要素类,直到所有要素类处理完毕。
(6)将缓存文件夹中生成的缓存文件名称按照头文件(HeadFile.vct)、点、线、面、注记和属性记录的次序存储在内存中一个字符串数组中,并命名为cacheFileNames,创建一个最终文件输出流resultWriteStream,将cacheFileNames中所有文件拼接输出到resultWriteStream中,然后清空缓存文件夹,结束整个文件导出过程。
本发明能够彻底解决大容量空间数据导出为VCT文件受内存限制的问题,构思巧妙,可靠性高,高效实现大容量空间数据与VCT文件的快速转换,具有很强地实用性,在地理信息系统数据交换领域具有重要意义。
综上所述,仅为本发明的较佳实施例而已,并非用来限定本发明实施的范围,凡依本发明权利要求范围所述的形状、构造、特征及精神所为的均等变化与修饰,均应包括于本发明的权利要求范围内。
Claims (7)
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实例列表,将每个VCTFeatureStructure实例的要素类型代码,要素类型名称,几何类型,属性表写入到文件中;
e6:写入FeatureCodeEnd标记;
e7:写入TableStructureBegin标记;
e8:遍历包含VCTTableStructure实例列表,将每个VCTTableStructure实例的属性表名,字段个数和每个字段项的字段名称,字段类型,字段长度和精度写入到文件;
e9:写入TableStructureEnd标记;
e10.保存文件,结束文件写操作。
4.根据权利要求1所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于:所述步骤f中待导出的要素类以国家第三次土地调查颁布的《土地利用现状数据库标准》中规定的各个要素类。
5.根据权利要求1或4所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于,所述导出要素类具体包括以下操作步骤:
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:当一个要素类内的所有要素遍历完成后,结束当前要素类导出处理,执行下一个要素类,直到所有要素类处理完毕。
6.根据权利要求5所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于:所述上限阈值用常量FEATURE_CACHE_SIZE表示。
7.根据权利要求1所述的一种大容量地理空间数据导出VCT文件的方法,其特征在于:所述步骤g具体包括,将所述缓存文件夹中生成的缓存文件名称按照文件头、点、线、面、注记和属性记录的次序存储在内存中一个字符串数组中,并命名为cacheFileNames,创建一个最终文件输出流resultWriteStream,将cacheFileNames中所有文件拼接输出到resultWriteStream中,然后清空缓存文件夹,结束整个文件导出过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614418.XA CN108875001B (zh) | 2018-06-14 | 2018-06-14 | 一种大容量地理空间数据导出vct文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614418.XA CN108875001B (zh) | 2018-06-14 | 2018-06-14 | 一种大容量地理空间数据导出vct文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108875001A true CN108875001A (zh) | 2018-11-23 |
CN108875001B CN108875001B (zh) | 2022-01-14 |
Family
ID=64338954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810614418.XA Active CN108875001B (zh) | 2018-06-14 | 2018-06-14 | 一种大容量地理空间数据导出vct文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108875001B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110110024A (zh) * | 2019-04-29 | 2019-08-09 | 东南大学 | 一种大容量vct文件导入空间数据库方法 |
CN110209753A (zh) * | 2019-05-30 | 2019-09-06 | 厦门精图信息技术有限公司 | 一种vct3.0多图层文件转换方法、终端设备及存储介质 |
CN111506950A (zh) * | 2020-04-23 | 2020-08-07 | 中筑创联建筑科技(北京)有限公司 | Bim结构变换增量信息的生成和存储系统和方法 |
CN113448923A (zh) * | 2020-04-17 | 2021-09-28 | 北京新氧科技有限公司 | 文件生成方法、装置及终端 |
CN113641642A (zh) * | 2021-10-14 | 2021-11-12 | 中孚安全技术有限公司 | 一种基于shp格式调取地形图数据的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609465A (zh) * | 2009-07-16 | 2009-12-23 | 浙江大学 | 一种空间矢量数据的快速转换方法 |
CN102611626A (zh) * | 2012-03-30 | 2012-07-25 | 北京英诺威尔科技股份有限公司 | 网络流量解析系统及方法 |
CN102842072A (zh) * | 2012-08-01 | 2012-12-26 | 广东南方数码科技有限公司 | 城镇地籍的管理方法及系统 |
CN103535046A (zh) * | 2011-04-20 | 2014-01-22 | Lg电子株式会社 | 用于广播服务的发送方法、接收方法及其接收设备 |
CN107544948A (zh) * | 2017-07-12 | 2018-01-05 | 中国农业大学 | 一种基于MapReduce的矢量文件转换方法和装置 |
-
2018
- 2018-06-14 CN CN201810614418.XA patent/CN108875001B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609465A (zh) * | 2009-07-16 | 2009-12-23 | 浙江大学 | 一种空间矢量数据的快速转换方法 |
CN103535046A (zh) * | 2011-04-20 | 2014-01-22 | Lg电子株式会社 | 用于广播服务的发送方法、接收方法及其接收设备 |
CN102611626A (zh) * | 2012-03-30 | 2012-07-25 | 北京英诺威尔科技股份有限公司 | 网络流量解析系统及方法 |
CN102842072A (zh) * | 2012-08-01 | 2012-12-26 | 广东南方数码科技有限公司 | 城镇地籍的管理方法及系统 |
CN107544948A (zh) * | 2017-07-12 | 2018-01-05 | 中国农业大学 | 一种基于MapReduce的矢量文件转换方法和装置 |
Non-Patent Citations (1)
Title |
---|
陈若尘、李建平: "基于ArcGis Engine的GIS数据格式转换研究", 《北京测绘》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110110024A (zh) * | 2019-04-29 | 2019-08-09 | 东南大学 | 一种大容量vct文件导入空间数据库方法 |
CN110110024B (zh) * | 2019-04-29 | 2021-12-17 | 东南大学 | 一种大容量vct文件导入空间数据库方法 |
CN110209753A (zh) * | 2019-05-30 | 2019-09-06 | 厦门精图信息技术有限公司 | 一种vct3.0多图层文件转换方法、终端设备及存储介质 |
CN113448923A (zh) * | 2020-04-17 | 2021-09-28 | 北京新氧科技有限公司 | 文件生成方法、装置及终端 |
CN113448923B (zh) * | 2020-04-17 | 2023-09-12 | 北京新氧科技有限公司 | 文件生成方法、装置及终端 |
CN111506950A (zh) * | 2020-04-23 | 2020-08-07 | 中筑创联建筑科技(北京)有限公司 | Bim结构变换增量信息的生成和存储系统和方法 |
CN113641642A (zh) * | 2021-10-14 | 2021-11-12 | 中孚安全技术有限公司 | 一种基于shp格式调取地形图数据的方法及系统 |
CN113641642B (zh) * | 2021-10-14 | 2022-02-22 | 中孚安全技术有限公司 | 一种基于shp格式调取地形图数据的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108875001B (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108875001A (zh) | 一种大容量地理空间数据导出vct文件的方法 | |
US8311974B2 (en) | Modularized extraction, transformation, and loading for a database | |
KR102021915B1 (ko) | 프로그래밍 속성의 그래픽 표현 | |
CN103559323B (zh) | 数据库实现方法 | |
US9235909B2 (en) | Simplifying the presentation of a visually complex semantic model within a graphical modeling application | |
US20150142734A1 (en) | Meta Model Driven Data Base Replication and Synchronization | |
JP2010160591A (ja) | 空間データ管理装置、空間データ管理方法、および、空間データ管理プログラム | |
CN104111913A (zh) | 一种流式文档的处理方法及装置 | |
de Souza Baptista et al. | NoSQL geographic databases: an overview | |
US20070067254A1 (en) | Business model data management | |
CN117708353A (zh) | 一种基于数据库的通用三维数字化模型格式定义方法 | |
CN116778124A (zh) | 三维场景编辑方法、系统、设备及存储介质 | |
CN116414935A (zh) | 一种基于Elastic Search的分布式搜索空间矢量数据的方法 | |
Van Dam et al. | A compact data structure for storing, retrieving and manipulating line drawings | |
CN108845857A (zh) | 一种基于云平台的图标管理方法和装置 | |
Toms et al. | Mastering geospatial analysis with Python: explore GIS processing and learn to work with GeoDjango, CARTOframes and MapboxGL-Jupyter | |
JP7279524B2 (ja) | データ管理プログラム、データ管理方法およびデータ管理システム | |
CN110110024B (zh) | 一种大容量vct文件导入空间数据库方法 | |
CN117270854B (zh) | 一种基于ugui的树形折叠结构页签创建方法和系统 | |
Rahman et al. | Model migration approach for database preservation | |
CN117392269B (zh) | 一种管网图纸数据提取方法及装置 | |
CN113901127B (zh) | 数据管理和展示方法、装置及设备 | |
CN117392294B (zh) | 一种动画文件检查修复方法、系统、电子设备及存储介质 | |
CN112182458B (zh) | 一种页面数据处理方法及装置 | |
WO2009156527A1 (es) | Procedimiento y sistema para generar automáticamente meta-datos de geodatos |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 23-24 / F, block B, Zhigu building, 186 Yangzijiang Middle Road, development zone, Yangzhou, Jiangsu 225000 Applicant after: PASHANHOO TECHNOLOGY Inc. Address before: 23-24 / F, block B, Zhigu building, 186 Yangzi River middle road, development zone, Yangzhou City, Jiangsu Province, 225000 Applicant before: JIANGSU PASHANHOO TECHNOLOGY Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |