FME的SHP写模块拒绝输出要素

在FME中处理SHP数据,使用写模块输出时可能遇到只输出部分数据或无输出的情况,即使模板显示成功。问题源于非面几何体在输出时被拒绝。通过在写模块前添加FME Universal Viewer预览,发现数据fme_geometry=fme_line而非预期的fme_polygon。解决方案在于调整Clipper转换器参数,将矢量处理中的创建聚合设置为No,以避免与LineOnAreaOverlayer转换器一起使用时产生的问题。这提醒我们在使用FME转换器时要考虑它们之间的相互影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文发布时间:2014-06-13

作者:Tenniwdy

    在FME中常常处理分析SHP数据,再通过SHP的写模块将成果输出,这可能会遇到只输出小部分数据或是完全没有输出输出的情况,在模板的数据流中也没发现数据丢失,模板提示运行成功。这样的问题对于接触FME不久的朋友来说就很难找到原因,因为这不是某个错误操作或是某个转换器使用不当导致。

在对一个SHP的面数据进行处理后,添加写模块输出,在输出完成后,模板没报错,没有输出结果,模板运行日志提示:Error - Expected an aggregate or area geometry;拒绝32输出要素。使用转换器Deaggregator处理后任然没有解决此问题。

        

在使用 FME 将 Shapefile 入地理数据库(Geodatabase,简称 GDB)时,需要确保数据结构、要素类和字段的兼容性。以下是实现这一目标的关键步骤和注意事项: ### 准备工作 1. **了解数据模型差异** Shapefile 是一种简单的文件格式,用于存储几何对象及其属性信息[^3]。而 Geodatabase 是一种更复杂的数据库模型,支持拓扑关系、网络结构、子类型等高级功能[^1]。因此,在转换过程中需注意数据结构的映射。 2. **确定目标 GDB 类型** ArcGIS 支持多种类型的 Geodatabase,包括 File Geodatabase 和 Personal Geodatabase。FME 提供了对这些格式的支持,但需选择合适的模块。 ### 转换流程 #### 1. 创建 FME 工作空间 - 在 FME Workbench 中新建一个空白工程。 - 添加 **Shapefile Reader**,选择要转换的 `.shp` 文件。 - 添加 **File Geodatabase Writer** 或 **Personal Geodatabase Writer**,根据目标 GDB 类型选择。 #### 2. 配置读模块 - 确保所有相关字段和要素类正确加载。 - 检查是否有空几何体或无效数据,必要时添加 `GeometryValidator` 处理器进行清理。 #### 3. 映射字段与要素类 - FME 会自动尝试将 Shapefile 的字段映射到 GDB 的要素类中。 - 若目标 GDB 已存在要素类,则需确保字段名称、类型与源数据匹配。 - 如果目标不存在,FME 会根据输入数据自动创建要素类。 #### 4. 设置空间参考系统 - 确保 Shapefile 的坐标系与目标 GDB 的空间参考一致。可以在 `Coordinate System` 设置中调整。 - 若 Shapefile 缺少 `.prj` 文件,需手动指定正确的空间参考。 #### 5. 运行并验证 - 执行转换任务后,使用 ArcCatalog 或 FME Data Inspector 验证输出是否符合预期。 - 检查属性是否完整,几何是否正确显示。 ### 常见问题处理 - **字段不匹配问题**:若出现“某些读取的要素与工作空间的要素类不匹配”的错误,应检查字段名、类型是否一致,或更新读模块配置[^4]。 - **权限问题**:入 GDB 时可能需要管理员权限,尤其是在企业环境中。 - **性能优化**:对于大型 Shapefile,建议启用批处理或调整内存设置以提高效率。 ### 示例代码片段(TCL 脚本方式) ```tcl # 设置读模块 set reader [CreateReader "ESRI Shapefile" "C:/data/input.shp"] SetParameters $reader -name "SHAPEFILE" -value "C:/data/input.shp" # 设置模块 set writer [CreateWriter "File Geodatabase" "C:/output.gdb"] SetParameters $writer -name "GEODATABASE" -value "C:/output.gdb" SetParameters $writer -name "FEATURE_CLASS" -value "MyFeatureClass" # 连接读模块 Connect $reader $writer # 执行转换 Run ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值