APP下载

基于FME的CASS格式地形图入库方案及程序设计

2021-04-29

地理空间信息 2021年4期
关键词:构面面状压盖

胡 博

(1.秦皇岛市测绘大队,河北 秦皇岛 066001)

1∶500 地形图入库是我国基础地理信息测绘工作的重要组成部分。国内目前常用的入库方法主要有CASS 直换转换法、CASS 和ArcGIS 综合转换法、FME 转换法,以及通过专门的第三方软件如Geoway、IData 进行数据预处理和转换等[1-2]。

综合比较,CASS 直换转换法、CASS 和ArcGIS综合转换法功能有限,应用第三方软件作业简单,功能便捷,这也是国内多数生产单位采用的方法,但这种方法模式固定难以自主拓展。FME 转换法需自定义CASS 数据到ArcGIS 数据的映射关系,实际操作较为复杂,对技术人员的要求较高,但是却具有高度的自主性和灵活性。FME 提供了几百个功能强大的转换器,且支持Python 程序设计语言,可以通过自主设计算法和数据处理流程,实现许多其他方法所不能提供的功能[3]。

在原始数据来源复杂,质量不佳,且缺乏第三方专业软件的情况下,本文尝试完全使用FME 来完成地形图的入库工作。

1 项目概况

本文所依托的项目为秦皇岛市建成区2018 年1∶500 基础图入库工作,原始数据为应用南方CASS10.1软件生产的数字线划图,要求的成果数据为ArcGIS 软件所支持的gdb 文件数据库。

本次作业共有海港区、北戴河、山海关3 个区待转换图形600 余幅,不同的图形部分数据来源不一,更新时间不统一,加之后期数据编辑、存储过程中的信息错漏、丢失,原始数据存在的问题比较多,例如:部分图形骨架线丢失,图形换边处属性不一致,部分符号编码不统一,部分图形线错乱等这些问题给入库工作带来了许多困难,而采用其他方法都难以高效、有针对性的解决原始数据中存在的问题,故本文选用FME 自定义需要的功能,在数据转换过程中实现自动化的纠错、检查,以减少人工干预,提高工作效率。

2 软件环境

安装FME 2015 Desktop;安装MyFME 以支持对CASS 数据的读取;安装CASS10.1 绘图软件编辑原始数据;安装ArcGIS Desktop 地理信息系统软件查看编辑成果数据。

3 方案与程序设计

数据入库总体流程如图1 所示,包括数据预处理、FME 数据转换、数据后续处理几部分。

3.1 数据预处理

数据预处理的目的是生成进入FME 转换前的中间数据。其内容主要有:

1)注记处理。由于原始图件中注记编码不统一,且有不同类型注记混淆的情况,故需将所有的注记进行归类,以便于FME 读取。应用CASS 的“快速选择”功能,批量选中不同类型的注记,单独存放到指定的图层。

2)人工构面。形状复杂的道路、植被、土质、水系等,在CASS 中采用Boundary 和TrackPolygon 命令,通过点击封闭区域内部或手动跟踪面状地物边界的方式人工提取出封闭的边界。

图1 数据入库方案流程

对形状规则、简单,有规律可循的房屋、房屋附属等地物要素则应用FME 编写相应的算法和数据处理流程实现自动构面。

3)数据检查。检查修改原始数据中的图形、属性错误,如管线连换错误等。

4)非曲线化。在输入到FME 转换之前,需要将中间数据中的弧线、拟合线转换成折线,否则FME 运行效率大幅降低,且极易出现异常。非曲线化可以通过CASS自带的“圆弧拟合线—折线”功能对全图进行处理。

通过数据预处理工作,将原始数据编辑成为DWG格式的中间数据,以待进行FME 数据转换。

3.2 FME 数据转换

3.2.1 创建读模块

可设置“按要素编码读取”和“按图层读取”两种方式,分别读取原始数据中的地物要素,以及预处理后放置到特定图层的注记、辅助要素。

3.2.2 要素分类处理

要素分类处理的关键问题是将源数据的的分层结构标准和成图方式无丢失地转换到新的分层结构标准和成图方式[4]。

首先需要依据规范和数据字典,将不同CASS 编码的地物要素处理归类到地理信息数据库中对应的图层[5]。在FME 读模块中设置按编码读取要素,读取中间数据中所有CASS 编码的地物要素,再定义各自的数据流,输出到其应进入的地理信息数据库的图层,从而构成不同格式之间数据的映射关系。

其次,要将符号化表示的原始图件转换成ArcGIS需要的点、线、面数据以及属性信息,并且在数据转换过程中要确保信息不丢失[6]。因此还需要对数据进行以下处理[7]:

