一种国标模型到军标模型的矢量空间数据模型转换方法与流程

您所在的位置:网站首页 矢量数据格式转换 一种国标模型到军标模型的矢量空间数据模型转换方法与流程

一种国标模型到军标模型的矢量空间数据模型转换方法与流程

2024-07-14 18:51| 来源: 网络整理| 查看: 265

一种国标模型到军标模型的矢量空间数据模型转换方法与流程

本发明属于地理信息技术领域,尤其是涉及一种国标模型到军标模型的矢量空间数据模型转换方法。

背景技术:

根据国标的编码(gb25529-2010-t地理信息分类与编码规则)和国军标(gjb1839b-2012军用基础地理信息要素分类与编码)的编码规则给出编码对照项,构建编码对照表,国标、军标数据模型如图1所示。gdal是一个在x/mit许可协议下的开源空间数据转换库,它利用抽象数据模型来表达所支持的各种文件格式。

在《海洋测绘》学术期刊中2010年9月第5期的文献中公开了数据的转换思路:构建源数据字段,属性和目标数据字段,属性的对应关系表,进行转换。

又某军事单位存在相似工具,但使用起来操作繁琐,需要专业的技术知识和操作技巧。且工具在使用过程中需要手动添加对照关系,而且不能进行持续化存储;如果进行跨平台操作使用需要对编码进行重新调整,由于转换工具不具备中间数据的交换过程,所以需要重新录入数据信息,重复工作量大。

因此,现有技术方式的存在以下缺点:

1、不存在工具的情况下,如果制作出版地图,制图人员需要重新从地图上采集需要的数据,效率极低,修改次数多,采集成本极高,地图更新困难;

2、用户通常可以方便的获得精确的符合国标标准的矢量地图数据,但这些数据与军标的编码、图层及图幅名称是存在差异的,军标作业软件不能拿来直接使用;

3、现有技术方式中的信息没有提到有向点在国标和军标中的旋转方式不一致问题,有些有向点需要进行固定角度的旋转才符合最终结果,这些在设计上是需要考虑的,否则转换的结果是不正确的;

4、现有技术方式中没有提及对面的边线的处理,如果涉及发布作业,则需要对面的边线和面中孔洞进行单独处理;

5、有时即使是同一批次的数据,字段名称也有不一致的情况,现有技术方式中没有提供处理这种问题的方式和方法。

技术实现要素:

本发明要解决的技术问题是,提供一种国标模型到军标模型的矢量空间数据模型转换方法。

为解决上述技术问题,本发明采用的技术方案是,该国标模型到军标模型的矢量空间数据模型转换方法,包括以下步骤:

s1:准备shapefile文件格式的矢量数据;

s2:将所述步骤s1的矢量数据中包含的信息存入数据库,对目录下的shapefile文件进行遍历,然后根据文件列表对数据进行分层;

s3:构建国标编码和军标编码分类对照表;

s4:根据编码分类对照表,对数据库中存放的国标数据进行分层转换并在转换过程中进行分幅;

s5:国标编码转换成了军标编码,坐标由经纬度转换成高斯坐标,同时计算出了图像所在的图幅,获得了图像类型,判断了是否是有向点,转换过程数据存放在军标数据库中,最终转换后的数据结果以选择的目录存放。

本发明方法将使用gdal实现矢量数据中的经纬度坐标转换成高斯克吕格投影坐标;将符合国标标准的矢量数据模型转换成国家军用标准的数据模型;存在可用的矢量数据时,可以直接进行标准之间的数据转换,不需要进行数据的重复采集,提升工作效率和制图效率;实现数据模型转换的自动化;支持批量矢量数据转换;生成符合军用标准的矢量地图数据能够直接进行军用地图的生产作业。

优选的,在所述步骤s4中,具体转换流程为:从矢量入库图层中读取一条数据,记录数据的基本信息,存放在内存中;然后根据编码分类对照表,找到本条数据对应的军标编码,并记录其对应的军标图形特征;如果是点信息,需要根据有向点对照表,判断是否是有向点,并记录;如果是有向点,需要对有向点的旋转角度进行计算,或者进行统一偏转;如果是线则对类型、坐标进行记录;如果是面,则需要进行边线的拆分;

所述层是逻辑上对数据库中表的命名,每一张表,在shapefile文件中表示一个图层。

