华夏土地论坛's Archiver

kylinfire 发表于 2007-2-10 15:58

GIS数据格式转换[CAD到GIS]

[font=宋体]近年来,[/font]GIS[font=宋体]应用逐步深入到各行各业,地图数据绝大多数来源于测绘部门,由于传统测绘行业大都使用[/font]CAD[font=宋体]类软件,这就出现了从[/font]CAD[font=宋体]到[/font]GIS[font=宋体]的数据格式转换问题。尽管大部分[/font]GIS[font=宋体]软件都提供了数据格式转换功能,但是由于[/font]CAD[font=宋体]软件在数据存储、图元定义、管理风格等方面同[/font]GIS[font=宋体]软件的差别,格式转换的效果不尽如人意。要解决的核心问题就是[/font]CAD[font=宋体]数据要进入[/font]GIS[font=宋体]系统,如何转换、组织和管理。下面我们以[/font]SuperMap[font=宋体]软件为例谈论这个问题。[/font]   [b]1. [font=宋体]如何保证在数据转换过程中风格不变[/font][/b]
  [font=宋体]将[/font]CAD[font=宋体]数据转换成[/font]SuperMap[font=宋体]的数据格式,生成的结果数据集可以分为复合数据集和简单数据集两种不同类型。对于复合数据集来说,它可以保存点、线、面、文本、圆、弧、椭圆等多种类型的空间对象,而且每个空间对象单独保存风格,是一种与[/font]CAD[font=宋体]数据最类似的存储方式,转换结果同原始数据风格一致。对于简单数据集来说,它严格区分类型,包括点数据集、线数据集、面数据集等,每个空间对象不保存风格,风格与图层对应,也就是说简单数据集将空间数据存储和可视化部分区分开,数据集本身仅保存空间信息,在可视化的时候可以对图层设置风格或者制作专题图。如果在转换数据的时候选择这种类型,[/font]SuperMap[font=宋体]会将原始[/font]CAD[font=宋体]数据按照点、线、面、文本等对图元进行类型划分,进而分数据集保存。[/font]
  [font=宋体]转换结果的两种类型对比有如下优缺点:[/font]      
  [font=宋体]([/font]1[font=宋体])生成复合数据集:它可以直接保存原始数据的风格,减少了后期地图配置的工作量。但是由于其中存储了大量的参数化对象,限制了一些[/font]GIS[font=宋体]功能的实现,比如配准、空间查询等。另外,在复合数据集中,每个空间对象都单独保存风格,因此转换结果数据会比较大。[/font]
  [font=宋体]([/font]2[font=宋体])生成简单数据集:它不能直接保存原始数据的风格,需要在后期地图配置中对地图风格重新设置,增加工作量。但是其中存储的对象都是[/font]GIS[font=宋体]中的简单对象,对所有[/font]GIS[font=宋体]功能没有任何限制。另外,在简单数据集中,每个空间对象都仅保存坐标,不保存风格,因此转换结果数据会比较小,同等数量的空间对象,以简单数据集方式保存会比以复合数据集方式保存数据量小,浏览速度快。[/font]
  [font=宋体]从以上对比来看,选择生成两种类型的结果都各有所长,如何能综合发挥其所有优点呢?[/font]
  [font=宋体]一般来说,如果项目周期比较长,并且项目资金和人员允许加工数据占有其中相当一部分的话,能够将原始[/font]CAD[font=宋体]数据全部按照[/font]GIS[font=宋体]的数据要求进行重新整理,都以简单数据集来保存,对于后期[/font]GIS[font=宋体]数据建库以及系统建设都是最好的;但是如果项目周期比较短,需要处理数据量又大,不允许投入太多时间和人力在数据加工上,那我们提供一种解决思路,就是两种不同类型的管理方式并用。将数据从用途的角度进行划分,仅需要当作背景显示的图层全部放到复合数据集上保存,需要进行查询和分析的数据单独提取出来保存到简单数据集中。转入到[/font]SuperMap[font=宋体]中生成的数据集,在字段中会保留原始数据的分层信息和图元风格信息,通过对分层信息来查询分层,对图元风格信息制作专题图,来实现可视化效果上的还原。[/font]
  [b]2. [/b][b][font=宋体]分析转换后数据膨胀的原因[/font][/b]
  [font=宋体]我们在转换数据的时候,经常会发现转换后的结果数据文件比原始数据大很多,这是什么原因呢?引起数据膨胀的原因主要有两方面:[/font]
  [font=宋体]([/font]1[font=宋体])断线:在[/font]CAD[font=宋体]数据中,有一些比较长的线会分多段来存储,这些线一般是在数字化工作人为原因引起的,它不会影响[/font]CAD[font=宋体]数据的显示效果和浏览速度,也不会引起其数据膨胀。但是[/font]GIS[font=宋体]的存储方式更类似数据库中表的存储,每个空间对象占用一条记录,一条线打断成多条分记录来保存就会导致数据量增大,而且这样的记录对于属性管理也是不利的,比如一条道路,它有道路名、道路等级等,在[/font]GIS[font=宋体]系统中,对该道路名的道路进行查询的时候就应该将整条道路都高亮出来。所以对于这样的数据,进入[/font]GIS[font=宋体]软件后,需要进行处理,根据空间位置关系进行连接,或者使用拓扑处理来合并临近节点等,会减小数据量,提高检索速度和显示效率。[/font]
  [font=宋体]([/font]2[font=宋体])[/font]Block[font=宋体]:[/font]CAD[font=宋体]数据中的[/font]Block[font=宋体]的原理有些类似[/font]GIS[font=宋体]中的符号,它在文件头中保存[/font]Block[font=宋体]的定义,在使用到[/font]Block[font=宋体]的点状图元处不再保存[/font]Block[font=宋体]的定义,而是仅保存一个引用。这样的数据转入到[/font]SuperMap[font=宋体]中生成复合数据集,所有的[/font]Block[font=宋体]都当作一个复合对象来存储,这也是导致数据膨胀的一个原因。对于这样的数据,可以选择转换生成简单的点数据集,通过其风格属性字段的内容对点图层设置使用的符号,或者对其制作专题图。[/font]
  [font=宋体]上面我们讨论了在数据转换过程中经常遇到的两方面问题,当然对于一个项目实施来说,处理数据是非常关键的部分,如何选择合适的数据组织方式,对于缩短项目周期,减少人力和财力的投入,都是非常重要的,就此方面的问题,有感兴趣的朋友,我们可以继续探讨。[/font]