1)面要素创建。针对房屋、阳台、台阶等规则的面状地物,在FME 中编写设计相应的算法进行不同要素间的交互运算,自动将经少量人工干预处理后的原始数据生成面要素。

例如:针对原始数据部分台阶骨架线丢失的问题,应用台阶边线和骨架线共同构面并融合,从而减少重绘台阶的工作量;针对部分房屋绘制不规范,直换用AreaBuilder 转换器构面不成功的情况,设计算法将所有的房屋线打碎,混合构面成为缺失属性信息的面,再用未打碎的房屋线为构成的房屋面要素赋予属性信息。

在此通过自主设计数据处理流程,可以减少人工干预的工作量,提高工作效率。针对预处理工作中手工构面的道路、植被、土质、水系等形状复杂的面状地物,由AreaBuilder 转换器生成面。由于手工构面时难免出现错误,因此需要在AreaBuilder 转换器前进行针对边界线的自相交、不闭合等情况进行处理,以确保AreaBuilder 能够成功创建面要素。

2)线要素处理。应用LineJoiner 转换器消除线要素的伪结点,应用InterSector 转换器将同属性的线在交叉处打断。针对铁路骨架线,读取其宽度扩展属性,用OffsetCurveGenerator 转换器,将铁路骨架线偏移宽度的一半,再捕捉、裁切、连换生成铁路中线。

需要特别指出的是,主要道路需要另外入库路中线,对此,可以在FME 中将已创建的主要道路面要素经由CenterLineReplacer 转换器生成道路中线。由于道路面要素形状不规则,会造成CenterLineReplacer 转换器自动生成的中线有许多分叉,如图2 所示,在此可将生成的道路中线通过写模块输出到DWG 图形中,经过编辑处理删除分支,留下主线,再贴回到中间数据。

3)注记属性提取。许多要素独有的属性信息需要依靠图上的注记信息来获得。在FME 中添加读模块,设置按图层读取要素,读取预处理工作中创建的各类注记图层,通过fme_text_string 属性读取其文字内容并给对应的地物要素赋值。

图2 由FME 自动生成的道路中线

针对面状地要素,通过PointOnAreaOverlayer 转换器进行叠加分析,将房屋面内、道路面内的楼层、楼高、道路名称、道路材质等注记作为属性赋给相应的面要素。

针对点状、线状地物,可用过NeighborFinder 转换器进行邻近分析,寻找离点状、线状地物一定距离内的注记,给其赋值属性,也可对点或线要素生成缓冲区,采用叠加分析的方式赋予属性。

在利用注记为属性信息赋值的时候,可以进行灵活自主的运算。例如:针对“A+B”、“A-B”格式的楼层注记,可在此步骤中依据中间连换字符进行拆分,获得地上楼层信息和地下楼层信息,并进一步判断应该给哪些属性赋值。再如:当道路面要素内有多个铺装材质注记,而这些注记因为绘图时的错误存在个别不一致时,可以经过统计,采用数量最多的注记为该要素的属性赋值。

3.2.3 邻接关系处理

原始图件中,有许多边界相换的线状、面状地物因图形绘制错误的原因,之间存在缝隙或是重叠,这在入库成果中是不允许的。

在FME 中设置Snapper 转换器,设定捕捉方式为“段捕捉”并参照地形图的精度要求设置相应的容差,从而将所有间距小于容差,且边界彼此相关的线状地物以及面状地物的外边界移至贴合,在误差允许的范围内避免线、面状要素的相互压盖,并且消除彼此间的微小缝隙,从而建立正确的邻换关系。

3.2.4 要素共有属性赋值

要素共有属性是指所有要素都具有的属性信息,主要是指GB 国标编码等。此类属性信息可以建立要素的CASS 编码到相应属性的映射关系进行获取。在此,将所有的地物要素创建各自的图层标记属性后汇集到AttributeValueMapper 转换器,在AttributeValueMapper 中定义CASS 编码(存储于fme_feature_type 属性中)到GB 的映射关系,从而根据CASS 编码直换获取所有地物要素的国标编码。

CASS 编码到GB 的映射关系可以从南方软件公司处获取,对照数据字典进行检查和编辑,最后以Excel表格的方式直换导入到AttributeValueMapper 中。

3.2.5 要素裁剪

要素裁剪的目的是处理线、面要素相互之间的压盖关系,例如:设置等高线、栅栏线被道路、房屋裁剪;植被要素被地表房屋及地表房屋附属设施裁剪;道路被植被、地表房屋、地表房屋附属等裁剪。

通过预先定义裁剪规则,不但使得相应的地物之间不会产生压盖,而且在手工构面的过程中,能够“跨越地物构面”。比如在构建花坛时,若其中有房屋,则不必创建环洞,可以直换将其包在内部或者直换跨过房屋。这样便极大的减少了手工构面的工作量,不需要裁剪的要素,可以通过设置特定的颜色属性,以标识其不被其他地物裁剪。

