免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3497|回复: 17
收起左侧

2020FME博客大赛——空间数据与非空间数据的转换 Shapefile数据转换为Dwg数据

[复制链接]

665

主题

2万

铜板

34

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
20649

精华勋章爱心勋章地信专家组贡献勋章冰雪节勋章

发表于 2020-12-31 14:24 | 显示全部楼层 |阅读模式

作者:朱慧卿

单位:中国石油天然气管道工程有限公司

一、摘要

利用FME软件编写Shapefile数据转换为Dwg数据的工具。通常ArcMap中的点、线、面等shp数据各自分布在类型相同的数据图层中,而AutoCAD中的dwg数据,每个图层有可能包含许多种类型的数据。此工具将shp数据中点、线、面等空间数据转换为dwg中的非空间数据,并将shp属性表里的Name信息在dwg中以文本注记的形式显示。根据管道勘察测量的专业性,我们对AutoCAD进行二次开发,重新定义更加适用于管道勘察的线形和块儿实体等要素的属性,考虑专业的特殊性在数据输出时将利用FME中的转换器对这些固定的数据模板进行调用,使数据输出后更加利于我们使用。

二、问题背景

在管道勘察的过程当中我们需要对管线周围的地形进行测量,以便于后期管道的布设。根据某项目的需求,我们把某天然气管道选线周边的地形数据以dwg的形式向分包商进行展示。但由于此范围内的地形数据我们当前只存储了shp格式数据,所以我们利用FME软件对shp数据进行了转换。

三、模板截图


四、技术路线

1)Shapefile读模块(Add Reader)

在此处默认读模块参数设置,进行shp数据的写入。

2)暴露要素属性(AttributeExposer)

根据转换需求,在此处暴露我们需要用到的要素属性。在shp数据转换为dwg数据后拥有文字标注信息需求下,我们只需暴露fme_feature_type属性即可。

3)要素重投影(Reprojector)

根据项目需求,在此处设置原始数据的投影坐标系。

4)属性过滤(AttributeFilter)

为避免数据冗余,根据属性值将要素分流到不同地输出端口,过滤shp数据中的default, Empty, Missing, Null等无效数据。

5)按要素类型分类输出(FeatureTypeFilter)

项目中的shp数据只包含:点、线、面数据,转换器在进行设置时将shp数据的点、线、面要素分类输出,方便后续的操作。

6)用几何要素的中心点去替换几何要素(CenterPointReplacer)

针对shp数据中的面要素,如果我们想让shp数据属性字段里面的Name信息在dwg数据里以文本标注的形式显示,就需要运用转换器CenterPointReplacer,用几何要素的中心点去替换几何要素,再将替换后的点赋予坐标信息,最终确定标注位置。在对转换器进行参数设置时,如果我们想要生成一个面状要素的标注点,我们更趋向于将点的位置放于面状要素的中间位置,所以Mode选择Center Point of Bounding Box。

7)坐标提取(CoordinateExtractor)

在属性表里添加坐标信息字段,以便于确定坐标点的位置。对于线要素来说,在对Coordinate Index进行参数设置时要考虑线的长度。而对于点和已经生成中心点的面要素来说直接把Coordinate Index设置为“0”即可,同时为X、Y坐标新建属性字段名称。

8)将坐标附加到几何对象上(VertexCreator)

通过此转换器可以将我们在上一步生成的坐标附加到一个点上,这个点的位置即为放置文本标注的位置。

9)将几何要素设置为文本(TextAdder)

用shp数据属性字段中的Name信息替换已经生成的标注位置点,最终在dwg数据中生成文本标注,同时可以根据需求设置文本大小等信息。

10)DWG数据输出准备(DWGStyler)

通过转换器,可以设置dwg数据输出的样式。通过添加模板文件,将块儿要素、线要素和面要素都设置为模板文件里面的样式。

11)DWG 写模块(TextAdder)

在对写出模块进行参数设置时,根据此项目的需求不对写出模块进行参数设置的修改,直接默认写出就可以。

五、转换前后数据对比

截取原始shp数据与转换后的dwg数据进行对比:

1)原始shp数据

2)转换后dwg数据

本文转载来自CSDN作者:fmechina   版权归作者所有

原文链接:https://blog.csdn.net/fmechina/article/details/105532393


10

主题

2万

铜板

34

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4394

精华勋章灌水勋章活跃勋章贡献勋章

发表于 2020-12-31 14:47 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

1980

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
89
发表于 2021-1-3 21:41 | 显示全部楼层
FME功能强大,值得研究。
回复 支持 反对

使用道具 举报

853

主题

11万

铜板

252

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
22165

精华勋章宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组VIP勋章贡献勋章成就学员勋章

发表于 2021-1-5 15:30 | 显示全部楼层
谢谢提供分享!
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

43

主题

5万

铜板

19

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
3488

精华勋章12周年纪念勋章

发表于 2021-1-11 22:03 | 显示全部楼层
谢谢分享
回复

使用道具 举报

2

主题

3万

铜板

6

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
5686
发表于 2021-12-5 21:56 | 显示全部楼层
谢谢分享
回复

使用道具 举报

3

主题

1万

铜板

11

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4340
发表于 2023-1-16 08:25 | 显示全部楼层
好好学习一下.
回复 支持 反对

使用道具 举报

3

主题

1万

铜板

11

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4340
发表于 2023-1-16 09:49 | 显示全部楼层
挺好用的,感谢分享
回复 支持 反对

使用道具 举报

3

主题

1万

铜板

11

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4340
发表于 2023-1-19 09:07 | 显示全部楼层
多谢分享!!!
回复

使用道具 举报

33

主题

3万

铜板

19

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
7389

活跃勋章

发表于 2023-1-25 16:50 手机频道 | 显示全部楼层
过来看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表