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

主要流程为:

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

shp 直接转 dwg

对于普通的 shp 转 dwg ,直接使用Toolbox中的转换工具-转为CAD-要素转CAD工具即可,工具界面如下:

通常需要设置的参数有:

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

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

设置导出数据的属性

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

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

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

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

添加标注

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

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


本文参考:

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

shp文件转dwg并创建文本标注的更多相关文章

  1. shp系列(五)——利用C++进行shp文件的写(创建)

    之前介绍了shp文件.dbf文件和shx文件的的读取,接下来将分别介绍它们的创建过程.一般来说,读和写的一一对应的,写出的文件就是为了保存数据供以后读取的.写的文件要符合shapefile的标准.之前 ...

  2. 百度地图API示例之文本标注

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  3. 结合C++和GDAL实现shapefile(shp)文件的创建和写入

    工具:vs2012+GDAL 2.0 包含头文件: #include "ogrsf_frmts.h" int main() { const char *pszDriverName ...

  4. ArcGIS 网络分析[1.1] 创建用于网络分析用的线类型shp文件[这个太基础了吧!]

    具体的准备,在上一篇就说过了,不再赘述. 阅读本篇前,需要的预备知识是:ArcGIS创建各种矢量数据的方法,了解地理坐标与投影坐标 本篇只创建单一的线数据,至于点数据,以后进行复杂的网络分析时再添加进 ...

  5. shp系列(七)——利用C++进行Shx文件的写(创建)

    之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建).Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLeng ...

  6. shp系列(六)——利用C++进行Dbf文件的写(创建)

    上一篇介绍了shp文件的创建,接下来介绍dbf的创建. 推荐结合读取dbf的博客一起看! 推荐结合读取dbf的博客一起看! 推荐结合读取dbf的博客一起看! 1.Dbf头文件的创建 Dbf头文件的结构 ...

  7. shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言

    博客背景和目的 最近在用C++写一个底层的东西,需要读取和创建shp文件.虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解.以前使用shp文件都是利用软件(如ArcGI ...

  8. 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

    原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...

  9. 创建文本注记TextElement

    1.创建一个字体 /// <summary> /// 字体设置 /// </summary> /// <param name="size">Th ...

随机推荐

  1. 031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级

    031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级 本文知识点:Java中运算符的优先级 运算符的优先级问题 前面学习了很多的运算符,如果这些 ...

  2. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  3. 04 Storage and Calculation C语言中的存储和计算

    文章内容来源于Programming Hub的学习记录,本人整理添加了中文翻译,如有侵权,联系本人删除 Variables C语言中的变量 Let's extend our mainfunction ...

  4. windev的内部窗口传参方式及其与类的相似性

    最近的应用,需要向一个内部窗口(internal window)传参,因为官方文档的说明较为宽泛,虽然结果只有两小段代码,但也费了很大的劲.把所有关于procedure的文档看一遍,又是重新学习了一遍 ...

  5. 二进制K8S集群使用Bootstrap Token 方式增加Node

    TLS Bootstraping:在kubernetes集群中,Node上组件kebelet和kube-proxy都需要与kube-apiserver进行通信,为了增加传输安全性,采用https方式, ...

  6. Python中字符串有哪些常用操作?纯干货超详细

  7. Springboot应用使用Docker部署

    首先准备好springboot应用,然后打包,我这里已经准备好了一个jar包 然后上传到服务器,准备一个目录用于存放jar包和Dokerfile文件 编写Dokerfile文件 我这里写的很简单,就简 ...

  8. 基于raft共识搭建的Fabric1.4.4多机网络环境

    1准备工作介绍 1各个主机ip以及节点分配情况 各个主机的节点分配情况 ip地址 orderer0.example.com,peer0.org1.example.com 172.17.3.60 ord ...

  9. Python+Appium自动化测试(7)-截图方法

    一,selenium模块的两种截图方法 get_screenshot_as_file(filename) 参数filename为截图文件保存的绝对路径,如: driver.get_screenshot ...

  10. golang 语言的特性

    给函数传递参数的时候 map.slice.channel是按引用传递的 同一个变量不能用 := 这种方式创建并赋值两次. 一个包(package)的func .结构体类型变量如果要被外部的包调用.fu ...