优选的,在所述步骤s4中,从数据库中读取需要转换的信息,把所有需要转换的矢量要素读取出来;对包含的坐标信息进行基本处理,确认获得的矢量元素类型,属于点、线还是面,并记录属性信息。

优选的,在所述步骤s4中,在对面的拆分过程中:

s41,当检测到数据是多面时,判断数据是否包含多个面或孔;

s42,如果仅包含一个面或孔,则只要检测这个面或孔中是否包含其他面或孔;

s43,如果只存在一个面或孔且只有一条边线,则只要将这个面中的这条线,按照面线对照表中提到的方式增加一个线元素到军标对应图层的数据库中;

s44,如果存在多条边线,则增加多条线元素到军标图层对应的数据库中;

s45,如果存在多个面或孔在这个多面中,则一次从第一个面或孔对这个面或孔中的面进行检测;

s46,如果递归检测到只有一个面或孔时,增加对应的线到军标库中对应的层中;

s47,获得经纬度坐标信息,根据经纬度信息和比例尺计算所在图幅,并记录;

s48,对经纬度信息进行高斯变换,转换成高斯坐标,这是军标中使用的坐标表示;

s49,根据转换后的军标编码,可以确定所在的军标图层,记录图层名称;

s410,把以上转换后的信息,和计算出的的信息存放到对应的军标库中;

转换过程依照图层顺序,对图层中包含的数据进行逐个转换,并将转换结果保存在创建好的军标数据库中。

优选的,在所述步骤s4中,根据编码分类对照表的信息,对读取的矢量要素进行编码转换,根据映射关系进行编码的对应,能够把这个要素对应出正确的图层和编码。

优选的,在所述步骤s4中,根据坐标信息对矢量要素进行分幅,坐标信息表示了一个矢量点所处的空间位置,在军标数据中是以高斯克吕格坐标存放的,shapefile中存放的经纬度转换为高斯克吕格投影坐标;根据坐标信息和比例尺,判定当前坐标所在的图幅。

优选的,在所述步骤s4中,根据分幅的结果和得到的矢量要素信息,生成对应的军标格式文件,生成过程需要把转换后的矢量要素写入到其对应图幅的文件中,需要统计同一类点,线,或面要素的数量,并在文件中写入,需要计算图幅的基本信息写入到元数据文件中,属性文件和坐标文件的id要对应,且位置要对应,注记类的矢量要素需要进行单独的转换,图幅内的文件要保证完整性。

优选的,在所述步骤s3中,根据《地理信息分类与编码规则》,构建所述国标编码和军标编码分类对照表,包括有编码对照表、面的边线对照表和有向点对照表;其中,所述编码对照表中包含的字段信息系包括:国标中的名称,国标编码,国标中的图像类型,军标里的名称,军标编码,军标中的图形类型;所述面的边线对照表,面的边线需要对应成线;所述有向点对照表,根据《地理信息分类与编码规则》中找到有向点信息,整理成表。

优选的,在所述步骤s3中,所述编码对照表描述了国标编码在军标中对应的编码,并且记录了这个数据的图形类型,点,线或面;所述面的边线对照表,记录了国标中面的边线如何对应到军标的规则;所述有向点对照表,记录了哪些点是有向点,而且国标和军标的数据旋转角度会有差异,文件提供了每个有向点类型可以进行固定角度的旋转值,默认为0。

附图说明

下面结合附图进一步描述本发明的技术方案:

图1是国标、军标数据模型示意图;

图2是本发明国标模型到军标模型的矢量空间数据模型转换方法的国军标矢量空间数据模型转换总体流程;

图3是对编码分类对照表进行拆分后的示意图;

图4是面的边线对照表中对面进行边线拆分过程示意图;

图5是国标矢量空间数据入库示意图;

图6是构建国标编码和军标编码分类对照表;

图7是本发明国标模型到军标模型的矢量空间数据模型转换方法的数据转换流程图;

图8是本发明国标模型到军标模型的矢量空间数据模型转换方法的国军标数据模型转换详细流程。

具体实施方式

为了加深对本发明的理解,下面将结合附图和实施例对本发明做进一步详细描述,该实施例仅用于解释本发明,并不对本发明的保护范围构成限定。

本发明实施例的国标模型到军标模型的矢量空间数据模型转换方法,如图2、7和8所示,包括以下步骤:

s1:准备shapefile文件格式的矢量数据;

s2:将所述步骤s1的矢量数据中包含的信息存入数据库(如图5所示),对目录下的shapefile文件进行遍历,然后根据文件列表对数据进行分层;