uvlab 发表于 2007-7-7 20:39

好像讨论的是个很大问题.想请教一个小问题:现有的带有Z值的离散点地形图如何导入Arcgis形成数字地形,使之能够进行诸如坡度、坡向等空间分析?

zjs2002 发表于 2007-11-6 07:56

从CAD到ArcGIS

[b]从CAD到ArcGIS

[/b]ZT:
CAD和GIS的使用是不同的,然而需要在不同的环境中共享和重用数据是重要的。CAD文件作为GIS数据集合中的一个重要来源,本文将就CAD到ESRI GIS软件的转换介绍一些相关的工具和方法。
定义
首先来看看相关的数据类型说明。
CAD文件
常见的CAD文件有AutoCAD?的线画文件(.dwg),MicroStation?的设计文件(.dgn),Autodesk的线画交换格式(DXF),对于一个MicroStation文件这个文件扩展名是可变的。
CAD文件是由诸如颜色、线型、线宽、符号等静态图形特征组织后的图层集合,其图层并没有象GIS中的图层那样组织严密,实体/元素都包含在一个单一的文件中,属性数据的主要描述依*图层和注记。不同的CAD软件版本对不同版本的文件格式有各自的实现(例如AutoCAD 13v,14v,2000v的线画是彼此不同的),这意味着你在进行数据处理时需要注意相关的版本。
DXF文件通常是作为一个ASCII文件,,也可以存为一个二进制文件方式。CAD文件除了存储静态的图形数据,也可以通过编码对应属性的方式来存储属性数据。在AutoCAD和Microstation中提供了方法用来操作CAD对象上的相关属性数据,这些方法中通常都有相关的标准,但有少量是用户自定义的模式,ESRI软件对这些自定义的属性模式的访问是有限制的。
Coverages
Coverages是一种矢量文件格式,几何和空间拓扑关系存储在二进制文件中,与之相关的属性数据则被存放在INFO表或RDBMS中(PC ArcInfo存储在DBF表中)。Coverages是对要素类组织后(feature class)的集合,每个要素类都是一些点,线(arcs),面或者annotation(文本)的集合,用于描述地理要素的Coverage要素类包括point,node,route system,section,polygon和region。一个或多个coverage要素被用于构造地理要素,例如arcs和node被用于构造街道中心线,tic,annotation,link,boundary要素类提供了对coverage数据管理和浏览的支持。
Shapefiles
Shapefile也是一种矢量文件格式,但和coverage不同的是shapefile文件不存储拓扑信息,因此相对其它数据格式要较少地占用存储空间,在显示和访问效率上要快许多。通常一个shapefile由一个主文件,索引文件和DBASE文件组成,在几何和属性基于记录号一对一对应,其数据格式ESRI已经公开。
ArcSDE简单要素层
ArcSDE将要素组织为要素类,一个要素类是一个/多个具有相同几何类型要素的集合,在SDE?3.0时的提法称为“layer”。一个要素是一个空间对象(例如一条道路)的几何描述,定义为一系列的X,Y坐标序列和几何的属性,要素被存储在表中一行就是一个要素。ArcSDE通过一个或多个表实现一个要素类,这取决于DBMS存储集合的列类型。ArcSDE不改变已有的DBMS功能或影响当前的应用程序,,它只是简单地在表中增加了一个空间列并为客户端应用程序提供了工具(C/JAVA API),实际上,它使用和补充了基本的DBMS功能。在ArcSDE中每个几何类型都有一个严格的验证规则集,用来检测一个要素在存储前是否几何化正确,在ArcSDE开发帮助中有对每种几何类型验证规则的描述。

