不得不说,ArcGIS 和 CAD 之间的兼容性非常差,shapefile文件和dwg文件之间互相转换会丢失各种属性,但是很多时候他们之间的转换对我们来说是刚需。通常我们都是通过第三方软件(如FME)来实现带属性的转换,我尝试直接使用ArcGIS将shp文件转换从dwg并添加标注,下文记录整个流程和遇到的坑。

主要流程为:

  1. shp直接转 dwg
  2. 设置导出数据的属性
  3. 添加标注

shp 直接转 dwg

对于普通的 shp 转 dwg ,直接使用Toolbox中的转换工具-转为CAD-要素转CAD工具即可,工具界面如下:
shp文件转dwg并创建文本标注-LMLPHP

通常需要设置的参数有:

  1. 输入要素。需要转换成 dwg 的要素类。可以同时将多个要属类转换至一个 dwg 中。
  2. 输出类型。设置输出的 dwg 版本,对于CAD2006,可以设置为 DWG_2005
  3. 输出文件。输出 dwg 文件的路径。

参数设置完成后,直接运行工具。待工具运行完成后,在CAD中打开所导出的 dwg ,可以看到,该 dwg 仅保存了点和线,所有的属性都已丢失。

shp文件转dwg并创建文本标注-LMLPHP

设置导出数据的属性

多数情况下,我们希望 shp 导出为 dwg 后一些属性能被保留,如高程值、线宽、线型等。对于该需求,我们可以通过为要素添加 CAD 字段的方式实现。

在ToolBox中找到转换工具-转为CAD-添加CAD字段工具并打开,输入需要处理的要素,点击确定即可。

工具执行完成后,打开要素属性表,可以发现有非常多的字段被添加至属性表中。每个属性都具有不同的含义,如EntLineWt属性指定线条的粗细,Layer指定线条所属的图层,等等等等,具体每个属性代表的含义可以查看 ESRI 为 AutoCAD DWG/DXF 格式保留的 CAD 字段

此时,这些属性全部都为默认值,需要自己修改为需要的值,可以开启编辑后手动一个一个修改,也可以使用字段计算器批量赋值。

添加标注

很多时候我们需要对点、线、面进行标注, shp 直接导出为 dwg 会丢失属性,没办法实现。但是可以通过迂回的方法实现。

使用添加CAD字段工具会在要属类属性表中添加一个名为CadType的字段,该字段指示输出实体的类型。当点要素的该字段设置为TEXT,导出 dwg 时会根据TxtValue字段的值,在点的对应位置创建字符串而非点。通过该种方式,即可实现在 CAD 中添加标注,再对文字和点大小进行调整,成果如下图,打完收工。

shp文件转dwg并创建文本标注-LMLPHP


本文参考:

  1. 为 AutoCAD DWG/DXF 格式保留的 CAD 字段
  2. ArcGIS知乎——shp转cad属性丢失?
11-06 20:09