文档库 最新最全的文档下载
当前位置:文档库 › CAD文件格式(.dxf)的等高线在ArcGIS中的加密方法--Tony

CAD文件格式(.dxf)的等高线在ArcGIS中的加密方法--Tony

CAD文件格式(.dxf)的等高线在ArcGIS中的加密方法--Tony
CAD文件格式(.dxf)的等高线在ArcGIS中的加密方法--Tony

CAD文件格式(.dxf)的等高线在ArcGIS中的加密方法

2014-12-21 解决的技术难点:

(1)dxf转成shp格式后出现要素变形,如何解决?

(2)等高线加密后,转成CAD格式后在CAD中高程看不到,如何解决?

实现的思路:

先把CAD格式的等高线进行格式转换成ArcGIS支持的shp格式,然后在ArcGIS中进行等高线加密,最后根据具体要求可以转成CAD格式。

1、dxf转成shp

(1)利用在ArcGIS中加入等高线,可以看到等高线具有详细的分层信息,选中线要素导出成shp格式即可。

当然利用arctoolbox中的转换工具也可以。

这里可能遇到的问题是:转成shp格式后会出现要素变形、要素丢失、数据冗余、属性信息不足等现象,主要是原始数据有误,可以参考下文献:《dxf与shp转换中的问题研究》。这里我遇到的问题是进行转换后出现线要素交叉的现象,主要是原始数据中的一些数据错误导致(如下图,这些异常线高程值为0),亦或是其他原因,查看转换后交叉的线,发现都没有高程值(高程值为0),我把这些线删掉后,然后与原始数据对照发现基本吻合,因此

在接下来我用这个删掉异常线后的shp数据进行等高线加密。

2、ArcGIS进行等高线内插

(1)创建TIN.

(2)等高线内插。(设置等高线间距)

对其中一些关键参数进行设置下即可,有的默认即可。到此就完成了等高线的内插工作(加密或抽稀)。

这里有个问题:进行等高线内插后发现等高线不够平滑,这里可以利用Smooth Line进行平滑(如下图)。

3、shp转成CAD支持的格式

如果要使等高线能够在AutoCAD中查看,ArcGIS中提供了直接转成CAD格式的工具,如图。

但是如果直接利用这个工具转,会出现一个问题是转化后的等高线在AutoCAD 中看不到高程值。经过仔细琢磨,发现在此之前要经过如下操作:

a、点击Add CAD Fields,对shp格式的等高线加上具有CAD特性的属性。

以下两个表分别是添加CAD属性字段之前和之后的属性表。

b、然后对其中的高程字段(Elevation)进行计算(Contour值赋值给Elevation),

如下:

经过这些操作后再点击“Export to CAD”就可以转换成在AutoCAD中可以看到高程的格式了。

注意:在导出呈CAD格式过程中,输出类型中要选择AutoCAD对应版本可以支持的格式。(高版本格式的CAD格式不能在低版本AutoCAD中打开)