使用现有技术postsql+postgis可以对shapefile文件数据进行入库操作,提供包含shapefile的文件目录,系统会自动实现对目录下的shapefile文件进行遍历,然后根据文件列表对数据进行分层;

根据提供的shapefile矢量文件数据目录对数据进行入库,并根据文件名称创建对应的表(表名称使用shapefile文件名称进行命名),这个表的逻辑意义就是一个数据层;同时,在postsql中创建军标需要使用的数据库,和点线面数据层对应的数据表,这样就能对转换后的结果进行存储。

数据入库时的字段对照表(这个表处理的是数据入库时,字段不一致的情况)如表1所示:

表1字段对照表

存在这样的情况,在一批数据中,不同的字段表达的是同样的意思,比如:text1,text2,text3都表示text信息,但是因为数据的不一致性,比如可能有的给的是:name1,name2,name3。这样就导致为了要从数据库中查询这个信息,或保存这个信息,就得写专门的查询语句。而且如果有新数据过来,也会导致之前的程序失效,这样对能处理的数据格式就要求就比较严格,但是实际处理的数据并没那么规范,这样程序开发就很难兼容各种情况。

为了程序的通用性,本实施例提出了一种解决方案:首先统一给定实际程序中处理的字段,例如c_text(seg1),这时在seg1后写入text1,text2,text3(相当于x1,x2,x3),根据这个对照关系,只要text1,text2,text3出现,在程序中都使用c_text替换,这样就保证了数据的一致性。之后的相关操作只要使用c_text,就能保证对数据库使用的一致性。

字段对照表的设计,保证了当提供的字段发生变化时,只要在固定位置seg(通用字段标识)后写上实际提供的字段就能正常使用。有时同一批数据中不同的图层中表示同一信息的字段名称都是不一致的,这种设计保证了在数据格式不是特别规范的情况下也能处理出正确的结果。增加了软件处理数据的稳定性和兼容性。这个设计在查询数据库时,允许不同的图层的同一属性拥有不同的字段名。

s3:构建国标编码和军标编码分类对照表,如图6所示;

所述编码对照表描述了国标编码在军标中对应的编码,并且记录了这个数据的图形类型,点,线或面;所述面的边线对照表,记录了国标中面的边线如何对应到军标的规则;所述有向点对照表,记录了哪些点是有向点,而且国标和军标的数据旋转角度会有差异,文件提供了每个有向点类型可以进行固定角度的旋转值,默认为0;

在所述步骤s3中,根据《地理信息分类与编码规则》,构建所述国标编码和军标编码分类对照表,包括有编码对照表、面的边线对照表和有向点对照表(如图3所示);其中,所述编码对照表中包含的字段信息系包括:国标中的名称,国标编码,国标中的图像类型,军标里的名称,军标编码,军标中的图形类型;所述面的边线对照表,面的边线需要对应成线;所述有向点对照表,根据《地理信息分类与编码规则》中找到有向点信息,整理成表;

对照表信息决定生成的结果是否符合最终结果,系统开发过程中根据矢量空间数据结构设计了多种对照表,如表2所示:

表2国标军标对照表

对矢量数据进行采集入库时,国军标的总体标准是一样的,但在部分细节上各个地方会有一定的自由度,可以在一定约束下定义各自需要的地理编码。使用国标军标对照表保证了即使对不同空间矢量要素使用了不同的编码,在进行格式转换前只需将对照表的编码项修改成需要的要素编码系统就能转换处理出正确的数据结果。

对于有向点和多面矢量空间地理要素转换,系统提供了两种空间要素的解决方案:

一、有向点对照表:

有向点地理编码对照表如表3所示:

表3有向点地理编码对照表

军标中的点有两种类型,定位点和有向点,而且有向点的旋转方向和国标中的旋转方向是不一致的。国标的旋转方向是逆时针的,军标是按顺时针旋转的。有向点对照表提供了两个作用:

(1)标识一个点是否是有向点(包含在有向点表中的编码全部按有向点处理)。

(2)设置一个有向点的旋转角度,在实际使用中有向点的旋转角度国标和军标中有的是不一致的,可以通过这里对旋转结果进行调整,最终生成正确的转换结果(这里是对原始角度进行增加n,n值可正可负,大于360度会对结果取模)。

二、面的边线对照表

面的边线对照表如表4所示:

表4面的边线对照表

