FME中如何实现面转为线

原文发布时间:2010-03-25

作者:不会飞的小鸟

我看到网上很多人都在问这样一个问题,在FME中怎样把面反生成线呢?

大家可能都知道构面的转换器有很多,如:AreaBuilder、PolygonBuilder、DonutBuilder那现在给大家介绍面生成线的转换器:GeometryCoercer,只需要把这个转换器的设置改为“fme_line”就可以了,可能现在大家去用了会发现这转换器出来的结果是线面混合的,根本没有达到我们预期的结果,如下图所示:


这是怎么回事呢?请大家仔细分析这个数据,出来的结果如果是面状的,都是带洞的情况,这是因为“GeometryCoercer”转换器是不会对带洞的面进行生成线的处理,不过我们也不用着急,现使用“PolygonBuilder”构面转换器,把带洞的面重新构一次面,使之不存在带洞的情况,然后在来使用“GeometryCoercer”转换器生成线便可。如下图所示:




<think>嗯,用户想知道在FME中如何将线生成。首先,我需要回忆一下FME中的相关换器和处理方法。根据之前学过的知识,线生成通常需要闭合的线或者交叉线来形成的边界。可能用到的换器有AreaBuilder、TopologyBuilder之类的。 然后,我得看看用户提供的引用内容。引用[2]提到使用交叉线生成并扇出为SHP文件,这里可能涉及到处理交叉线形成的方法。而引用[4]中提到了几何创建类的换器,比如AreaBuilder,这应该是关键工具。 接下来,我需要确定具体的步骤。首先,用户需要确保输入的线是闭合的或者相交形成闭合区域。如果线不闭合,可能需要先进行拓扑处理,比如打断相交线或者延长线使其闭合。然后使用AreaBuilder换器来生成。可能还需要处理属性,比如保留原始属性或者进行属性映射。 另外,用户可能遇到环洞的情况,这时候要素可能有内外边界,需要正确的顺序或属性来区分。引用[3]提到处理环洞的要素,提取坐标,这可能对生成复杂有帮助,但当前问题主要是线生成,暂时不需要处理环洞,不过可以作为扩展内容提到。 还要考虑数据验证,比如生成后检查是否有错误几何,可能需要GeometryValidator换器。扇出到SHP文件的话,可以设置输出路径和文件名,可能根据属性分类保存不同文件,引用[2]中的扇出方法可以参考。 用户可能的疑问点包括如何处理不闭合的线,如何确保生成的的正确性,以及如何处理多个交叉线形成多个的情况。需要详细说明每个步骤的作用,比如TopologyBuilder用于打断交叉线,AreaBuilder的参数设置如Group By如何影响的生成。 最后,示例模板和参考引用要准确,确保用户能够按照步骤操作,并知道哪里可以找到更多资料。可能还需要提醒用户注意坐标系统的一致性,避免几何错误。</think>在FME实现"线生成"功能主要依靠几何拓扑处理和专用换器,以下是详细实现方法: ### 一、技术原理 线生成的核心是将闭合线段或交叉线换为要素。FME通过拓扑分析自动识别闭合区域,需满足以下条件: 1. 线段必须形成闭合回路(自闭合或交叉闭合) 2. 闭合区域内部无未连接的悬垂线段 3. 坐标系统需统一,避免几何变形[^2] ### 二、操作步骤(以交叉线生成为例) 1. **数据准备阶段** ```python # 伪代码示例 输入数据 → LineCleaner(清理重复线段) → TopologyBuilder(打断交叉点) ``` 2. **核心换器配置** ```python # 使用AreaBuilder换器 AreaBuilder: Group By: _相交线段的关联属性(如道路编号) Preserve Lines: No Tolerance: 0.01(根据数据精度调整) ``` 3. **后处理流程** ```python 输出 → GeometryValidator(验证几何有效性) → AttributeManager(添加积/周长属性) → SHP格式扇出(按行政区划字段分区存储) ``` ### 三、关键换器说明 | 换器 | 功能 | 参数要点 | |-----------------|----------------------------------|----------------------------| | **TopologyBuilder** | 创建拓扑关系并打断交叉线 | Break Points At Intersections=Yes | | **AreaBuilder** | 闭合区域自动生成 | 必须设置Group By参数 | | **Dissolver** | 融合相邻 | Create Aggregates=Yes | ### 四、常见问题解决方案 1. **未闭合线段处理** - 方法1:添加`LineCloser`换器自动闭合 - 方法2:使用`Snapper`设置捕捉容差(建议0.1-0.5地图单位) 2. **多部件处理** ```python GeometryCoercer: Output Geometry Types: fme_aggregate Deaggregator: Preserve Attributes: Yes ``` 3. **属性继承设置** ```python AttributeManager: Mapping Mode: Merge Incoming Attributes Conflict Resolution: Use Original ``` ### 五、完整模板示例 ```python # FME工作流伪代码 Reader(SHP) → LineCleaner → TopologyBuilder → AreaBuilder → GeometryValidator → AttributeExposer(area,perimeter) → Writer(SHP_扇出) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值