APP下载

基于线型识别与逐层构面的遥感解译数据循环赋值算法

2022-03-24白雪芹李远华叶梦莹冶亚琼甘海伶

科技创新与应用 2022年6期
关键词:图斑优先权赋值

白雪芹,李远华,王 瑞,叶梦莹,冶亚琼,甘海伶

(吉林大学地球探测科学与技术学院,吉林 长春 130026)

随着人工智能的发展,遥感+AI 技术成为发展趋势,但是由于受混合像元、地表条件复杂、反演模型准确性、分类样本误差和分类方法限制,简单地物的像元分类精度约为75%[1-4]。因此,在土地调查(例如全国第三次土地调查)、自然资源普查、地质灾害普查、生态环境监测和矿山遥感监测等对数据精确度要求较高的应用领域或项目,仍然要求采用传统人机交互遥感解译方法[5-6]。然而,人机交互遥感解译过程复杂,后期的“精确归类、拓扑造区、填充属性”等工作非常繁琐,而且地类越多越复杂,工作越困难。所以,快速赋予各图斑正确属性一直是制约解译效率与成果快速应用的关键因素。

针对以上问题,有学者开展了相关的研究。主要有如下几个思路:简单的方法是将必填属性、高频属性制成图层模板,在解译或编图过程中找到图斑对应模板,从而实现属性的同步赋值[7];此外,对于遥感解译地类属性的成果数据,有学者采用编程方式实现对图元坐标、面积等几何信息的获取。同时,采用空间分析和位置判断技术实现空间编码、地类编码、所属行政区等信息的编程式赋值[8];还有一类方法,就是在多个图层空间分析后,获取对应属性值,主要通过空间判断、相交等手段获取对应值,并赋值到新图层中[9];遥感解译的地类属性赋值算法较少,目前多以批量选择赋值、高频属性模板同步等方法为主。此外,自动赋值主要解决遥感解译成果分类属性填写完毕后的常规几何参数和空间对应属性获取问题。总体而言,遥感解译数据地类属性自动赋值智能化水平较低,属性赋值效率低,相关研究还需进一步深化[10]。

本文在吉林大学大学生创新训练项目“依托空间拓扑与逻辑关联的遥感解译方法及其智能算法研究”的支持下,在其对地物间拓扑和依赖关系的研究基础上,构建了解译与构面优先权模型,将遥感解译矢量数据的图形参数与属性信息通过数据库查询的方式与之进行匹配,得到面图形构建和属性赋值的逻辑排序,然后在此基础上“逐层式”地进行图形构建和属性赋值,并通过空间关系判断对异常图斑进行修正。最后以C#+ArcEngine 与OLEDB 数据库融合的技术开发相应的原型程序,实现了图斑属性的自动赋值,应用效果良好。

1 研究方法

1.1 技术原理

本文通过对解译对象独立性,空间关系,优先权等特征的解析,采用“循环式、逐层式”的方法对地物图斑进行属性赋值,主要依据如下:

首先是解译对象在空间上有着相对的独立性和依存关系,可以通过这种关系设计灵活的解译方法与“逐层式”的赋值技术。例如,水体在遥感影像中较易识别,其中,湖泊、水库等相对其他水体来说边界较为集中,因此,解译时湖泊解译准确度高,解译成本也较低。而且其他地类在空间上对它有一种依存度(大多与它相邻),然后就是独立河流(水渠)或与湖泊相连的河流可作为独立性较高的解译对象。其次,居民地相对规则、易识别,独立解译成本小,因此就可以大致得到“湖泊→河流→居民地→交通用地→…”这样的解译顺序。如果按照这样的顺序迭代组合生成多边形,则属性赋值成本一般是最小的。这种“线型识别”方法,可以将独立性(还有优先权等)信息在解译时快速地连接到解译线参数或属性中,从而为后续自动处理奠定数据基础。

要想实现自动化处理,程序控制是必不可少的,然而针对专业图形的编程极为复杂,如果借助专业GIS 图形处理方法,就可以大大地提高效率。因此,采用ArcEngine读取空间数据的方法,利用数据库查询数据层级与解译类别之间的对应关系,然后通过C# 的循环方法调用ArcEngine 属性赋值函数(set_Value())进行循环赋值,这为自动赋值奠定了技术基础。

尽管循环赋值可以实现属性的自动填充,但是它并不能保证填充属性一定正确,因为要素间存在嵌套问题或者线型使用错误,所以,需要找到方法判断填充属性的正确性。解决的一个思路是不同地类在空间上的包含、相邻等方面有着特殊的关系,因此可以通过空间关系判断所填属性是否正确。例如,如图1 所示,图斑1 和图斑2之间,图斑3 和图斑4、5、6 之间均属于包含关系,内外层图斑应对应不同的地物类型,而如果图斑2 与图斑1 属性相同,图斑4、5、6 与图斑3 属性相同,则其分类错误,需要进行修正。图斑3 与图斑7 属于邻接关系,也应对应不同的地物类型,而如果其线型相同则会被赋予同一属性,也需进行修正。