GEODATABASE
一个geodatabase是DBMS中的一个空间数据知识库,它包含了矢量数据,栅格数据,表以及其它GIS对象。Geodatabase简称为地理数据库,是建立在简单要素层模型基础之上的。Geodatabase模型支持对象-关系矢量数据模型,在这个模型中实体被描述为对象,除具有属性外,还具有对象行为和对象间的关系。geodatabase支持在系统中创建多种地理对象模型,对象类型包括简单对象,地理要素(有位置的对象),几何网络和平面拓扑(对象和其它要素的空间关系)。Geodatabase模型允许你在对象中定义关系,使用这些规则来保持数据的完整性和一致性,这也是和它简单要素层的一个重要区别。
最简单的geodatabase模型是一系列独立要素层集合,每个要素层简单地包含点,线,多边形或注记,这和SDE3的SDE layers和ArcView的shapefile如何实现很相似。一个geodatabase可以由一个或多个要素类组成,而一个要素类则是一个或多个具有相同几何类型的要素集合,扩展的规则和行为被储存在一个附加表中,并且也由ArcSDE来管理。
 
集成
对于使用和共享CAD数据ESRI提供了不同的策略,CAD/GIS集成的一种方式是将CAD数据作为GIS数据集,直接从本地文件读取CAD线画并作为一个有效的GIS数据源。
ArcView GIS 3.X(CAD Reader Extension)
ArcView GIS有工具来读取CAD文件作为有效的GIS数据源,这些工具直接读一个CAD文件到磁盘。当显示数据时,一个CAD文件被看作ArcView3环境中的shapefile GIS数据源。这个CAD读扩展支持以下的CAD图形特征和扩展的CAD属性:颜色,线型,级别/图层,块名/cell名,文本值,文件位置/handle,MSLINK,cell或块属性,线宽,高程和实体类型等。一个独立的线画在ArcView中被作为一个或多个主题,因为ArcView GIS只能工作在相同的几何类型主题中,它需要从CAD文件中提取四个有效几何类型(点,线,多边行,注记)来在ArcView中作为一个主题显示,每个CAD线画可以象其它主题一样在ArcView中被多次打开,这样就可以对CAD文件中的不同对象进行显示控制(如对一个线画文件中的道路,水管,水阀等根据需要进行符号化显示),类似的方法可以对AutoCAD或Microstation图层的可见性进行控制。
AutoCAD的块和Microstation的cell可被作为点,线或多边形几何的一个组成,当被作为点几何或它们的组成几何显示时,块属性和cell标记值将自动地包含在一个虚拟表中。
ArcGIS(CAD要素类和CAD线画层)
ArcMap也可以直接浏览CAD文件。ArcGIS有两种方法来对待此信息,第一种途径是CAD要素数据对象,这和ArcView 3.x中的CAD Reader Extension很相似。另外一种是作为一个单独的层显示CAD线画,用ArcGIS线画层你可以控制图层显示和查询对象。AutoCAD块和Microstation cell可被作为点或者点,线,多边形几何的组成来显示,块属性和cell标记值将自动包含在一个虚拟表中(当你在ArcMap中查找一个CAD对象时可以观察到)。在ArcGIS中将CAD线画作为一个CAD线画层打开时,实体CAD线画被作为一个映射层,因此它的符号是静态的不能被修改,只能用于ArcGIS分析或查找。
当CAD线画被作为要素数据对象时,ArcMap创建了一个CAD要素类,可以对该要素类进行查询和分析,使用ArcGIS中标准的符号编辑器来编辑要素符号。在ArcMap中,地理属性被作为一个图层来表达,当从CAD线画创建图层时,可以选择要表达的线画层。例如,你可能只想在地图上看到街道,街道名称。
在ArcGIS中可以直接访问多种CAD格式,包括Auto CAD的dwg(到2000版本),所有ASCII、二进制形式的DXF,dgn文件(到版本7)。此外,包含三维坐标信息的话也可以象在ArcMap中一样在ArcScene环境中显示。
ArcSDE CAD Client
ArcSDE CAD客户端是ArcSDE的空间数据客户端,允许用户依*ArcSDE在AutoCAD或Microstation环境中存放或取出数据并进行编辑。CAD客户端能够通过多个ArcSDE服务同时访问不同DBMS中的数据,例如在同一时间访问一个ArcSDE for coverage管理的ArcInfo coverage数据,一个ArcSDE for Oracle管理的空间数据库,一个ArcSDE for SQLServer数据库,也能从ArcGIS Geodatabase中的简单要素层中访问数据。
相反地,当CAD数据被存储进一个DBMS时,GIS用户可以使用ArcSDE客户端(如MO,ArcGIS等)访问CAD数据的几何而不需要任何转换,每个CAD对象有一个翻译后的几何并作为一个有效的ArcSDE几何要素被存储。一些复杂的CAD几何,如椭圆,圆,块/cell等被翻译成一些ArcSDE客户端应用程序可以访问的几何。
CAD客户端存储CAD对象的一个二进制副本,它包括CAD对象的一切,象图形特征、块定义、块属性、标记、cell、x-data和其它自定义数据。一个CAD客户端用户可以访问所有ArcSDE管理的数据源,不管它在什么地方存放;同样,GIS用户也可以直接访问CAD客户端用户存储的CAD数据的几何,包括ArcIMS?软件。
ArcSDE CAD客户端访问ArcSDE for Coverages和Geodatabase只提供了读许可。
 