ps:如有错误和不足之处,热忱欢迎广大读者批评指正(To: yt.tony@https://www.wendangku.net/doc/ab5535002.html,)。

DXF文件实际上是ASCII编码文件讲解

DXF文件实际上是ASCII编码文件,可以用记事本打开。 DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在DXF 文件中,每个组码和值都各占一行。 DXF 文件由多个段组成,每段都以一个0和后跟字符串SECTION 的组码开始,其后是组码2 和表示该段名称的字符串(例如,HEADER)。每段都由定义其元素的组码和值组成。每段都以一个0和后跟字符串ENDSEC 的组码结束。 完整的结构如下: HEADER 段。包含图形的基本信息。它由AutoCAD 数据库版本号和一些系统变量组成。每个参数都包含一个变量名称及其关联的值。 CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的BLOCKS、ENTITIES 和OBJECTS 段中。类定义在类的层次结构中是固定不变的。 TABLES 段。包含以下符号表的定义: APPID(应用程序标识表) BLOCK_RECORD(块参照表) DIMSTYLE(标注样式表) LAYER(图层表) LTYPE(线型表) STYLE(文字样式表) UCS(用户坐标系表) VIEW(视图表) VPORT(视口配置表) BLOCKS 段。包含构成图形中每个块参照的块定义和图形图元。 ENTITIES 段。包含图形中的图形对象(图元),其中包括块参照(插入图元)。一般屏幕上显示的图形对像如直线,圆,弧等都在ENTITIES 段 OBJECTS 段。包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。OBJECTS 段中的条目样例是包含多线样式和组的词典。 THUMBNAILIMAGE 段。包含图形的预览图像数据。此段为可选 你所问的是立体(3DSOLID),它的编码比较复杂,建议你先把平面图元的DXF格式搞明白,再研究三维图

如何读取DXF格式文件

如何读取DXF格式文件? -------------------------------------------------------------------------------- OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF格式,我们就能很容易地实现资源共享,而不需要重复建模。 DXF文件的结构很清楚,具体如下: 1. 标题段(HEADER ) 有关图形的一般信息都可以DXF 文件的这一节找到,每一个参数具有一个变量名和一个相关值。 2. 表段 这一段包含的指定项的定义,它包括: a、 线形表(LTYPE) b、 层表(LYER) c、 字体表(STYLE) d、 视图表(VIEW) e、 用户坐标系统表(UCS) f、 视窗配置表(VPORT)

g、 标注字体表(DIMSTYLE) h、 申请符号表(APPID) 3. 块段(BLOCKS) 这一段含有块定义实体,这些实体描述了图形种组成每个块的实体。 4. 实体段(ENTITIES ) 这一段含有实体,包括任何块的调用。 5. END OF FILE(文件结束) 下面是对DXF的基本结构举一实例进行说明: 0 0 后接SECTION SECTION 表明这是一个段的开始 2 2 后接的是段名 HEADER 说明该段是HEADER 段(标题段) 9 $ACADVER 文件是由AUTOCAD 产生的 1 AC1008 9 9 后接$UCSORG $UCSORG 用户坐标系原点在世界坐标系中的坐标 10 10 对应X 0.0 X 的值

DXF格式文件解析

dxf文件是AutoCad的交换文件,可以直接用AutoCad打开。dxf文件是明码文件,在vb环境下按顺序文件读取就可以了。 例如:在C盘根目录下有一个文件“1.dxf” 启动vb后,建立一个按钮:Command1 并双击此按钮,对其输入以下代码: Private Sub Command1_Click() Dim a As String '读取文件一行的内容 Dim i As Long '用于记录行数 Dim j As Long '用于记录用户如何响应提示 Open "c:\1.dxf" For Input As #1 i = 0 While Not EOF(1) Line Input #1, a i = i + 1 j = MsgBox("第 " & i & " 行内容为:" & a, vb OKCancel + vbInformation) '运行到此步时,如果用户输入“确定”则继续,如果用户输入“取消”则结束本程序 '用户可以在此输入处理代码,对读入的字串进行处理 If j = vbCancel Then End End If W end close #1 End Sub 读取DXF格式文件 OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF 格式,我们就能很容易地实现资源共享,而不需要重复建模。

如何将地图及对象导出成dxf文件用来作为CAD底图新

如何将地图导出成dxf文件用来作为CAD底图 将地图导出成dxf文件只能在Windows客户端软件进行,并且需要VIP级别用户才可以执行此操作,且导出的底图像素大小和VIP级别有关,详见表1: 表1 将地图导出成dxf文件的具体操作步骤: (1)打开或者新建(点工具栏的图形按钮)一个需要导出成图片的地图图形,如图1: 图1 图形选择说明:图形可以是矩形,也可以是多边形、圆形、椭圆

形、扇形,还可以是轨迹生成的图型、搜索出来的行政区域图形。(2)点击图形,打开图像设置窗口(新建的图形会直接弹出图形设置窗口),设置该图形的线条宽度、线条不透明度、线 条颜色、填充不透明度、填充颜色,如图2: 图2 图形设置说明: 如果想要导出的图片显示该图形的轮廓,则建议将线条不透明度设置为50%,填充不透明度设置为1%,也可以根据需要适当的进行调整;如果用户不想显示该图形,则将线条不透明度也设置为1%。 地图下载说明: 导出地图前要先确保该区域所需级别的地图已下载,如果未下载齐全,导出的图片会显示不全;点【下载该区域地图】下载所需级别的地图,下载完成后再重新打开图形设置窗口。 部分地区的谷歌卫星图实际最高级别为18级,19级和20 级都是数码放大的,下载19级和20级的地图并不会比18级的地图清晰,因此不建议下载这些地区19级和20级的地图。(3)图形设置好了之后,点击【详细信息】,弹出图形详细信息窗口,如图3: 图3 (4)点击【导出成图片】按钮,弹出导出成图片-设置预览窗

口,选择地图级别,查看将要导出的图片信息,设置缩放比例,勾选【仅显示区域内的图片】、【在图片上显示奥维对象】选项,查看预览效果,如图4: 图4 地图级别:地图级别每高一级,导出的图片总像素值就会变大4倍,图片文件大小也跟着变大4倍;另外鉴于部分地区19级和20级卫星图都是数码放大的,因此不建议导出这两级的地图图片。 缩放比例:对当前预览的地图图片进行缩小比例保存,可以控制图片总像素数,一般情况下建议使用默认的不缩放,可使图片导出最佳效果。 仅显示区域内的图片:选中这项,矩形图形之外的其它图形如多边形,导出的底图不会显示多边形外边的地图及对象(见后面的例图5、例图6)。 在图片上显示奥维对象:选中这项,导出的图片将会显示奥维对象,包括区域图形本身和其它可见的奥维对象,所以要根据需要在步骤(2)的图形设置里设置好显示参数。 当前图片总共[384,813]像素:显示当前图片的总像素,可以通过设置地图级别或者通过设置缩放比例来改变当前图片总像素值。 保存成图片:需要VIP1:提示导出当前总像素的图片所需的VIP

dxf文件格式

dxf格式解析 OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF 格式,我们就能很容易地实现资源共享,而不需要重复建模。 DXF文件的结构很清楚,具体如下: 1. 标题段(HEADER ) 有关图形的一般信息都可以DXF 文件的这一节找到,每一个参数具有一个变量名和一个相关值。 2. 表段 这一段包含的指定项的定义,它包括: a、 线形表(LTYPE) b、 层表(LYER) c、 字体表(STYLE) d、 视图表(VIEW) e、 用户坐标系统表(UCS) f、 视窗配置表(VPORT) g、 标注字体表(DIMSTYLE) h、 申请符号表(APPID) 3. 块段(BLOCKS) 这一段含有块定义实体,这些实体描述了图形种组成每个块的实体。 4. 实体段(ENTITIES ) 这一段含有实体,包括任何块的调用。 5. END OF FILE(文件结束) 下面是对DXF的基本结构举一实例进行说明: 0 0 后接SECTION SECTION 表明这是一个段的开始 2 2 后接的是段名 HEADER 说明该段是HEADER 段(标题段) 9 $ACADVER 文件是由AUTOCAD 产生的 1

Allegro导入dxf文件

Allegro导入DXF的方法 1.国内大部分结构工程师会默认给出DWG格式的文件,这种文件在Allegro中是不支持的,EDA 工程师可要求结构工程师给出DXF格式的文件。如果EDA工程师不想麻烦结构工程师,那么也可以自己下载合适的软件将DWG格式转为DXF格式。下图是打开的DXF文件。 2.将DXF文件导入Allegro之前,务必要做一个准备工作:将DXF文件与PCB设置为同样的单位。在我的工作经历中,结构工程师给出的DXF/DWG文件都是mm单位的,为了后续的导入过程顺利进行,强烈建议将DXF与PCB设置为相同的单位。EDA工程师采用的通常是mil单位,建议EDA 工程师首先将单位更改为mm。 3.在Allegro中点击Setup—>Design Parameters,并在弹出的Design Paramters Editor对话框中,点击Design标签,将User Units更改为Milimeter,最后点击OK确认。过程如下图。

4.点击File—>Import–>DXF,如下图。

5.找到欲导入的DXF文件。

6.此时需要注意,有一个非常重要的操作,就是勾选Incremental addtion,即在原有基础上新增。我看到网上有很多网友碰到这样的问题:导入DXF之后,PCB中原有的所有内容都消失了,就是因为没有勾选Incremental addtion。正确的方式如下图。 7.点击Lib…图标,将配置文件保存在合适的目录下,其实默认不做调整也是OK的。比较重要的操作是点击Edit/View layers…图标,选择需要导入的层。

C 读取DXF文件

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/ab5535002.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace DXF { public partial class Form1 : Form { private FileStream fs; private StreamReader sr; private ArrayList LayerList = new ArrayList(); private ArrayList LineList = new ArrayList(); private ArrayList ArcList=new ArrayList(); private ArrayList EllipseList = new ArrayList(); private ArrayList LwopolylineList = new ArrayList(); private ArrayList SplineList=new ArrayList(); private string[] str = new string[2]; private int count; private double leftx; private double lefty;

private double rightx; private double righty; public Form1() { InitializeComponent(); } private string[] ReadPair() { string code = sr.ReadLine().Trim(); string codedata = sr.ReadLine().Trim(); count += 2; string[] result = new string[2] { code, codedata }; return result; } private void Read() { while (sr.Peek() != -1) { str = ReadPair(); if (str[1] == "SECTION") { str = ReadPair(); switch (str[1])

如何将地图及对象导出成dxf文件用来作为CAD底图-新

如何将地图导出成dxf文件用来作为CAD底图将地图导出成dxf文件只能在Windows客户端软件进行,并且需要VIP级别用户才可以执行此操作,且导出的底图像素大小和VIP级别有关,详见表1: (1) 1: 图1 图形选择说明:图形可以是矩形,也可以是多边形、圆形、椭圆形、扇形,还可以是轨迹生成的图型、搜索出来的行政区域图形。 (2)点击图形,打开图像设置窗口(新建的图形会直接弹出图形设置窗口),设置

该图形的线条宽度、线条不透明度、线条颜色、填充不透明度、填充颜色,如图2: 图2 图形设置说明: 如果想要导出的图片显示该图形的轮廓,则建议将线条不透明度设置为50%,填 下载19级和 (3): (4) 查看将要导出的图片信息,设置缩放比例,勾选【仅显示区域内的图片】、【在图片上显示奥维对象】选项,查看预览效果,如图4: 图4 地图级别:地图级别每高一级,导出的图片总像素值就会变大4倍,图片文件大小也跟着变大4倍;另外鉴于部分地区19级和20级卫星图都是数码放大的,因此不

建议导出这两级的地图图片。 缩放比例:对当前预览的地图图片进行缩小比例保存,可以控制图片总像素数,一般情况下建议使用默认的不缩放,可使图片导出最佳效果。 仅显示区域内的图片:选中这项,矩形图形之外的其它图形如多边形,导出的底图不会显示多边形外边的地图及对象(见后面的例图5、例图6)。 参数。 升级 。保存成 升级 (5) 图5 (6)点击【我已获得授权】弹出‘DXF文件选项’窗口,如图6: 图6 图块分块 图块最大块:导出的图块如果未超出VIP上限将不被分割,以最大块输出,偏差较大。

DXF文件读取

DXF文件读取 作者:不忍之刃 He_zhiyuan EMAIL:cb2688he2688@https://www.wendangku.net/doc/ab5535002.html, 2010-10-14 近来因为要做个项目,涉及到要做个DXF文件的读取。网上搜索DXF文件的文件结构,还搜索到一篇讲读取DXF文件的文章,相信来搜索读取DXF方面的人,一定会搜索到这篇文章的。但这篇文章里面附的源代码是有问题的。我用AUTOCAD可以导出3种版本的DXF 文件。我先用AUTOCAD画个简单的长方体, 然后用记事本打开导出来的三种版本的文件,发现很不一样,跟那篇文章里面描述的也不一样,用那篇文章里面源代码的方法是没办法读取的。然后我又用3DMAX导出DXF文件,才有正常的实体的“顶点”系列,实体的面系列,“面”里面记录的面上各个顶点在顶点系列中的位置。但我用3DMAX导出来的DXF文件里面,面是有4个顶点组成的四边形,而不是三角面片,所以这也跟那篇文章讲的不一样。 鉴于这么多,我自己写了个类来实现DXF文件的读取。且使用了OPENGL来做显示模型。列出如下: //CLoadDXF.h #include struct VERTEX { float x,y,z; }; //结构VERTEX用来存储点的坐标 struct SEQUENCE { int a,b,c,d; }; //结构SEQUENCE用来存储实体的面的组成,记录的是4个顶点在顶点序列《vertexArray》中的位置 struct ENTITY { int V ertexNumber;//实体顶点在顶点序列中开始开始的位置 int SequenceNumber;//实体在面系列中开始的位置 }; class CLoadDXF { public: void ShowDXF(float x,float y,float z,float size,float R,float G,float B); void OnFileInput(char* filename); CLoadDXF(); virtual ~CLoadDXF(); private: void norm(GLfloat v1[], GLfloat v2[], GLfloat v3[], GLfloat *nor);

用C语言程序读取CAD的dxf文件里的实体语言

wold line-dxf(FILE *fp,char layer[2],float x1,floal y1, float x2,float y2) fprintf(fp,"0\nLINE\n 8\n%s\n",1ayer); fprintf(fp,"10\n%f\n 20\n%f\n",x1,y1); fprintf(fp,"l1\n%f\n 2l\n%f\n",x2,y2); } #include ; #include < stdio.h>; #include "acad -dxf.c" main() {float r1,r2,11,12,13 x[100],y[37].Z[37]; float beta.beta1,fq,dz,w; int i; float xl,x1,y1,z1,x2,z2,x3,z3 ,x4 ,z4,xs,zs,Xe, ze; FILE*fp 摘要:本文简要介绍了一下DXF文件的组成。重点讲述了怎样使用C语言来读取DXF文件中的实体信息。 关键字:C、DXF

Abstract: The paper present the basic parts of DXF file. And focus on how to use C read the entity’s information from DXF file. Key Words: C, DXF DXF是Drawing eXchange File的缩写,意思为图形交换文件,在工程制图中有广泛的应用,掌握了DXF文件的读写对编写CAD软件时的图形信息的交换有重要意义。它有两种格式:一种是ASCII DXF 格式;一种是二进制DXF格式。ASCII DXF文件格式是ASCII 文字格式的AutoCAD图形的完整表示,这种文件格式易于被其它程序处理。二进制格式的DXF文件与ASCII格式的DXF文件包含的信息相同,但格式上二进制格式比ASCII格式更精简,能够节省百分之二十五的文件空间。AutoCAD能够更快地对其执行读写操作(通常能快五倍)。这可能是对ASCII格式的DXF文件操作时有ASCII与二进制形式的转换,因而花费时间较多。本文主要讨论ASCII格式的DXF 文件,因为它可读性强。 一、ASCII格式的DXF文件的组成

DXF文档详解

DXF文档详解 DXF的基本惯例 DXF格式是特定版本AutoCAD图形文件中所包含的全部信息的标记数据的一种表示方法。 标记数据的意思是指在每个数据元素前都带一个称为组码的整数。组码的值表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意。实际上,图形文件中所有用户指定的信息都能够以DXF文件格式表示。在AutoLISP和ARX应用程序中使用的DXF格式与上述格式基本相同,只是在某些数据组上存在着细微的差别。 如不作特殊说明,本节中所出现的组码都可以应用于DXF文件、AutoLISP应用程序和ARX应用程序。当组码说明对于应用程序和DXF文件有所不同时(或只适用于其中之一),在组码的说明前有如下提示符: APP只用于应用程序的说明 DXF只用于DXF文件的说明 如果组码说明对DXF文件和应用程序都适用,那么没有提示符;否则将显示适当的提示符。 组码范围 组码将与组码关联的值(组值)定义为整型、浮点数型或字符串型。具体说明如下表: 组码范围组码范围组值类型 0-9 字符串(最多255个字符,对于UNICODE字符串则更少) 10-59 双精度三维点 60-79 16位整数值 90-99 32位整数值 100 字符串(最多255个字符,对于UNICODE字符串则更少) 102 字符串(最多255个字符,对于UNICODE字符串则更少) 105 表示十六进制句柄值的字符串 140-147 双精度标量浮点值 170-175 16位整数值 280-289 8位整数值 300-309 任意文字字符串 310-319 表示二进制数据组的十六进制值的字符串 320-329 表示十六进制句柄值的字符串 330-369 表示十六进制对象标识符的字符串 999 注释(字符串) 1000-1009 字符串(最多255个字符;对于UNICODE字符串则更少) 1010-1059 浮点值 1060-1070 16位整数值 1071 32位整数值 按数字次序排列的组码 下表给出了组码(或组码范围)及其说明。在表中,“固定”表示该组码的用途固定不变,非固定组码的用途将随上下文变化。 按数字次序排列的图元组码 组码说明 -5APP:persistentreactor链表 -4APP:条件运算符(仅用于ssget) -3APP:扩展数据(XDA TA)标记(固定) -2APP:图元名引用(固定) -1APP:图元名。每次打开图形时它都改变,且不被保存。(固定) 0 表示图元类型的文字字符串(固定) 1 图元的主要文字值 2 名称(属性标记、块名称等) 3-4 其他的文字值或名称值

相关文档
相关文档 最新文档