DXF文件写入多边形和名称属性,可在Global Mapper和ArcGIS打开
目标效果
为了实现下图的效果,学习了一下dxf格式的相关内容。
官方文档价值很高,但是结合实例.dxf文件看学习起来更快。
免费下载实例
下面将介绍dxf文件的格式规范,和为几何实体标注文本的写法。
dxf文件的格式规范解析
概述
DXF是Autodesk公司开发的CAD数据文件格式,用于矢量图形信息交换。有ASCII文本格式和二进制格式两种。
文件构成
一个DXF文件由多个 段(SECTION) 组成;每个段又由多个 组(GROUP) 构成。
组在文件中占2行,第一行是组码(GROUPCODE),第二行是组值(GROUPVALUE)。如下所示,两行为一组,这两行信息构成了一个键值对:{数据类型:值}。
数据类型
值
数据类型
值
一个段的文本看起来像这样:
0
SECTION
2
TABLES
.......其他行数据
0
ENDSEC
典型的DXF文件由标题段(HEADER)、类段(CLASSES)、表段(TABLES)、块段(BLOCKS)、实体段也叫图元段(ENTITIES)、对象段(OBJECTS)组成。
在 DXF™ 格式中,对象的定义与图元的定义不同:对象没有图形表示,而图元则有图形表示。例如,词典是对象而不是图元。**图元(ENTITIES)**也称为图形对象,而对象称为非图形对象。
图元一般出现在DXF文件的 BLOCK 和 ENTITIES 段。组码在这两段中的用法相同。图元的结尾由下一个 0 组表示,该组表示下一个图元的开始或指示此段已结束。
常见的组码含义参见:AutoDesk的组码说明
ENTITIES图元
一般而言,
0
段名/图元类型名(POLYLINE、POINT、VERTEX)/
8
图层名
10
X坐标
20
Y坐标
30
Z坐标
一般点、线、折线等数据都存在ENTITIES段;DPMap中把文本标注放在ENTITIES段的ATTRIB组,而ATTRIB需要和INSERT配合使用。示例如下:
0
INSERT
8
FeatureAttribs
2
FEATURE
41
1
42
1
43
1
50
0
10
246221.712900
20
3380059.079100
30
0.000000
66
1
0
ATTRIB
8
FeatureAttribs
70
0
1
我是当前多边形的标记名称!
2
NAME
10
246221.712900
20
3380059.079100
30
0.000000
40
1.26
0
SEQEND
0
POLYLINE
##......顶点数据
0
SEQEND
这一段代码前面分别是INSERT图元和ATTRIB图元,表达了某个位置的文本标记“我是当前多边形的标记名称!”。与之相邻的最后是POLYLINE图元,表达一个多边形。最终显示效果就是,多边形中间有一个文本标记。如下图所示:
注意事项
为了确保写出的dxf文件在ArcGIS、Global Mapper等软件中能达到一致的显示效果,在插入文本标注属性时一定要注意配合INSERT和ATTRIB图元的使用。