数据转换
CAD数据经常需要经过组织和处理后才能在GIS应用程序中可用,ESRI提供了不同的转换工具来帮助用户在GIS和CAD间更好地使用数据。
ArcView GIS 3.x-保存为shapefile
ArcView GIS 3.X(CAD Reader Extension)有一个内嵌的集成工具,根据属性/空间选择标准从一个CAD文件中选择一组空间要素,选中的对象集可以导出为shapefile。使用这个功能,ArcView 3.x能够转换CAD文件的CAD对象到ArcView GIS shapefile格式中。
ArcGIS ArcCatalog-Simple Data Loader
在ArcCatalog中选中一个要素类并右击鼠标选择<Load Data>选项时就打开了Simple Data Loader向导工具,该工具提供了增加数据到已有要素类的方法。按照向导提示,你可以选择一个要导入的CAD数据源,然后向导将允许你映射CAD图形属性值到已有的数据库字段。另外该工具还提供了查询功能用来对导入源实体进行过滤,然后选中的信息导被增加到要素类中。在运用该工具前,地理数据库的要素类必须事先存在。
ArcGIS:ArcMap-Export Data
从ArcMap中使用Export Data工具,一个选中的CAD要素集可以被导出为shapefile或导出进一个空的geodatabase要素类中。在ArcMap中选择要导出的CAD要素层,点击鼠标右键选择Export菜单,缺省的保存方式为shapefile类型。在ArcMap中CAD文本的转换在操作上有些不同,因为ArcMap中的CAD线画文本被作为一个混合的coverage annotation类型显示,因此必须使用转换coverage annotation功能来取得CAD文本,导入作为geodatabase annotation。这个工具没有在ArcMap标准工具条显示,需要你在从Label菜单选择加入到你定义的界面上。
ArcGIS:ArcMap-裁剪和粘贴
加载数据到geodatabase要素类的另外一条途径是在ArcMap编辑会话期间使用裁剪和粘贴功能,然后就可以将选中的数据一个具有同样几何类型的geodatabase要素类中。该方法和ArcCatalog-Simple Data Loader都允许你往一个已有的要素类中增加数据。
ArcGIS:ArcToolbox-CAD到Geodatabase转换工具
ArcGIS提供了一个CAD到Geodatabase转换工具来转换CAD数据到新的geodatabase要素类中,该工具在ArcToolbox和ArcCatalog中都是可用的。ArcToolbox转换工具允许你定义一个查询来选择CAD对象,然后转换并保存查询结果集到一个新的geodatabase要素类中。不象ArcMap中使用的方法保存数据是到一个已有的geodatabase要素类中,ArcToolbox的转换工具将创建一个新的要素类作为转换过程的一部分,这样一个包含多种图形特征的CAD文件全部导出时会创建多个要素类。如果需要将多个线画转出到一个geodatabase的要素类中,你需要在ArcMap中使用Geoprocessing Wizard来对要素类进行合并。
使用CAD to Geodatabase Translator功能,CAD文本将被转换到一个点要素类中。在CAD要素上的变化曲线信息在转换进geodatabase被保留,CAD几何特征和块/cell属性也在转换过程中被保留。
ArcSDE CAD Client
CAD客户端也可以用于数据转换,在CAD数据到ArcSDE管理的DBMS存储过程中,CAD客户端工具将翻译没个CAD对象的几何并产生相应的ArcSDE要素,而其它ArcSDE客户端可以直接浏览这些ArcSDE要素不需要转换。
 
