一种空间数据的融合方法转让专利

申请号 : CN201010230447.X

文献号 : CN101908215B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 雷秋良徐爱国张认连张怀志冀宏杰岳现录武淑霞张维理刘丽正刘冰陈斌吴章生

申请人 : 中国农业科学院农业资源与农业区划研究所

摘要 :

本发明公开了一种空间数据融合方法,属于农业与资源环境空间信息技术领域。本发明的方法为:首先对数据进行预处理,将其转化为统一格式的数据;然后对转换后的数据进行融合与边缘匹配;最后对处理后的数据进行合并与输出,挂接原始数据中的属性,生成最终不包含所选要素数据的新矢量图。与现有技术相比,本发明实现了对空间数据融合的自动化处理,可在处理过程中比较多种要素的分布、变化情况,同时解决了在融合过程中出现的细小图斑。

权利要求 :

1.一种空间数据的融合方法,其步骤为:

1)在空间数据层的属性数据中增加一整型字段CODE;

2)将要融合要素的CODE值设置为同一值,将每一非融合要素的CODE值分别设置一唯一值,生成矢量图;

3)根据字段CODE值将矢量数据转换为栅格数据,CODE字段对应转换为栅格属性表字段VALUE;

4)将要融合要素的空间数据转换为空数据;

5)将要融合要素的空数据替换为邻近的数据,生成不包含要融合要素的栅格数据图层;

6)将5)所得的栅格数据转换为矢量数据,生成矢量图;其中,栅格数据属性表字段VALUE转换为字段GRIDCODE;

7)从2)所得的矢量图中提取要融合要素图层,并用其对6)所得的矢量图进行裁切,生成裁切后的矢量图;

8)在7)所得矢量图属性表中增加一整型字段CODE,并将字段GRIDCODE值赋给该整型字段CODE后,删除字段GRIDCODE;

9)利用8)所输出的图层擦除2)所得的矢量图,生成不包含要融合要素的矢量图;

10)将不包含要融合要素的矢量图作为参考,对8)所输出的图层进行边缘节点匹配;

11)将不包含要融合要素的矢量图与10)处理后的图层进行合并后,根据字段CODE将输出的属性表与2)所得矢量图的属性表进行关联,获取原始矢量图中的所有其他属性字段,生成不包含要融合要素数据的新矢量图。

2.如权利要求1所述的方法,其特征在于对空间数据进行预处理,将空间数据转换为设定条件的数据。

3.如权利要求2所述的方法,其特征在于所述设定条件为:数据格式为ArcGIS的shape格式、数据坐标系为投影坐标系。

4.如权利要求1或3所述的方法,其特征在于将不包含要融合要素的矢量图作为参考,对8)所输出的图层进行边缘节点匹配的方法为:a)获取8)所输出的图层中所有要融合要素,保存到riverArray数组中;获取不包含要融合要素的矢量图层中与要融合要素有公共边的所有要素,保存到SoilArray数组中;

b)从RiverArray选取两要素,设为RiverPolygon1、RiverPolygon2,其中所选的两要素有相同的公共边,记录这两要素在RiverArray中的标记号,放入三维数组Record中;

c)从SoilArray选取一要素,设为SoilPolygon1,该要素同时与RiverPolygon1、RiverPolygon2有公共边,将所选三个要素的公共点放入点集InterPoint1中;

d)从SoilArray选取一要素,设为SoilPolygon2,该要素与SoilPolygon1有公共边、且其与RiverPolygon1或RiverPolygon2有公共边,得到SoilPolygon1、SoilPolygon2、RiverPolygon1或RiverPolygon2三个多边形要素的公共点,放入点集InterPoint2;

e)分别从InterPoint1、InterPoint2中循环取点,所取的两点之间的距离小于设定的容差,然后将从InterPoint1中选取的点的坐标值赋给从InterPoint2中所选点,重新构造RiverPolygon1、RiverPolygon2,并保存到新建的输出图层。

5.如权利要求4所述的方法,其特征在于所述生成不包含要融合要素数据的新矢量图的方法为:a)将不包含要融合要素的矢量图与10)处理后的图层进行合并;

b)将合并后的矢量图中CODE值为0的图斑进行合并;

