原文发布时间:2012-04-16

作者:跑

联系QQ:44295133

    近日,在处理一份国土部勘测定界界址点坐标交换格式数据时,涉及对该TXT文本的读写问题。经查阅,该数据格式满足如下规定:

    勘测定界界址点坐标交换格式的读写

这里做一补充介绍。自第13行起,文本描述的是几何图形(多边形)的坐标信息,以逗号“,”作为分隔符。根据各行分隔符的数目,坐标信息又可细分为两类:①属性行②节点行。首行属性包括多边形的节点数(注意,各节点点号从数字1开始顺序编号,但终点编号仍为1)、地块面积…等;余部为各节点的点号、圈号、及X/Y坐标。这里的圈号,就是含孔(Hole)多边形的所在的孔号。

此外,上述描述行若重复,则表明该多边形包含多部分(Multi-part),即一个文件包含多地块。

提示:由于“属性行”节点数不可知,因此它需要进行一个判断,即行号+1~N为该部分的节点。因此,需要引用自定义转换器的循环,同时为了便于分享与调用,可将读、写流程制作成自定义转换器。



第一步:筛选“属性行”、“坐标行”

利用AttributeSplitter将各行分割为一系列表,并通过 ListElementCounter获取表数目即可。注意,此处应对各属性行进行一次计数,求得part_id。

勘测定界界址点坐标交换格式的读写勘测定界界址点坐标交换格式的读写

勘测定界界址点坐标交换格式的读写


第二步:绘制点。

即_text_count=4的“坐标行”,分别令_text{0}=hole_id,_text{1}=y,_text{2}=x,通过2DPointAdder得到这些点。

勘测定界界址点坐标交换格式的读写

勘测定界界址点坐标交换格式的读写


第三步:属性关联

将属性行行号循环加1,直至节点数,通过FeatureMerger行号关联,将part_id属性传递给上述点。

    勘测定界界址点坐标交换格式的读写

第四步:构造多边形

这里通过PointConnector转换器即可实现。值得注意的是,需要设置分组属性part_id、hole_id,如批量读取TXT文本,可附加fme_dataset字段。


第五步:发布参数

原则上一个文本描述一个图形,而文本包含多个地块时,需提示转换过程是否进行聚合(Aggregator)。这里发布一个独立参数Choice,选择”Yes”或”No”。

以下是一个完整的流程及转换器参数设置:

勘测定界界址点坐标交换格式的读写

勘测定界界址点坐标交换格式的读写



相对而言,该数据格式的写出比较简单。无非就是将多边形顶点坐标输出为一行内容,而前12行描述性内容几乎可以认为是常量。需要注意的是拆开多边形时应注意先行解聚合(Deaggregator)以及提取环洞(DonutHoleExtractor),而最终输出的时候应该设置一个文本行的排序规则(Sorter)。






相关文章:

  • 2022-12-23
  • 2021-04-23
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2021-12-02
相关资源
相似解决方案