要素裁剪前,先进行数据分流,通过TestFilter 转换器,利用之前做好的图层标记将不同图层的数据分流。分流后的数据输送到Clipper 转换器的Clipper 和Clippee 入口中,进行要素之间的裁剪。

3.2.6 数据检查与修改

数据检查与修改的原则是:能够由FME 自动处理的错误,交由FME 自动处理。FME 不能自动处理的错误则输出报错信息,交由人工处理。

数据检查与修改穿插于整个数据转换流程之中,检查出的错误都以DWG 文件的形式贴回到中间数据进行修改,从而再次运行FME 进行转换,形成迭代的过程,经由两三次修改、转换,能够极大程度减少数据中的错误,提高成果数据的质量。主要内容有:

1)修复构面失败的要素。采用人工作业方式对复杂的面状要素构面时,难免会出现错误,最常见的就是边界线自相交、边界不闭合,通过FME 的InterSector 和Snapper 转换器可以处理修改大部分此类错误,而经过以上处理仍无法修复的面状要素,则通过AreaBuilder 转换器的Rejected 和Incompleted 端口输出写入DWG 文件中作为错误标识,贴回中间数据进行修改或重新构面。

2)缝隙与微小面检查。在中间数据中以特定的图层绘制一个包含所有区域的“背景面”,以背景面裁剪图中所有面状地物,得到整个图形的空白区域。将空白区域解聚合,计算面积,设定面积阈值可滤出面要素之间的微小缝隙;而将裁剪后的面状要素计算面积并设置阈值可检查出因裁剪产生的微小面。缝隙与微小面可以通过写模块输出到DWG 图形作为检查修改的标记。

3)压盖检查。将需要检查压盖的面状地物输出到AreaOnAreaOverLayer 转换器,判断输出面要素的_overlaps 属性,其大于1 时,表示此区域有面要素相互压盖,将其输出到DWG 文件作为修改标识。

有些要素之间存在压盖是正常的,例如阳台面要素压盖道路。因此可以将此类要素过滤,使其不参于压盖检查,从而不对正常的压盖进行报错。

3.2.7 数据输出

建立FME 写模块,将经上述步骤处理的数据依据所归属的要素图层,写入相应的SHP 文件中,形成初步的成果。

3.3 数据后续处理

将FME 转换生成的SHP 文件导入ArcGIS,在ArcGIS 中对其进行通常意义上的拓扑检查、属性检查等,确保所有的错误都被消除,最后生成gdb 格式的成果数据。

4 结 语

本文针对秦皇岛2018 年建成区1∶500 地形图入库的项目,基于FME 设计了详细的数据处理、转换方案,编写了具有实际操作性的转换模板,顺利完成了600 余幅地形图的入库工作。

相比较应用第三方软件的入库方法,本文设计的方案及程序有以下优点:

1)自主灵活。针对原始数据的特点及存在的问题,设计相应的算法,减少人工工作量。主要表现在面状要素的自动构面、注记的自动提取等要素处理阶段。同时在数据检查阶段也可以通过自定义规则,减少工作量。

2)集成度高。大部分数据预处理、检查、修改工作都可以在FME 中一站式实现,不需要分开到不同的软件中分步进行。同时不需要对原始数据进行分幅,可以整个区域统一编辑、修改、转换,也可自由分区域处理。

3)数据修改简单。将报错信息输出到DWG 文件,作为标记粘贴回中间数据,使数据的大部分修改工作在CASS 中进行,错误位置可通过标记直换定位到相应位置。由于在CASS 中进行图形的编辑相较于在ArcGIS 中进行修改,会更加便捷和简单,从而减少了作业人员的工作量。

同时,本方案也存在一些不足以待后续改进,例如:FME 自动生成的路中线仍须人工干预处理方可使用;缝隙检查时,对于与大面积连通的细小缝隙难以检查出来等。

总体来说,本文的思路以及具体的技术细节都具有一定的创新性和实用性,能够给从事相关工作的测绘工作人员提供相应的借鉴与参考。

猜你喜欢

构面面状压盖
基于ANSYS的油膜轴承压盖外轮廓改进分析研究
DLG数据线状道路自动闭合方法研究
浅谈分体式压盖在核桃壳搅拌器上的尝试
利用ArcGis实现森林资源管理“一张图”线转面的方法探讨
顾及遥感影像特征的面状地物轮廓简化
基于感知风险的高中生网络理财行为研究
往复式活塞隔膜泵油缸及油缸压盖刚度分析
企业生命周期与员工绩效考核方法的匹配对组织绩效影响的实证研究
基于快照差的面状地理要素增量信息表达模型
装配用压盖模具的结构改进