专利名称:基于要素几何精度弱化的gis矢量数据伪装与还原方法
技术领域:
本发明属于地理信息安全领域,具体涉及一种基于几何精度弱化技术进行GIS矢量数据伪装与还原的方法。
背景技术:
地理信息的安全防护涉及国家安全和社会利益,是当前急需解决的国家和社会重大需求问题。特别是当今空间数据共享需求逐步扩大,地理信息服务应用不断拓展的情况下,地理信息的安全问题进一步突出。作为国家空间数据基础设施主要数据内容的GIS矢量数据,其信息安全研究更是至关重要。目前,信息伪装已成为信息安全研究中除密码学之外的另一重要分支。国内外相关研究文献及专利检索结果分析表明,目前,在信息伪装的研究方面,所研究的载体数据类型主要包括图像、视频、遥感影像、DEM等。但是,矢量数据由于其具有无固定存储顺序的数据组织、多样的数据格式、强大的可视化表达手段、复杂的投影变换、繁多的空间分析应用,以及精度高、冗余少等诸多方面的特性,使得针对矢量数据的信息伪装研究具有一定的特殊性和较大难度。
发明内容
本发明的目的在于基于要素属性信息进行要素几何精度弱化的思路,提出一种针对GIS矢量数据的伪装与还原方法,以有效提高GIS矢量数据在数据传输、脱密处理中的安全性。为了实现上述目的,本发明所采取的技术方案如下
基于要素几何精度弱化的GIS矢量数据伪装与还原方法,主要包括以下过程 (1)伪装过程
步骤一打开一个GIS矢量数据图层文件,读取属性字段名称,设置处理用的数值型属性字段名称;设置8位二进制随机信息作为密钥Key,并存入密钥文件;
步骤二 判断图层类型,如果为点图层数据,则执行步骤三;如果为线面图层数据,则执行步骤四;
步骤三
(a)分别读取一点要素的所指定属性信息和几何信息到数值型变量a和点对象Point
中;
(b)基于如下公式(1),进行Point值的精度弱化 Point.X=Point. x+1/f(a)
Point. y=Point. y+l/f(a)(1)
其中,函数f (a)为取变量a的属性等级,其值域为[1,η],η为正整数;l/f(a)运算中的小数位数,与相应点的小数位数保持一致; 步骤四(a)读取一个要素中所有点的几何数据到数组队列D中,其指定属性信息读取到数值型变量a中;
(b)针对数组队列D中的每一个点,基于如下公式(2),进行Point值的精度弱化 Point. X=Point. x+l/f (a) *g(Key, Mod (i, 8))
Point. y=Point. y+l/f (a) *g(Key, Mod(i, 8)) (2) 其中,i为数组队列D中点的序号;Key为密钥;函数ModO为取余函数;函数g() 为基于点序号i值所确定的余数从密钥Key中取出相应位的取值,其值为O或1 ;函数f (a) 为取变量a的属性等级,其值域为[1,11],11为正整数;1邝(幻运算中的小数位数,与相应点的小数位数保持一致;
步骤五根据不同的图层类型,循环执行步骤三或步骤四,直至每一要素处理完毕后,保存伪装后的数据文件; (2)还原过程
步骤一选择处理用属性字段名称,打开一个GIS矢量数据图层文件;读取密钥文件并设置密钥Key ;
步骤二 判断图层类型,如果为点图层数据,则执行步骤三;如果为线面图层数据,则执行步骤四;
步骤三
(a)分别读取一点要素的所指定属性信息和几何信息到数值型变量a和点对象Point
中;
(b)基于如下公式(3),进行Point值的精度弱化 Point.X=Point. χ-l/f(a)
Point. y=Point. y-l/f (a)(3)
其中,函数f(a)为取变量a的属性等级,其值域为[1,η],η为正整数;l/f(a)运算中的小数位数,与相应点的小数位数保持一致; 步骤四
(a)读取一个要素中所有点的几何数据到数组队列D中,其指定属性信息读取到数值型变量a中;
(b)针对数组队列D中的每一个点,基于如下公式(4),进行Point值的精度弱化 Point. X=Point. χ-1/f (a) *g(Key, Mod (i, 8))
Point. y=Point. y-l/f (a) *g(Key, Mod(i, 8))(4)
其中,i为数组队列D中点的序号;Key为密钥;函数ModO为取余函数;函数g() 为基于点序号i值所确定的余数从密钥Key中取出相应的密钥位,其值为O或1 ;函数f (a) 为取变量a的属性等级,其值域为[1,11],11为正整数;1邝(幻运算中的小数位数,与相应点的小数位数保持一致;
步骤五根据不同的图层类型,循环执行步骤三或步骤四,直至每一要素处理完毕后,保存伪装后的数据文件。 本发明根据GIS矢量数据的数据组织特点,基于要素属性信息进行要素几何精度弱化的思路,提出了一种针对GIS矢量数据的伪装与还原方法,可以进行shp等格式数据的伪装与还原处理,一定程度上满足了 GIS矢量数据的隐藏通信与安全传输需求。
图1是本发明实施例选取的实验数据。图2是本发明实施例的原始数据局部效果图。图3是本发明实施例的伪装数据局部效果图。图4是图3效果图的边缘局部放大图。
具体实施例方式下面结合附图和实施例做进一步详细说明。本实例选择一典型的shp面图层数据,针对数据的读取、伪装处理、数据还原的整个过程,进一步详细说明本发明。本实施例选择全国1 :400万的省界面状图层数据(如图1) 作为实验数据。密钥Key值为“10010101”。选取AREA字段为处理用要素属性字段。(1)数据伪装处理。步骤一打开省界图层数据文件,数据格式为面状数据,密钥Key值为 “10010101”。步骤二 判断图层类型,为面状图层数据,则执行如下步骤。步骤三
(a)读取第一个要素中的923点的几何数据到数组队列D中,其相应AREA字段的属性取值68. 488655,读取到数值型变量a中。(b)针对数组队列D中的每一个点,基于如下公式(2),进行Point值的精度弱化
Point. X=Point. x+l/f (a) *g(Key, Mod (i, 8)) Point. y=Point. y+l/f (a) *g(Key, Mod(i, 8)) (2) 读取的第一个点为{121. 49738309820822, 53. 3210449M51802},本实施例中,函数f (a)结果为计算变量a整数部分位数,即变量a整数部分位数即为要素属性级别。针对第一个点,f (68. 488655) =2,经处理,第一个点的值为{ 121. 99738309820822, 53.82104492451802}o步骤四循环步骤三,直至每一要素处理完毕后,保存伪装后的数据文件。(2)数据还原处理。步骤一打开伪装处理后的省界图层数据文件,数据格式为面状数据。读取密钥文件,并设置密钥密钥Key,其值为“ 10010101”。选取AREA字段为处理用要素属性字段。步骤二 判断图层类型,为面状图层数据,则执行如下步骤。步骤三
(a)读取第一个要素中的923点的几何数据到数组队列D中,其相应AREA字段的属性取值68. 488655,读取到数值型变量a中。(b)针对数组队列D中的每一个点,基于如下公式(4),进行Point值的精度弱化 Point. X=Point. χ-1/f (a) *g(Key, Mod (i, 8))
Point. y=Point. y-l/f (a) *g(Key, Mod(i, 8))(4)
读取的第一个点为{121. 99738309820822, 53. 82104492451802 },经处理,其值还原为 {121.49738309820822, 53.32104492451802}。
6
步骤四循环步骤三,直至每一要素处理完毕后,保存伪装后的数据文件。本发明实施例中仅以面图层数据进行数据伪装与还原处理,该方法也可以适用于点、线类型图层数据。本发明实施例中仅以shp格式的GIS矢量数据进行数据伪装与还原处理,该方法也适用于GML、E00、MIF等其它格式GIS矢量数据的数据伪装与还原处理。本发明实施例中,函数f (a)为计算变量a整数部分位数,即变量a整数部分位数即为要素属性级别。也可以采用其它分级函数。(3)测试分析。由上述实施例中原始数据(图2)与伪装处理数据的效果图(图3、图4)可知数据经伪装处理后,虽仍为可使用GIS软件正确打开的shp数据,但要素坐标点的位置发生了较大变化,对于数据精度质量要求较高的GIS矢量数据来说,这一处理显著降低了数据质量和数据使用价值,限制了非法拷贝或拦截数据的正常使用,达到一定的数据保护目的。只有合法用户获取到密钥文件,才能正确、无损地还原数据。综上分析,本发明所采用的方法可以成功地应用于GIS矢量数据的伪装与还原处理,一定程度上满足GIS矢量数据的隐藏通信与安全传输需求。
权利要求
1.基于要素几何精度弱化的GIS矢量数据伪装与还原方法,主要包括以下过程(1)伪装过程步骤一打开一个GIS矢量数据图层文件,读取属性字段名称,设置处理用的数值型属性字段名称;设置8位二进制随机信息作为密钥Key,并存入密钥文件;步骤二 判断图层类型,如果为点图层数据,则执行步骤三;如果为线面图层数据,则执行步骤四;步骤三(a)分别读取一点要素的所指定属性信息和几何信息到数值型变量a和点对象Point中;(b)基于如下公式(1),进行Point值的精度弱化 Point.X=Point. x+1/f(a)Point. y=Point. y+l/f(a)(1)其中,函数f (a)为取变量a的属性等级,其值域为[1,η],η为正整数;l/f(a)运算中的小数位数,与相应点的小数位数保持一致; 步骤四(a)读取一个要素中所有点的几何数据到数组队列D中,其指定属性信息读取到数值型变量a中;(b)针对数组队列D中的每一个点,基于如下公式(2),进行Point值的精度弱化 Point. X=Point. x+l/f (a) *g(Key, Mod (i, 8))Point. y=Point. y+l/f (a) *g(Key, Mod(i, 8)) (2) 其中,i为数组队列D中点的序号;Key为密钥;函数Mod ()为取余函数;函数g() 为基于点序号i值所确定的余数从密钥Key中取出相应位的取值,其值为O或1 ;函数f (a) 为取变量a的属性等级,其值域为[1,11],11为正整数;1邝(幻运算中的小数位数,与相应点的小数位数保持一致;步骤五根据不同的图层类型,循环执行步骤三或步骤四,直至每一要素处理完毕后, 保存伪装后的数据文件; (2)还原过程步骤一选择处理用属性字段名称,打开一个GIS矢量数据图层文件;读取密钥文件并设置密钥Key ;步骤二 判断图层类型,如果为点图层数据,则执行步骤三;如果为线面图层数据,则执行步骤四;步骤三(a)分别读取一点要素的所指定属性信息和几何信息到数值型变量a和点对象Point中;(b)基于如下公式(3),进行Point值的精度弱化 Point.X=Point. χ-l/f(a)Point. y=Point. y-l/f (a)(3)其中,函数f(a)为取变量a的属性等级,其值域为[1,η],η为正整数;l/f(a)运算中的小数位数,与相应点的小数位数保持一致;步骤四(a)读取一个要素中所有点的几何数据到数组队列D中,其指定属性信息读取到数值型变量a中;(b)针对数组队列D中的每一个点,基于如下公式(4),进行Point值的精度弱化 Point. X=Point. χ-1/f (a) *g(Key, Mod (i, 8))Point. y=Point. y-l/f (a) *g(Key, Mod(i, 8))(4)其中,i为数组队列D中点的序号;Key为密钥;函数ModO为取余函数;函数g() 为基于点序号i值所确定的余数从密钥Key中取出相应的密钥位,其值为O或1 ;函数f (a) 为取变量a的属性等级,其值域为[1,11],11为正整数;1邝(幻运算中的小数位数,与相应点的小数位数保持一致;步骤五根据不同的图层类型,循环执行步骤三或步骤四,直至每一要素处理完毕后, 保存伪装后的数据文件。
全文摘要
本发明公开了一种基于要素几何精度弱化的GIS矢量数据伪装与还原方法。本发明的数据伪装方法包括以下步骤(1)打开一个GIS矢量数据图层文件,读取属性字段名称,设置8位二进制随机信息做为密钥Key;(2)判断图层类型针对点图层数据,分别读取一点要素的所指定属性信息和几何信息到数值型变量a和点对象Point中,并进行Point值的精度弱化;针对线面图层数据,读取一要素中所有点的几何数据到数组队列D中,其指定属性信息读取到数值型变量a中,并对D中的每一个点进行Point值的精度弱化;(3)循环处理完每一要素后,保存伪装后的数据。本发明的方法能有效提高GIS矢量数据在数据传输中的安全性,可应用于GIS矢量数据的隐藏通信与安全传输。
文档编号G06F21/24GK102509056SQ20111029351
公开日2012年6月20日 申请日期2011年9月28日 优先权日2011年9月28日
发明者张驰, 李安波, 闾国年 申请人:南京师范大学