c)选取CODE值为0的要素,检测并消除新创建图层中的空白图斑,生成新的矢量图层;

d)将新的矢量图层中的复合图斑分离为简单图斑,输出矢量图层和属性表;

e)根据字段CODE将输出的属性表与2)所得矢量图的属性表进行关联,获取原始矢量图中的所有其他属性字段,将d)输出的矢量图层生成不包含要融合要素数据的新矢量图。

6.如权利要求1或3所述的方法,其特征在于将融合要素的CODE值设置为0,将每一非融合要素的CODE值分别设置为一非0的唯一值,得到一矢量图。

7.如权利要求6所述的方法,其特征在于将字段CODE值作为栅格数据的灰度值,将空间数据转换为栅格数据。

8.如权利要求1所述的方法,其特征在于所述空数据为正数或负数。

9.如权利要求1或8所述的方法,其特征在于所述空数据为整型或浮点型数据。

10.如权利要求1或8所述的方法,其特征在于将所述空数据作为nibble命令中的掩模,然后利用nibble命令,生成不包含要融合要素的栅格数据图层。

说明书 :

一种空间数据的融合方法

技术领域

[0001] 本发明涉及一种数据融合方法,尤其涉及一种空间数据融合方法,属于农业与资源环境空间信息技术领域。

背景技术

[0002] 目前,空间数据的融合技术在很多领域得到应用,以土壤空间数据融合为例,在进行我国第二次土壤普查土壤图数字化建库过程中,发现在土壤图中原来的许多基础地理要素的空间位置存在一些问题,与实际并不十分吻合,这主要是由于在当时制图中导致的一些误差。
[0003] 另外,从目前来看,与当前的1∶5万国家基础地理要素相比,诸多基础地理要素的空间范围也发生了改变,如位置的变化等。这就要求目前土壤图中所包含的空间数据需要用新的基础地理数据进行更新,但更新后会有不同形状的细碎图斑(包括不同形状的图斑、长条形、不规则多边形、圆形等),这涉及到如何将细碎图斑归并的邻近的土壤多边形。在这种情况下,我们考虑将居民地和(或)水系要素首先融合到邻近的土壤中,然后再进行更新,这样,避免了由于先更新而导致的细碎图斑。在融合过程中,由于水系或居民地形状很不规则,与周围多个图斑相毗邻,若直接将水系或居民地融合到邻近的土壤,会出现土壤类型的不合理问题,显然不能直接归并,需要按照一定的比例进行归并,这样比较合理。
[0004] 同样,在其它空间数据处理过程中,也存在类似的问题,同样也有需要按照上面要求进行处理。
[0005] 目前没有现成的工具或算法进行空间要素按照合适的比例进行融合。

发明内容