移植CAD到ArcGIS
关于从CAD移植到ArcGIS,通常包括两方面的内容:一是CAD到ArcGIS数据的转换,二是CAD到ArcGIS应用的转换。从CAD数据到ArcGI的转换,前面已经做了介绍。因为ArcGIS Geodatabase模型是建立在简单要素层基础之上的,所以CAD到Geodatabase数据的转换通常是先转为简单要素层,之后在按照Geodatabase模型的定义进行要素类组织合并,定义域,子类型,关系,几何网络等规则。从CAD到ArcGIS应用的转换目前主要集中在数据的原始表现上,因为要用到ArcGIS强大的功能必然要对CAD数据进行转换,但也因此以前在CAD环境下的看到数据在ArcGIS环境下“变了样子”,这主要由于各自系统对数据表现方式和相关符号库的不同,数据本身并没有丢失。此问题的解决目前主要集中在两个方法,一种是程序实现不同系统符号库的自动转换,在数据转换时完成相应符号库的转入。另一种是对数据进行前期处理,个人觉得这种方法更具有现实性和易操作性一些。这就是先对CAD数据进行编码处理工作,使CAD符号能够根据编码进行区分,然后利用ArcGIS强大的符号编辑器重新制作CAD相关的符号,之后在ArcGIS应用中书写程序根据编码规则匹配相关的ArcGIS符号文件进行显示和编辑等。

addfy2008 发表于 2007-12-6 20:18

这里面有ArcGis高手吗?如何用程序实现将CAD的dwg数据转换为ArcGis格式的shp数据?在ArcGis中
如何框选一部分实体后,将框选到的实体输出为dwg数据?ArcGis的开发环境为B,CAD的开发环境为
ba或ARX,请高手赐教!另谁FME的开发文档,可以共享一下吗?
ArcGIS软件支持对CAD格式数据的读取,但是我们通常要对数据进行编辑,就必须将它转换成ArcGIS
所能编辑的数据格式(shapefile、coverage、geodatabase)。由于CAD格式只是对数据进行逻辑分
层,在物理存储上与这几种数据的要素类结构不同,所以要在转换时将CAD的各层元素独立地识别和
存储。
    常用的格式转换工具,我们都可以在ArcToolBox中找到:CAD to Geodatabase、DLG to
