目录
一、为什么GIS工程师都爱用FME?
FME(Feature Manipulation Engine)就像GIS界的"瑞士军刀",它能轻松解决90%的数据处理难题。我最初接触FME是因为要处理200多个不同格式的CAD地形图,传统方法需要1周时间,用FME只花了2小时!它三大核心优势:
-
格式通吃:支持300+数据格式(Shapefile、GeoJSON、CAD、Excel等)
-
可视化编程:拖拽式操作,像搭积木一样构建数据处理流程
-
批量处理:自动完成重复性工作,解放双手
二、手把手安装与初体验
1. 安装准备
-
官网下载FME Desktop试用版(https://www.safe.com)
-
建议选择新一点的版本(本文使用FME 2023)
2. 第一个工作流
-
新建Workspace
-
添加Reader(数据源):选择示例数据roads.shp
-
添加Transformer:搜索"AttributeRenamer"重命名字段
-
添加Writer(输出):设置输出为GeoJSON格式
-
点击运行按钮 ▶️
三、3个实用案例教学
案例1:坐标转换不求人
需求:将某市WGS84坐标的POI数据转成CGCS2000坐标系
1、创建新Workspace
2、添加Reader读取POI.shp
3、添加Reprojector
转换器:
-
Source坐标系:EPSG:4326
-
Target坐标系:EPSG:4490
4、添加Writer输出为File Geodatabase
5、运行后查看QGIS验证结果
# 转换参数示例
Reprojector {
Destination Coordinate System: CGCS2000_3_Degree_GK_Zone_38
Coordinate System Operations: +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=GRS80
}
案例2:多源数据融合
需求:合并建筑CAD图纸与国土调查的GeoJSON数据
1、并行添加两个Reader:
-
CAD Reader读取.dwg文件
-
GeoJSON Reader读取landuse.json
2、使用FeatureMerger
转换器:
-
通过空间关系关联数据(建筑物 within 用地地块)
3、添加AttributeManager
统一字段
4、输出到PostGIS数据库
案例3:自动化数据质检
需求:检查地形图中等高线高程值是否在合理范围
1、读取DWG地形图
2、AttributeFilter
过滤出等高线图层
3、Tester
设置条件:
Elevation > 50 AND Elevation < 300 # 假设合理高程范围
-
将不符合要素输出到CSV报告
-
使用
PythonCaller
添加自定义校验规则
四、高手进阶技巧
1、模板复用:将常用流程保存为Template(.fmwt)
2、定时任务:通过FME Server设置每天自动同步数据
3、性能优化:
-
使用
FeatureReader/FeatureWriter
处理大数据 -
启用并行处理(Parallel Processing)
4、扩展开发:
-
自定义转换器(Custom Transformer)
-
Python脚本集成
案例1:矢量栅格互转与地形分析
需求:从DEM栅格生成等高线,再转换为3D模型
1、读取DEM数据:
-
添加
GeoTIFF Reader
读取dem.tif
2、生成等高线:
-
使用
ContourGenerator
设置等高距(Interval=10米)
3、3D可视化:
-
通过
Extruder
转换器将等高线按高程值拉伸 -
输出为3D PDF或Collada(.dae)格式
4、成果验证:
# 高程值映射示例
Extruder {
Extrusion Type: Individual Features
Height: _elevation * 5 # 垂直 exaggeration
}
案例2:自动化Web地图发布
需求:将规划方案自动发布为Leaflet网页地图
1、数据准备:
- 读取SHP文件(道路、地块、设施点)
2、样式配置:
使用HTMLSetter
定义CSS样式
.road {stroke:#ff0000; stroke-width:2}
.parcel {fill:#a0d8ef; opacity:0.6}
3、生成网页:
-
选择
Leaflet Writer
输出类型 -
设置弹出框信息模板
4、一键发布:
-
输出包含data.js和index.html的完整网站包
案例3:实时数据流处理
需求:接入MQTT物联网传感器数据生成热力图
1、实时数据接入:
- 添加
MQTT Reader
订阅主题Broker: tcp://iot.example.com:1883 Topic: sensors/temperature
2、空间化处理:
- 使用
GeometryReplacer
将经纬度转为点要素
3、动态渲染:
- 通过
HeatmapGenerator
设置半径和渐变颜色
4、WebSocket推送:
- 用
WebSocket Writer
实时更新前端地图
五、资源推荐
1. 官方学习路径
-
FME Academy 免费认证课程
-
Transformer Gallery(按行业分类的模板库)
2. 中文社区
-
CSDN专栏:#FME黑科技
-
QQ交流群:FME中国用户组
3. 必备工具包
-
FME工具箱 包含:
-
坐标系定义文件
-
常用自定义转换器
-
中文错误代码对照表
-
实践建议:从简单任务开始,逐步尝试复杂流程。遇到问题时,善用FME的Inspector工具查看中间结果。
未完待续~
以上为博主自己在学习过程中的学习笔记,用于学习和交流,欢迎大家批评纠正。
希望你越来越优秀!!