使用军标格式进行作业的软件,需要每个面的边线,和面中包含的孔的线。为了获取一个面状数据的矢量信息,需要拆解出边线信息,并将其中孔洞的边线也要提取出来,得到这些曲线后,需要将其写成闭合线,这样在军标的作业软件中才能够正确显示。

s4:根据编码分类对照表,对数据库中存放的国标数据进行分层转换并在转换过程中进行分幅;

在所述步骤s4中,具体转换流程为:从矢量入库图层中读取一条数据,记录数据的基本信息,存放在内存中;然后根据编码分类对照表,找到本条数据对应的军标编码,并记录其对应的军标图形特征;如果是点信息,需要根据有向点对照表,判断是否是有向点,并记录;如果是有向点,需要对有向点的旋转角度进行计算,或者进行统一偏转;如果是线则对类型、坐标进行记录;如果是面,则需要进行边线的拆分;

所述层是逻辑上对数据库中表的命名,每一张表,在shapefile文件中表示一个图层。

在所述步骤s4中,从数据库中读取需要转换的信息,把所有需要转换的矢量要素读取出来;对包含的坐标信息进行基本处理,确认获得的矢量元素类型,属于点、线还是面,并记录属性信息。

在所述步骤s4中,在对面的拆分过程中,如图4所示:

s41,当检测到数据是多面时,判断数据是否包含多个面或孔;

s42,如果仅包含一个面或孔,则只要检测这个面或孔中是否包含其他面或孔;

s43,如果只存在一个面或孔且只有一条边线,则只要将这个面中的这条线,按照面线对照表中提到的方式增加一个线元素到军标对应图层的数据库中;

s44,如果存在多条边线,则增加多条线元素到军标图层对应的数据库中;

s45,如果存在多个面或孔在这个多面中,则一次从第一个面或孔对这个面或孔中的面进行检测;

s46,如果递归检测到只有一个面或孔时,增加对应的线到军标库中对应的层中;

s47,获得经纬度坐标信息,根据经纬度信息和比例尺计算所在图幅,并记录;

s48,对经纬度信息进行高斯变换,转换成高斯坐标,这是军标中使用的坐标表示;

s49,根据转换后的军标编码,可以确定所在的军标图层,记录图层名称;

s410,把以上转换后的信息,和计算出的的信息存放到对应的军标库中;

拆解过程综述:国标矢量文件中矢量要素中的面通常以(multipolygon)多面的形式存放。每个里面也会包含0个或多个孔洞,为了确保转换的结果能在军标作业软件中正确显示,需要把面的边线拆分出来,并且把面中含孔洞的边线也拆分出来,这个过程是个循环递归的过程。

关于面边线的拆分,postgis提供了对多面中环的检测,可以检测出一个图形中包含几个环,并能获得每一个环的坐标列表。

转换过程依照图层顺序,对图层中包含的数据进行逐个转换,并将转换结果保存在创建好的军标数据库中。

在所述步骤s4中,根据编码分类对照表的信息,对读取的矢量要素进行编码转换,根据映射关系进行编码的对应,能够把这个要素对应出正确的图层和编码。

在所述步骤s4中,根据坐标信息对矢量要素进行分幅,坐标信息表示了一个矢量点所处的空间位置,在军标数据中是以高斯克吕格坐标存放的,shapefile中存放的经纬度转换为高斯克吕格投影坐标;根据坐标信息和比例尺,判定当前坐标所在的图幅。

在所述步骤s4中,根据分幅的结果和得到的矢量要素信息,生成对应的军标格式文件,生成过程需要把转换后的矢量要素写入到其对应图幅的文件中,需要统计同一类点,线,或面要素的数量,并在文件中写入,需要计算图幅的基本信息写入到元数据文件中,属性文件和坐标文件的id要对应,且位置要对应,注记类的矢量要素需要进行单独的转换,图幅内的文件要保证完整性。

s5:国标编码转换成了军标编码,坐标由经纬度转换成高斯坐标,同时计算出了图像所在的图幅,获得了图像类型,判断了是否是有向点,转换过程数据存放在军标数据库中,最终转换后的数据结果以选择的目录存放。

本实施例使用gdal实现矢量数据中的经纬度坐标转换成高斯克吕格投影坐标。

对于本领域的普通技术人员而言,具体实施例只是对本发明进行了示例性描述,显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,或未经改进将本发明的构思和技术方案直接应用于其它场合的,均在本发明的保护范围之内。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3