Coverage、DXF to Coverage。另外,ArcGIS还提供了一个Simple Data Loader,支持向
Geodatabase中加载CAD数据
1. 用ArcGIS提供的工具实现,Arciew(CAD Reader Extension)有一个内嵌的集成工具,根据属性/
空间选择标准从一个CAD文件中选择一组空间要素,选中的对象集可以导出为shapefile。使用这个
功能,Arciew 3.x能够转换CAD文件的CAD对象到Arciew shapefile格式中。还有ArcGIS
ArcCatalog-Simple Data Loader,ArcMap-Export Data,ArcToolbox
2. 用ArcGIS提供的编程接口来实现,用MapObject或ArcObject编程实现,最好用ArcSDE CAD
Client, 它提供了ARX和API接口(csapi)

CAD数据与ArcGIS数据的互转换
CAD数据往往是分层管理的,将CAD数据转成arcgis数据,最担心的莫过于丢失了属性数据,
arcgis9.2提供了一种方法,可以将CAD数据完整的转换为personal geodatabase,属性信息不会丢
失,方法如下:
ArcToolbox--->Conversion Tools-->To Geodatabase-->Import from CAD。
同时,我们往往需要将arcgis格式的数据转成CAD数据,往往需要让某一个关键字段可以转换成CAD
格式的不同图层。下面大致讲一下将shp数据转换为CAD格式的方法。
1、 添加CAD字段到要转换的shp文件中,方法为:ArcToolbox--->Conversion Tools-->To CAD--
>Add CAD Fields.
2、将你要分层显示的字段的字段名改为“Layer”,然后导出为CAD数据。方法为:ArcToolbox---
>Conversion Tools--> Export To CAD.

CAD的dwg文件转成shp:在ArcMap中打开DWG文件后,选择Export,输出为Shp格式。
DWG转为DXF后一般的GIS软件均可转为 SHP格式dwg->dxf->shp


arcgis里导入cad图,发现cad里面的色块没有进去CAD图导入到GIS中分出点、线、面多个文件格式,一般情况下我们使用的都是线文件,对上面不需要的线进行编辑,然后拓扑成面,进行统计
好像CAD中填充的面是无法转到GIS中的,我使用的是ARCGIS.
一般加色块都是通过属性加上去的,比如说一个图版的属性是旱地,你就把是旱地属性的图版颜色设置成黄色,当然你也可以加上符号。
CAD和ARCGIS根本就是二个概念.    不过要想转过去也不是没有可能,只是把CAD里的关于颜色的属性转到arcgis里,然后根据属性再重新配颜色.

tiny887 发表于 2008-3-27 17:38

非常感谢,真的是雪中送碳啊!太感激了,希望楼主在弄给实例出来就更好了。

gwf506 发表于 2008-9-12 16:56

但是真正在arcgis 中打开cad
我觉得有些困难
是不是缺少某些东西了呢

cfc0699 发表于 2008-9-25 17:20

但是真正在arcgis 中打开cad
我觉得有些困难
是不是缺少某些东西了呢?

xjgis 发表于 2008-10-3 13:40

真的不错的资料,感觉真好!

l123www 发表于 2008-10-23 11:49

谢谢楼主的分享!!!!!!!!!!!!!!!!!!!!!!!!!

psxf2006 发表于 2008-11-14 16:59

cad的dwg格式数据中有注记,转到ARCGIS中时,注记以点的属性形式存储,但是位置有很大改变,有的道路名会被分别存储,如中山路,可能就会被分为三个点,分别显示,有没有办法解决注记的转换问题呢。我需要道路,水系所对应的名称。
有没有好的办法使道路,水系和名称相对应呢?

kingren 发表于 2008-12-8 21:29

ArcGIS9.2直接打开CAD数据后,没法正常下显示

zhousizhou 发表于 2008-12-16 09:45

我用这些转换工具打开CAD后,要么以图形形式显示(不可编辑),要么无显示,为什么?

xjgis 发表于 2008-12-28 12:03

太感谢了,不错的转换方法,受益匪浅!

404648778 发表于 2008-12-28 20:43

本人觉得 在转换的时候还是会有数据丢失的问题

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.