电子报盘TXT文件生成空间图形

文章介绍了在处理历史电子报盘TXT文件时,如何优化全局变量参数设置,包括地块号的生成与传递,以及使用正则表达式处理地块信息和坐标点的属性。通过AttributeCreator创建属性并适应不同格式的数据,最终实现图属关联和几何数据处理。
摘要由CSDN通过智能技术生成

       最近在处理历史电子报盘TXT文件时,遇到内容不符合要求的情况。对于一些特殊的情况,2015年采用的方法不太适用了。此次尽可能针对不同的情况考虑全面一些,进行优化完善。下面就两种方法做一个简单的记录。

TXT文件格式如下:

1、采用全局变量参数设置与获取传递地块号,进行图属关联。

(1)根据“地块信息行”和“坐标点行”的格式的特点,使用StringSearcher正则表达式进行查找并生成属性列表_matched_parts;

(2)“地块信息行”,Counter生成地块号,VariableSetter将地块号设置为全局变量,根据_matched_parts列表要素获取地块属性数据【界址点数,地块面积,地块编号,地块名称,图形属性,图幅号,地块用途,地类编码】;

(3)“坐标点行”,VariableRetriever获取全局变量-地块号,根据_matched_parts列表要素获取坐标行数据【点号,地块圈号,X坐标,Y坐标】,VertexCreator生成点,根据地块号和地块圈号进行PointConnector点连接(首尾坐标一致时生成面,不一致时使用LineCloser强行闭合),因为存在扣除地块的情况,需AreaBuilder根据地块号进行抠洞处理(生成环,删除岛)。

(4)地块信息行与图形,采用FeatureMerger地块号进行图属关联。

本方法中,比较难理解的应该是全局变量(地块号)的设置与获取。大概解释一下,FME读取TXT文件是按照行依次读取,当查找到“地块信息行”时,counter递增生成“地块号”并设置成全局变量,那查找到“地块信息行”下一行“坐标点行”时,获取此时全局变量地块号便继承了上一行“地块信息行”时的地块号。找到下一个地块信息行时,编号增加,依次类推。

2、根据AttributeCreator创建属性设置前一个要素,将“地块信息行”的地块号和地块属性传递给该地块所属的“坐标点行”。

(1)因历史数据内容不标准,“地块信息行”和“坐标点行”可能存在不符合以上正则表达式的情况,例如X和Y坐标不含小数。考虑更通用的方法,根据英文逗号(,)分割行生成列表_list并计算列表要素个数。

(2)首先地块号赋0,AttributeCreator设置前一个要素,根据列表要素个数的不同情况生成地块号(关键),上文提到TXT内容是依次读取的,那么列表个数大于8(即地块信息行)的情况在前,地块号等于前一个要素的地块号(0)+1,列表个数等于4(即坐标点行)的情况在后,第一个坐标点行的地块号等于前一个要素(即地块信息行)的地块号,后面的坐标点行依次等于前一个坐标点行的地块号,这样便实现了地块号的传递。

 

(3)根据列表要素个数大于8, 获取地块属性信息。

(4)AttributeCreator设置前一个要素,将地块信息行字段传递给坐标行,并获取坐标的点号、地块圈号、X坐标、Y坐标。存在XY位置反了的情况,根据XY大小判断赋值(坐标值的规律:X>Y)。其中【界址点数,地块面积,地块编号,地块名称,图形类型,图幅号,地块用途,地类编码】等于前一个要素的对应属性,【点号,地块圈号,X坐标,Y坐标】等于本行的列表要素。


此时便完成了“地块信息行”地块号与属性的传递。

(5)tester只选择坐标行,进行后续坐标点生成、点连接、线闭合以及抠洞等处理,与第一种方法一致,此处不再赘述。该方法不需要再进行图属关联。

最后附一张全过程处理的截图。

2023.11.01记

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值