图1 不同地类间的空间关系图解

1.2 技术流程

本文采用C#+ArcEngine 与OLEDB 数据库融合的二次开发技术实现图斑属性的自动赋值,其方法流程如图2 所示。

图2 技术流程

首先按要求和标准将解译成果数据转为shp 格式;其次,利用数据查询与组合方法将线要素根据线参数或属性进行组合分类,并与数据库中的优先权模型及相关参数进行匹配,对地物类型进行排序,即为后期图形构建和属性赋值顺序。

然后根据构图顺序逐步提取不同类别的矢量成果数据依次进行属性赋值。第1 次处理时,需要先根据线属性将第1 类别的数据从所有的线要素中分离出,然后对其拓扑造区(线转面),进而统一进行赋值,同时对“小岛”类图斑单独进行标记。第i 次则提取第1 类至第i 类线要素进行构面,第1 类至第i-1 类图斑通过与第i-1 次的分类结果属性连接的方式进行赋值,剩余第i 类图斑统一进行赋值,最后通过空间判断以及包含算法对特殊类型进行标记。

最后的赋值结果可在ArcMap 中打开属性表查看,并从赋值所用时长和正确率方面对其进行检验。

1.2.1 参数匹配

根据地物的独立性和空间依赖性进行排序并存入Access 中,以表(Table)的形式来表示,而其中的子参数(排序号,地物类型,优先权)以字段(Field)的形式来表示,目的是为自动上属性提供前提条件。在进行属性赋值前,首先获取shp 数据的线型、类别,得到解译对象类别总数N。然后通过数据库查询方式,得到构图排序,存入数据集(DataSet)中作为下一步循环构面的动态变量。

1.2.2 属性自动赋值技术

属性自动赋值通过C#+ArcEngine 的方式构造循环算法实现。按照先前得到的排序结果利用for 循环依次提取矢量成果数据并进行属性赋值。第一次将线属性为优先权最高的地物类型(类别1)的矢量线数据提取出来,存入一个新的线集合里,对其构面后统一进行属性赋值(“类型1”)。第i 次(i>=2)提取线属性为优先权小于或等于i 的所有地物类型的矢量线数据,对其构成的图斑进行属性赋值时,需要先判断在第i-1 次提取时得到的分类结果数据中是否存在与之对应的要素(即同一个图斑),若存在则利用属性赋值函数进行属性传递,若不存在属性则赋值为优先权为i 的地物类型(“类型i”)。

为了防止地物嵌套出现时优先权较低的内层嵌套地物的属性被错误地赋值为外层地物类型,因此在对面要素进行属性赋值时需判断该面要素是否被包含在其他面要素中(即小岛类图斑),若是,则将其属性赋值为“un known”,最后在属性赋值全部完成后再对属性为“unknown”的图斑(优先权低于外层地物的内层嵌套地物)单独修改其属性。

2 关键技术实现方法

2.1 逐层构面算法

在进行属性赋值前需按照最佳的信息提取顺序获取矢量成果数据中的线要素进行构面,具体方法参考了蒋波涛的自动构面算法[11],在左转算法的基础上进行自动构面,构面完成后新建SHAPE 文件存储其面要素(图3)。

图3 逐层构面算法实现

首先获取要进行属性赋值文件的全部线要素,然后根据线要素属性将同一类别的地物进行组合,使用for 循环依次提取不同类别的线要素进行构面,循环次数为总类别数。第i 次循环时提取前i 类线要素,然后进行线网拆分,分别存储线和节点,并将其构造成有向图,记录构成一个有效多边形的路径,最后根据路径节点进行构面,与蒋波涛一书中不同的是,本文在构造有效多边形集合和处理岛和洞的方法上做了改进,当基于左转算法生成的多边形(已剔除无效和重复多边形)之间出现多层嵌套时,对所有的外层多边形(相对于最内层的多边形)进行正确的差运算(保证内外层多边形之间拓扑关系正确),对内层多边形(相对于最外层多边形)做标记后将其也加入了最终的有效多边形集合中,进而加入新建的SHAPE文件中,接着进行下一次循环。

在新建SHAPE 文件时,新建字段周长,面积,属性,为后续属性传递赋值奠定基础。将面要素加入新建的SHAPE 文件后,计算其周长,面积,并将计算结果填入对应的周长和面积字段,同时判断该要素是否为内层多边形,若是,则将属性字段赋值为“unknown”,反之,提取第1 类线要素时,将其面要素的属性字段赋值为该地物类型,其余类地物提取时,属性字段暂不进行赋值。这样第1 类地物在构面完成后,其属性也全部赋值完成,为后期下一类地物属性赋值做准备。