[0006] 本发明的目的在于提供了一种空间数据的融合方法。本发明基于按照比例进行融合的思路,提出了空间数据矢量要素融合模型的算法,并进行了应用。为了达到上述技术目的。
[0007] 本发明的技术方案为:
[0008] 一种空间数据的融合方法,其步骤为:
[0009] 1)在空间数据层的属性数据中增加一整型字段CODE;
[0010] 2)将要融合要素的CODE值设置为同一值,将每一非融合要素的CODE值分别设置一唯一值,生成矢量图;
[0011] 3)根据字段CODE值将矢量数据转换为栅格数据,CODE字段对应转换为栅格属性表字段VALUE;
[0012] 4)将要融合要素的空间数据转换为空数据;
[0013] 5)将要融合要素的空数据替换为邻近的数据,生成不包含要融合要素的栅格数据图层;
[0014] 6)将5)所得的栅格数据转换为矢量数据,生成矢量图;其中,栅格数据属性表字段VALUE转换为字段GRIDCODE;
[0015] 7)从2)所得的矢量图中提取要融合要素图层,并用其对6)所得的矢量图进行裁切,生成裁切后的矢量图;
[0016] 8)在7)所得矢量图属性表中增加一整型字段CODE,并将字段GRIDCODE值赋给该整型字段CODE后,删除字段GRIDCODE;
[0017] 9)利用8)所输出的图层擦除2)所得的矢量图,生成不包含要融合要素的矢量图;
[0018] 10)将不包含要融合要素的矢量图作为参考,对8)所输出的图层进行边缘节点匹配;
[0019] 11)将不包含要融合要素的矢量图与10)处理后的图层进行合并后,根据字段CODE将输出的属性表与2)所得矢量图的属性表进行关联,获取原始矢量图中的所有其他属性字段,生成不包含要融合要素数据的新矢量图。
[0020] 进一步的,对空间数据进行预处理,将空间数据转换为设定条件的数据。
[0021] 进一步的,所述设定条件为:数据格式为ArcGIS的shape格式、数据坐标系为投影坐标系。
[0022] 进一步的,将不包含要融合要素的矢量图作为参考,对8)所输出的图层进行边缘节点匹配的方法为:
[0023] a)获取8)所输出的图层中所有要融合要素,保存到riverArray数组中;获取不包含要融合要素的矢量图层中与要融合要素有公共边的所有要素,保存到SoilArray数组中;
[0024] b)从RiverArray选取两要素,设为RiverPolygon1、RiverPolygon2,其中所选的两要素有 相同的公共边,记录这两要素在RiverArray中的标记号,放入三维数组Record中;
[0025] c)从SoilArray选取一要素,设为SoilPolygon1,该要素同时与RiverPolygon1、RiverPolygon2有公共边,将所选三个要素的公共点放入点集InterPoint1中;
[0026] d)从SoilArray选取一要素,设为SoilPolygon2,该要素与SoilPolygon1有公共边、且其与RiverPolygon1或RiverPolygon2有公共边,得到SoilPolygon1、SoilPolygon2、RiverPolygon1或RiverPolygon2三个多边形要素的公共点,放入点集InterPoint2;
[0027] e)分别从InterPoint1、InterPoint2中循环取点,所取的两点之间的距离小于设定的容差,然后将从InterPoint1中选取的点的坐标值赋给从InterPoint2中所选点,重新构造RiverPolygon1、RiverPolygon2,并保存到新建的输出图层。
[0028] 所述生成不包含要融合要素数据的新矢量图的方法为:
[0029] a)将不包含要融合要素的矢量图与10)处理后的图层进行合并;
[0030] b)将合并后的矢量图中CODE值为0的图斑进行合并;
[0031] c)选取CODE值为0的要素,检测并消除新创建图层中的空白图斑,生成新的矢量图层;
[0032] d)将新的矢量图层中的复合图斑分离为简单图斑,输出矢量图层和属性表;
[0033] e)根据字段CODE将输出的属性表与2)所得矢量图的属性表进行关联,获取原始矢量图中的所有其他属性字段,将d)输出的矢量图层生成不包含要融合要素数据的新矢量图。
[0034] 进一步的,将融合要素的CODE值设置为0,将每一非融合要素的CODE值分别设置为一非0的唯一值,得到一矢量图。
[0035] 进一步的,将字段CODE值作为栅格数据的灰度值,将空间数据转换为栅格数据。
[0036] 进一步的,所述空数据为正数或负数。
[0037] 进一步的,所述空数据为整型或浮点型数据。
[0038] 进一步的,将所述空数据作为nibble命令中的掩模,然后利用nibble命令,生成不包含要融合要素的栅格数据图层。
[0039] 与现有技术相比,本发明的有益效果是:
[0040] 1、构建了空间数据融合模型,提出了具体解决方法,实现自动化处理;
[0041] 2、可以在处理过程中比较多种要素的分布、变化情况,如图2、3所示;
[0042] 3、解决了在融合过程中出现的细小图斑。

附图说明

[0043] 图1.本发明的方法流程图;
[0044] 图2.增加CODE字段矢量土壤图;
[0045] 图3.从原始土壤图中提取的水系和居民地矢量要素图;
[0046] 图4.进行栅格转换后的栅格土壤图;
[0047] 图5.水系和居民地要素被转换为空值数据的栅格土壤图;
[0048] 图6.进行融合处理的栅格土壤图;
[0049] 图7.融合后的栅格土壤图转换为矢量的土壤图;
[0050] 图8.裁切后矢量土壤图;
[0051] 图9.进行字段增加和赋值后的矢量土壤图;
[0052] 图10.进行擦除后的矢量土壤图;
[0053] 图11.边缘节点匹配修正后的土壤图;
[0054] 图12.完成属性挂接的最终土壤图。

