[发明专利]一种GIS矢量数据水印嵌入与提取的数据格式自适应方法无效

专利信息
申请号: 200910234944.4 申请日: 2009-11-20
公开(公告)号: CN101877119A 公开(公告)日: 2010-11-03
发明(设计)人: 李安波;左超;曹江华;闾国年 申请(专利权)人: 南京师范大学
主分类号: G06T1/00 分类号: G06T1/00
代理公司: 南京知识律师事务所 32207 代理人: 程化铭
地址: 210097 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种GIS矢量数据水印嵌入与提取的数据格式自适应方法,本发明利用FMEObjects的基于语义的统一数据读写接口以及要素类型点集化抽象方法,提出一种能够支持目前主流GIS矢量数据格式的水印信息嵌入与提取方案,实现了水印嵌入与提取算法对多种GIS矢量数据格式的自适应应用能力,解决了进行GIS矢量数据水印信息嵌入与提取时的数据格式限制问题,使得在对数据进行处理时采用统一的方法进行操作,而无须考虑具体的数据格式,在嵌入与提取水印时也无须考虑具体的要素类型。
搜索关键词: 一种 gis 矢量 数据 水印 嵌入 提取 数据格式 自适应 方法
【主权项】:
一种GIS矢量数据水印嵌入与提取的数据格式自适应方法,其步骤如下:环节一:读取数据要素,并转换成点集合SPoints;具体过程为:步骤1、根据用户指定的数据格式及文件路径信息src_format进行数据读取,同时存储用户指定的保存格式及路径信息des_format。src_format、des_format均为FMEOFormatInfo类;将src_format传递给IFMEOReader接口并调用其ReadSchema方法以及Read方法来分别读取数据的模式要素和几何要素;IFMEOReader接口根据用户所传递的格式信息透明实现相应数据格式的自动匹配与工作;步骤2、按照原始文件V中的ID序号依次存储所读取的矢量数据要素f,得到要素集合m_features;采用分批读取方式,每次只读取一批矢量数据要素,待处理完毕再读取下一批;每一批矢量数据要素可视为V中的一个要素子集合F,如下式:F={fi,0≤i≤N-1}    (1)其中N为当前分批数据中的矢量数据要素个数;读取出来的矢量数据要素均为IFMEOFeature类型,利用.net中的泛型类容器List来存储每一个读取出来的矢量数据要素,矢量数据要素在容器中的索引号即为其在这批矢量数据要素中的相对位置,如下式:m_features={m_featuresi|m_featuresi=fi,0≤i≤N-1}   (2)其中N为当前分批数据中的矢量数据要素个数。步骤3、将临时存储容器m_features中的矢量数据要素按不同的几何类型归类为Points,Lines和Polygons三类,依次得到其对应的点集合MPoints并进行后面步骤的处理,MPoints为泛型类数组List[];a)几何类型为Point的要素,全部归类到Points集合中,Points同样为泛型类容器;利用IFMEOFeature接口中的GetGeometry方法获取Points集合中第i个要素的几何体并直接转换为IFMEOPoint对象pi,存储到MPoints唯一的数组元素中的第i个位置上,每一个位置对应了一个点要素,如式(3)。这样就获得了点类型要素的点集合。MPoints={MPoints0i|MPoints0i=pi,0≤i≤N-1}   (3)其中,N为容器中的要素个数。b)几何类型为Line的要素,全部归类到Lines集合中,Lines同样为泛型类容器。利用IFMEOFeature接口中的GetGeometry方法获取Lines集合中第i个要素的几何体,并转换为IFMEOLine类型,再使用IFMEOLine的GetPointAt方法获取线要素中的第j个IFMEOPoint对象pij,将其添加到MPoints中的第i个数组元素当中的第j个位置,每一个数组元素对应了一个线要素中的点集合,如下式:MPoints={MPointsi|MPointsi=pi,0≤i≤N-1}pi={pij,0≤j≤M-1}   (4)其中,N为容器中的要素个数,pi为第i个要素的点集,M为pi中的点的个数。这样就获得了线类型要素的点集合;c)几何类型为Polygon的要素,全部归类到Polygons集合中,Polygons同样为泛型类容器;利用IFMEOFeature接口中的GetGeometry方法获取Polygons集合中第i个要素的几何体,并转换为IFMEOPolygon类型,然后使用IFMEOPolygon中的GetBoundaryAsCurve方法获取面的边界对象IFMEOCurve,再使用IFMEOCurve的GetAsLine方法转换为IFMEOLine,最后使用IFMEOLine的GetPointAt方法获取当中的第j个IFMEOPoint对象pij,将其添加到MPoints中的第i个数组元素当中的第j个位置,每一个数组元素对应了一个面要素中的点集合,同式(4),这样就获得了面类型要素的点集合;步骤4、获取具有唯一性的点集合SPoints,SPoints为泛型类数组;首先提取具有唯一性的点集;遍历MPoints中的每一个点,利用.net中的Hashtable作为判断依据,以点的X坐标加上Y坐标组成的字符串作为键查询,如果哈希表中存在此键,则说明已有重合的点加入了,不考虑此点;如果不存在,则将此点添加到SPoints中对应的数组元素里,并以该点的X坐标加上Y坐标组成的字符串作为键,以数组元素的索引号i加上元素内部的索引号j组成的字符串作为值添加到哈希表中;至此环节一结束,获得了已读取要素m_features所对应的唯一性点集合SPoints,表示为下式:SPoints={spi,0≤i≤N-1,}spi={spij,0≤j≤K-1}   (5)spi为第i个要素的唯一性点集,N为SPoints中的元素个数,spij为spi中第j个位置上的点对象,K为spi中的点个数;环节二:嵌入水印信息w,获得含水印点集WPoints;水印算法是基于一致的水印嵌入模型来实现的:WPoints=Em(SPoints,w)  (6)Em表示将水印信息w嵌入点集SPoints中的嵌入算法;Em是将水印信息w循环嵌入到唯一性点集SPoints当中;将环节一中获得的唯一性点集SPoints交给水印算法处理,即可满足GIS矢量数据水印嵌入算法的需要;水印算法的处理过程如下:A)配置嵌入参数;获取点集SPoints、水印信息序列w、嵌入位置、嵌入次数等参数;B)生成水印信息嵌入序列w’;根据上述参数以及点集的嵌入容量综合确定需要具体嵌入到每一个点spij中的水印信息,从而得到一个跟SPoints组织方式相同的水印序列w’,如下式:w′={wi,0≤i≤N-1}wi={wij,0≤j≤K-1}   (7)其中wi表示spi要嵌入的水印信息集合,N为w′中的子集合个数,wij为嵌入到spij中的二进制水印信息,K为wi中的元素个数;C)将水印信息嵌入序列对应地嵌入到点集当中每一个点的坐标属性里,得到含水印点集WPoints,WPoints的结构与SPoints相同,如下式:WPoints={wpi,0≤i≤N-1,}wpi={wpij,0≤j≤K-1}   (8)wpi为第i个要素的含水印唯一性点集,N为WPoints中的元素个数,wpij为wpi中第j个位置上的点对象,K为wpi中的点个数;至此环节二结束,获得了已读取要素m_features所对应的含水印唯一性点集合WPoints;另外,如果是水印提取,则此环节将从待检测数据中提取出来的SPoints交给水印提取算法处理,返回提取结果;环节三:将含水印的点集WPoints重新装配给数据要素,并生成新的含水印文件vw,分为三个步骤;步骤1、根据WPoints来对原始的完整点集合MPoints进行处理;遍历MPoints中的每一个点,仍然根据环节一当中的哈希表来进行判断,如果以点的X坐标加上Y坐标组成的字符串作为键查询到的值为字符串,则将结果字符串解析,得到在WPoints中的索引号,然后将此索引位置上的点的几何属性赋给正在遍历的点,并将哈希表中的值替换为该索引位置上的IFMEOPoint;如果查询到的值为IFMEOPoint类型,则直接将此IFMEOPoint的几何属性赋给正在遍历的点,得到含水印完整点集MPoints’;步骤2、将MPoints’重新装配回数据要素,分为三种情况:1)遍历Points当中的每一个要素,要素的索引号即对应了MPoints’中唯一的数组元素中的索引位置,此位置上的IFMEOPoint就是对应点要素经过处理后的结果;将此索引位置上的IFMEOPoint的几何属性赋给正在遍历的点要素的IFMEOPoint对象,得到处理后的点要素集合Points’;2)遍历Lines当中的每一个要素,要素的索引号即对应了MPoints’中的数组元素的索引号;此位置上的泛型类对象中存储的就是对应线要素经过处理后的点集;依次对此泛型类对象中存储的点使用线要素中IFMEOLine对象的SetPointAt方法来重新设置线要素中的每一个IFMEOPoint,得到处理后的线要素集合Lines’;3)遍历Polygons当中的每一个要素,要素的索引号即对应了MPoints’中的数组元素的索引号;此位置上的泛型类对象中存储的就是对应面要素经过处理后的点集。;依次对此泛型类对象中存储的点使用面要素中IFMEOLine对象的SetPointAt方法来重新设置面要素中的每一个IFMEOPoint,将重新设置后的IFMEOLine对象转换为IFMEOCurve,然后对此IFMEOCurve对象使用IFMEOGeometryTools的CreatePolygonByCurve方法,生成新的IFMEOPolygon对象,最后利用正在遍历的IFMEOFeature要素的SetGeometry方法,将新的IFMEOPolygon对象赋给当前要素,得到处理后的面要素集合Polygons’;步骤3、将含水印的要素写入新的数据文件vw当中;利用环节一中用户所指定的des_format来实现IFMEOWriter接口,进而调用此接口的AddSchema方法以及Writer方法来分别写入数据的模式要素和几何要素;直接按照存储容器中的顺序依次写入IFMEOFeature,最后得到含水印信息的矢量数据文件vw。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京师范大学,未经南京师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/200910234944.4/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top