2.2 属性循环赋值技术

解决构面程序化处理的问题后,接下来则要解决逐个类型循环赋值的问题,采用三层for 循环实现,具体方法是:

循环开始时,首先获取程序界面中第i 个图层(包含前i 类地物)的面要素,然后判断其是否为第1 到i-1 类地物,第1 到第i-1 类地物通过和前一次循环时已经完成属性赋值的i-1 类图斑一一对应连接进而属性传递赋值,对应连接方法为判断2 个图斑的周长和面积是否相等。第i 类地物则另外统一赋值。因此,获取面要素后需同时获取其周长,面积和属性,然后循环遍历第i-1 个图层的所有面要素,寻找和其周长,面积均相等的面要素,若存在,则利用ArcEngine 的属性赋值函数set_Value()将其对应图斑的属性值赋给该面要素,若不存在,则判断其属性是否为空,若是,则赋值为第i 类地物类型(图4)。

图4 属性循环赋值技术实现

2.3 应用分析

长春市净月潭地区具有地类丰富、地类遥感特征鲜明、野外验证便捷的特点,是理想的实验场所。因此,本文在净月潭北部划定一个面积约12.01 km2的试验区。首先,获取该地区1.2 m 分辨率的遥感影像,然后采用传统方式开展遥感解译和属性赋值(图5),在野外验证修正的基础上形成正确性验证对照组;接着,借助MapGIS 将试验区用本文提出的技术进行了属性赋值,得到了另一组结果。最后,将本文的前述方法,集成为属性自动赋值程序(图6),将遥感解译后的线文件转换成SHAPE 格式的矢量文件(图7),再使用该程序完成属性的自动赋值,并将其赋值结果与对照组进行了对比,发现其与人工运算方法一致,并且效率明显提高(图8)。

图5 实验区域遥感图像

图6 属性自动赋值程序

图7 按要求解译的线矢量及其属性

图8 程序赋值与对照组结果对比

通过分析可知,实验区共有169 个地物图斑,12 类地物,属性自动赋值的方法花费了约26 min,最后的正确赋值图斑有167 个。对3 种不同的属性赋值方法进行对比分析发现:本文所用算法相对于其他方法来说,效率较高,但由于其在自动构面时线网拆分占用了较长时间,导致总时间也较长,后续需对算法进一步改进见表1。

表1 时间统计表

3 结论

本文介绍了一种基于C#+ArcEngine 和OLEDB 数据库读取遥感解译矢量成果数据,将其线参数和属性与优先权数据进行匹配后进行图形构面和属性赋值的方法,在此基础上设计与开发了属性自动赋值程序,使赋值过程自动化水平有所提高,节省了大量的时间和精力。最终,取得如下认识:

(1)将遥感解译矢量成果数据的线属性和图形参数与地物类型之间的拓扑和依赖关系结合到一起,并利用数据库查询的方式与优先权数据进行匹配,将匹配结果重新进行排序可以得到一个最优的解译顺序,为后续面要素的生成和属性自动赋值奠定了空间和数据基础。

(2)确定其逻辑排序后,根据线属性“逐层式”提取线要素进行逐层构面,第1 类地物直接统一赋值即可,而对于第i 类地物,其构面时要提取第1 至第i 类所有线要素,其中第1 至i-1 类属性通过周长和面积匹配,剩余属性为空的则可初步判定为第i 类地物。第i 类中的“小岛”类图斑进行单独标记,后续处理。通过这样的方式可以完成所有图斑属性的快速判断和赋值,通过增加面积、周长数据精度可以准确匹配已确定的地物类型。

(3)属性赋值完成后,需要对其结果的合理性进行检验。解译对象在空间上存在着包含、相邻、逻辑接触关系等,可以通过判断2 种地物之间的空间关系进而判断其属性的合理性,属于包含或相邻关系的2 个图斑的属性一定不同,若相同则需要对其进行标定或修正。

本文的方法重点解决遥感解译成果自动赋值问题,在处理技术方面,仍需进一步优化,效率有待提升。

猜你喜欢

图斑优先权赋值
重新确定申请日对优先权审查的影响
地理国情监测中异形图斑的处理方法
新安县有序开展卫星遥感监测图斑核查工作
遥感影像提取图斑中狭长结构的探测与融解方法
辽阳市生产建设项目扰动图斑复核的思考
民法典中优先权制度构建研究
算法框图问题中的易错点
进入欧洲专利区域阶段的优先权文件要求
抽象函数难度降 巧用赋值来帮忙
利用赋值法解决抽象函数相关问题オ