具体实施方式

[0055] 下面结合实际的空间数据(以土壤图为例)和附图对本发明进行进一步详细描述:
[0056] 本模型的运行环境为地理信息系统软件ArcGIS9.3下运行;本发明的方法流程如图1所示:
[0057] 第1步:数据要求及数据预处理
[0058] 1.1要求土壤空间数据为ArcGIS的shape格式,数据坐标系为投影坐标系,符合该条件的数据不用进行转换,不符合该条件的进行转换成Shape格式和投影转换,主要是保证数据的一致性和便于模型的数据准备。
[0059] 完成数据一致性后,在土壤空间数据层属性数据中增加一整型字段CODE(代码),根据用户需求,用户可以自定义需要融合的要素(如水系、居民地等),将需要融合的要素记录值设置为0(设置为0的要素则将被融合),不需要融合的要素CODE字段则赋值为非0的唯一整数值。如图2所示。
[0060] 输出数据层名:Soil_origin。
[0061] 第2步:数据融合与边缘匹配
[0062] 2.1用Feature to Raster命令,用第一步中所增加的字段CODE的数值作为栅格数据的灰度值,将土壤图转换为栅格数据,CODE字段对应转换后的属性表字段VALUE。如图4所示。
[0063] 输出数据层名:Soil_Raster
[0064] 输出属性表字段:VALUE COUNT
[0065] 2.2用SetNull命令将土壤空间数据中的水系、居民地数据转换为NoData(空数据)数据,作为nibble命令中的掩膜。如图5所示。
[0066] 输出数据层名:Soil_Null
[0067] 输出属性表字段:VALUE COUNT
[0068] 说明:Nodata(空数据):栅格值可以是正数、负数,整型,浮点型数据,栅格也可以是空数据,空数据代表缺失数据。Nibble:该命令主要功能是用最邻近的栅格值替代掩膜对应的栅格值。
[0069] 2.3基于土壤栅格数据,用第步骤2.2生成的数据作为掩膜,运行nibble命令(利用邻近原理将水系、居民地全部替换为邻近的土壤类型),将水系、居民地进行融合,生成不包含水系、居民地要素的栅格土壤图。如图6所示。
[0070] 输入数据层:Soil_Raster、Soil_Null
[0071] 输出数据层名:Soil_Nibble
[0072] 输出属性表字段:VALUE COUNT
[0073] 2.4用Raster to Polygon命令将步骤2.3的已经融合的栅格数据转换为矢量数据,生成新的矢量土壤图。转换过程中栅格数据属性表字段VALUE自动转换为GRIDCODE,GRIDCODE对应VALUE值。如图7所示。
[0074] 输出数据层名:Soil_Vector
[0075] 新的矢量土壤图属性表字段:ID GRIDCODE
[0076] 2.5用Select命令提取旧土壤图中水系、居民地要素图层。如图3所示。
[0077] 输出数据层名:Soil_HYDRES
[0078] 2.6用2.5步骤所提取的原始土壤图中水系、居民地要素图层,对2.4步骤中所生成的矢量图进行裁切(用Clip命令),生成裁切后的矢量土壤图。如图8所示。
[0079] 输出数据层名:Soil_Clip
[0080] 输出属性表字段:ID GRIDCODE
[0081] 2.7用Add Field命令在步骤2.6生成的矢量土壤图属性表中增加整型字段CODE,此时CODE字段的值为空。由于在步骤3.1合并过程中,要求字段必须一致,此外,也便于进行匹配,因此在该步骤中增加字段。
[0082] 2.8由于GRIDCODE与原始CODE字段值对应,用Calculate Field命令将GRIDCODE值赋给矢量土壤图属性表新增加的字段CODE,然后删除GRIDcode字段。
[0083] 本步骤目的是进行赋值,GRIDCODE值是栅格转矢量时生成的,处理过程中不改变。如图9所示。
[0084] 输出数据层名:Soil_Clip
[0085] 输出属性表字段:ID CODE
[0086] 2.9用步骤2.8输出的图层擦除(Erase命令)步骤1.1原始土壤图(Soil_origin),生成擦除后的原始土壤图(不包含水系、居民地)。如图10所示。
[0087] 输出数据层名:Soil_Erase
[0088] 输出属性表字段:ID CODE
[0089] 2.10由于步骤2.8所生成的数据层由栅格转换而来,与步骤2.9输出数据层Soil_Erase会存在边缘节点不完全匹配的情况,接边的地方有一定程度不吻合,可以利用步骤2.9输出数据层Soil_Erase作为参考,对步骤2.8输出数据层Soil_Clip进行边缘节点匹配,边缘拼配进行一次即可。
[0090] 本发明中采用的边缘节点匹配拼接思路为:
[0091] 设置:Soil_Erase和Soil_Clip分别是选择的土壤图层和河流、居民地图层,Max seach raudis是可设定的容差,SoilUpdate FeatureClass output是输出的新的河流、居民地图层。
[0092] 1)获取全部河流、居民地图层要素,保存到riverArray数组中;获取土壤图层要素中能够与河流、居民地有公共边的所有要素,保存到SoilArray数组中;
[0093] 2)从riverArray选取两个要素,要同时满足两个条件:①两个要素不是同一个要素,②两个要素有相同的公共边,设为RiverPolygon1、RiverPolygon2,记录下这两个要素在riverArray中的标记号,放入三维数组record,这个三维数组是为了标记已经处理过的两个要素,使之不在作处理以节省时间;
[0094] 3)从SoilArray选取 一个要 素,要 满足条 件:同时与 RiverPolygon1、RiverPolygon2有公共边,设为soilPolygon1,得到三个多边形要素的公共点,放入点集InterPoint1,这个点集中的点就是要移动的点;
[0095] 4)从SoilArray选取一个要素,要同时满足两个条件:①与soilPolygon1有公共边②与RiverPolygon1或RiverPolygon2有公共边,设为soilPolygon2,得到soilPolygon1、soilPolygon2、RiverPolygon1或RiverPolygon2三个多边形要素的公共点,放入点集InterPoint2,这个点集中的点就是要移动到的点;
[0096] 5)分别从InterPoint1、InterPoint2中循环取点,要满足这两个点之间的距离小于容差,设为moveFromPoint、moveToPoint,把moveToPoint的X、Y坐标值赋给moveFromPoint,重新构造RiverPolygon1、RiverPolygon2,并保存到新建的输出图层。如图11所示。
[0097] 输入数据层:Soil_Erase、Soil_Clip
[0098] 输出数据层:Soil_ClipNew
[0099] 输出属性表字段:ID CODE。
[0100] 第三步,数据合并与输出,挂接原始土壤中的属性,生成最终不包含所选要素数据的新土壤图。
[0101] 3.1用Merge命令将相邻相同类型的新土壤图进行合并,这一步是针对同类型不同来源的要素的合并。
[0102] 输入数据层:Soil_Erase、Soil_ClipNew
[0103] 输出数据层:Soil_Merge
[0104] 输出属性表字段:ID CODE
[0105] 3.2用Dissolve命令将土壤图中CODE为0的图斑合并,这一步是针对相同属性值仍为有0的记录的要素进行合并。
[0106] 输出数据层:Soil_Dissolve
[0107] 输出属性表字段:ID CODE
[0108] 3.3用Select Layer by Attribute命令选取属性CODE为0的要素,再用eliminate命令对创建新图层中的空白图斑的检测并消除细碎图斑,生成新的矢量图层。
[0109] 输出数据层:Soil_Elimi
[0110] 输出属性表字段:ID CODE
[0111] 3.4用Multipart to Singlepart命令将3.3步融合过程中产生的复合图斑分离为简单图斑,生成新的矢量图层。
[0112] 输出数据层:Soil_Single
[0113] 输出属性表字段:ID CODE
[0114] 3.5基于3.4步骤所获得的数据层属性表与1.1步骤中的原始土壤图的属性表通过CODE字段进行挂接,获得原始土壤图中的所有其它属性字段,最后生成挂接原始土壤属性的新土壤图。如图12所示。
[0115] 输出数据层:Soil_Join
[0116] 输出属性表字段:ID CODE其他属性字段。