您现在的位置是:首页 > 测绘学会 > 学术交流
 

基于AutoCAD的ARC数据制作

 

基于AutoCADARC数据制作

焦朋1,2,林意1,师红琴3

1江南大学,信息工程学院,江苏 无锡 2141222无锡市曦晨测绘有限公司,江苏 无锡 214001

3 无锡市房冠房地产评估交易有限公司,江苏 无锡 214001

  要:AutoCAD拥有强大的图形编辑功能,在许多方面有广泛的应用,而ArcGIS系统有强大的属性编辑功能, ArcGIS把属性和图形放在同一个平台中进行管理,这极大提高了工作的效率和正确性。本文以房产地理信息系统基础数据制作为例,介绍如何通过AMLArcMap快速建立GIS基础数据的方法,并剖析解决了其中一些关键技术和难点。

关键词AutoCADArcGisArcMap

中图分类号TP391.72     文献标识码C

0  引言

AutoCAD发展至今已经是AutoCAD2009,这已经是第22个版本,已经无可争议地成为二维CAD领域的主流软件。AutoCAD拥有强大的线,文字,块编辑功能,被建筑业、基础设施、机械制造、国土、规划等行业广泛的使用,累了丰富的AutoCAD数据。通过扩展属性,Autodesk Map等方法,AutoCAD可以将图形及属性数据统一管理。但是,绝大多数单位或者企业并没有使用这种功能,普遍存在一个现实,图形和数据的分开存储,两者虽存在关联,修改时图形和数据仍需要分开处理[1],修改极为不便。查看时需要对数据的组成极其了解,不直观,应用也存在多种不足。相比AutoCADArcGIS图形编辑功能极其弱小,但ArcGIS把属性和图形放在同一个平台中进行管理,这极大提高了工作的效率和正确性。基于以上的这些原因,把AutoCAD平台迁移到ArcGIS平台还是很有必要的、迫切的。

1 AutoCADArcGis优缺点对比以及AutoCAD数据的预处理

AutoCAD的图形质量的好坏是决定能否快速方便创建GIS的重要因素,对CAD数据先进行整理是非常必要的。CAD整理时图形质量的基本要求:图形有统一的标准,内容齐全[2]

图形有统一的标准:AutoCAD中的图形由线,文字,块组成,这些要素之间以及某个要素的各组成部分都应该有各自的规则。线应该能区分线型,线宽,图层;文字应该能区分颜色,字号,内容等等。图形的统一标准内容涵盖应该具体到每一个地物,包括面状图形是否封闭,等等,与以前测绘的分幅有一些区别,遵循这些原则,不是对工作量或者是测绘要求的提高,而是测绘工作的趋势所要求的。实践证明混乱无规律的数据将会导致后继GIS数据处理的时间和工作量成几何级的增长。利用CAD优异的图形编辑功能,进行数据预整理是必要的。

内容齐全:根据建立信息系统的需求,所需要的内容,将信息附在图形上。CAD图形中可以包含丰富的信息,信息系统所需要的内容CAD中存在的,则尽量从图形中直接提取并赋到图形上,减少键入资料的工作量。

2 Arcedit的数据转换

2.1 Arcedit数据转换分析

原先一般的做法是在AutoCAD中把地图另存为*.dxf格式,在ARC中引入DXF文件,引入到ARC中后,所有要素将先放置在同一个层,名字可以任意选择(本文中以zong为例),然后敲击命令进行分层和赋值操作。进入ARC后,CAD中的文字,线,块将被ARC环境中的要素取代:

文字将被转换为一个lab点和文字两部分,文字可供操作的要素为$TEXT(文字内容),$SYMBOL(字号颜色),$SIZE(文字高度),lab点可供操作的有DXF-LAYERCAD中所在层),用法如下:

Lab点:sel DXF-LAYER = '结构'

文 字: sel $SYMBOL = 4 and $SIZE = 1 and $TEXT = '401'

块将被转换为一个lab点,可供操作的要素为DXF-ATTRIB(块名),用法如下

sel DXF-ATTRIB = 'WB953'

线在转换后仍然是线,可供操作的要素为DXF-LAYERCAD中所在层),DXF-TYPE(线型)用法如下

sel DXF-LAYER = 'DXDM' and DXF-TYPE = 'LC10421'

由上可见,一个地形图中包含的文字,块,线的属性信息非常大,不同类型的信息很多,采用敲击命令行的形式来筛选数据,分离数据,工作量势必会相当的大。

2.2解决方案

通过长期的实践摸索,我们发现可以先整理CAD数据,再通过AML[3]快速数据筛选和转换。也就是说,在实际操作过程中,既然ARC可以操作的要素远远不能完全区分CAD中的所有内容,比如:线要素导入到ARC中,颜色就丢失了,导致CAD中可以通过颜色区分的线,在ARC中进行分离变成了不可行,那么在CAD进行预处理是最有效的一种方法。将所有的线加入选择集,对ARC中可以分离出来的线做统一变色处理,这样剩余的ARC中不能处理的线就一目了然,再通过颜色,线宽,线型,所在图层,再进行处理,直到所有的线都变色处理,代码如下:

If i.ConstantWidth = 0.2 And i.Layer = "ROAD1" And i.Linetype = "L23" then           
 
1

i.Layer = " 430400 "                 此处直接与GIS中的分层代码一致

i.color = 29                        作变色处理,,当线均变色,线处理结束

end if

块和文字可以不在CAD中处理。

处理完毕后,将处理过的CAD引入ARC,按类型,转入到ARC对应的层,并赋值。

sel DXF-LAYER = '430400'                                                    
 
2
&if [show number select] > 0 &then         判断是否有选中对象                  
3
   &do                                                                    
 
4
   put house                             放入指定ARC                    
 
5
   y                                   自动应答                            
 
6
   ec house;ef arc;sel code = 0              选择ARC层中的要素                
 
7
   cal code = 430400                      赋值                              
 
8

&end

   2.3解决方案主要的优缺点和注意点

1.采用新的方法,节省敲命令的时间,自动执行重复的命令,所以可以大大提高工作效率,并有效避免人工输入操作符导致的数据制作错误。以50*50图幅为例,采用一般方法,一天一人最多完成两三幅的转换,而采用新的方法,同样难度的图幅,一人一天最少可以完成二十幅(基本上取决于机器的性能)。

2. 上述的这种流水线程序用起来很方便,但是也有缺点。如果用(2)-(8),put后的地物会丢失所有的属性,属性单一的地物可以后赋值,属性本身多的用这种方式就不合适了。一个有效的方法是:在zong分层前先赋值,然后使用get语句,则可以将事先赋值好的属性带入ARC中。这种方法优点在于先赋值,代码易读,步骤也得到了有效的简化。处理高程点,面上的lab点,线等都可以用这种方式来操作。首先在zong中创建需要的字段,并定义长度,类型,additem zong.pat zong.pat ELEVATION 7 7 N 3,然后

sel code = 211101; cal ELEVATION = DXF-THICKNESS  此处先进行赋值

put ccc                             放到任意一个层,get完毕后删除此层。

ec house;ef lab                       选择ARC

get ccc                              获取内容。

最后用Kill ccc all删除无用的ccc层,需要注意的是,如果在arc命令行下手工操作,使用kill命令,无需加all就可以删除,但在程序中必须要加上all参数,否则程序会执行失败。

3. 转换lab点时,首次put和以后put系统提示不一样,程序中自动应答段相应的处理也不一样,所以,为了避免这个问题,可以在分层前,先将lab点所在层均添加一个lab,赋值时给一个特殊值,在数据全部转换完毕后,将此添加的lab点删除即可。

4. CAD预处理时,由于线段,圆弧,多义线的属性字段并不完全相同,为保证CAD程序处理的方便,一致,可以使用pedit命令将线类型全部转换成多义线,如果不这么做,势必对每个线还要判断是线段还是多义线,还要区分哪个属性可用,哪个不可用,大大增加了程序量。全部转为多义线,这样(1)语句将可顾及所有的线型而不用担心诸如线段没有宽度属性而导致程序出错的问题。

5.对文字的处理,枚举所有的文字后,再按颜色和文字大小分类,表面上看这是一个最笨的办法,但是由于用程序来做,所以,一次分类,之后只要添添新增的文字,反而是一个最有效的方法,一是可以保证成果的准确性,其二可以精确控制文字的分类,减少错误的发生。

6. AML用任何一个文本编辑器如记事本、写字板,即可编写自己的程序。由于是解释执行,有单个文档容量限制,调试起来相对困难,可以创建一个主文档和多个小文档来解决[4],具体办法是,先成功调试小文档,成功后,在主文档中添加&R file.amlfile.aml为小文档的全名,含后缀),这样,只要执行主文档就可以将小文档都执行到,缩小调试的范围。

7. 使用频率较高的几种判断语句[5]

&if [show number select] > 0 &then

&if [exists house.tata -info] &then

&if [exists house -cover] &then

&if [exists house.tatdxf -info] &then

3 ARCMAP数据处理

Cov格式的数据[6]要先通过WorkStation把图层按事先设计的GeoDataBase分层及属性的内容重新分层,再通过Desktop加载进已创建好的MDB模板里,载入ArcMap,至此,shp原始数据才算是初步成型。

通过ArcEdit制作得到的Shp数据只具备简单的CAD信息,满足系统的应用是远远不够的[7],需要进一步加工,将具有空间位置的属性进一步关联,同时补充数据关联需要的必填信息,为后期数据库关联做好准备。

当需要批量填写同属性的内容时,可以采取以下语句:

Do While Not pFeature Is Nothing

    If (Not pFeature Is Nothing) Then

        pFeature.Value(门牌) = 无锡市

        pFeatureCursor.UpdateFeature pFeature

        EditFeature = True

    End If

Set pFeature = pFeatureCursor.NextFeature

Loop

ArcMap自身并不提供将面上的注记点的内容赋值到点所落面的属性内容上,比如房屋面上有相应的注记,包括房屋结构,房屋层次,房屋的丘地号等信息,这些都是以注记的形式,放置在面上,这些内容同样也要填入房屋面的属性栏,内容很丰富,手工填写费时费力,这时可以先遍历所有的面,对每个面遍历图中全部的注记点,当注记点落在面内,则提取信息,放入房屋面对应的属性栏。

注记(pFeature)属性字段Text_zj对应与房屋面(pFeature_Polygon) 属性字段Text_clno

Do While (Not pFeature Is Nothing)

 判断注记是否落在面上

If pFeature.Shape.GeometryType = esriGeometryPoint Then

Set pPoint = pFeature.Shape

ElseIf pFeature.Shape.GeometryType = esriGeometryPolygon Then

Set pPolygon = pFeature.Shape

Set pPoint = pPolygon.FromPoint

End If

如果面上Text_clno属性字段为空,则将捕获的注记信息填入。

If pFeature_Polygon.Value(Text_clno) = "" Then

pFeature_Polygon.Value(Text_clno) =pFeature.Value(Text_zj)

pFeature_Polygon.Store

End If

Set pFeature = pFeatureCursor.NextFeature

Loop

4 结束语

本文的思路以及相应的处理方法来自我们在实践中的摸索,反过来在实践中也得到了证明,使用AML制作Cov数据,然后在ArcMap平台进行数据的加工,可以快速,有效的创建ArcGis所需要的基础数据。本文的方法在无锡地理信息系统平台创建基础数据时起到了重要的作用。当然,还有其他一些方面值得改进的,例如,怎么将DXF直接的转换到SHP数据等。这是我们下一步的工作。


参考文献

[1] 程亮,张友静,朱明媛.基于AutodeskMap的房产测绘管理系统[J].北京测绘.2003.(2):37-40

[2] 1:500无锡房产地形要素分层及编码规范,2007

[3] 毛玉龙. ArcGIS的二次开发[J].福建电脑.2006.(2):9-10

[4] ARC/INFO地理信息系统AML教程.资源与环境实验室

[5] 刘光.地理信息系统二次开发教程组件篇.北京:清华大学出版社,2003

[6] 王石岩,禄丰年.基于AMLCAD数据到GIS数据的转换[J]. 测绘与空间地理信息.2006.(2):78-80

[7] 邬伦,刘瑜,.地理信息系统原理方法和应用[M].北京:科学出版社, 2002

The Execution of ARC Datum Based AutoCAD

Jiao Peng1,2 Lin Yi1 Shi Hong Qin2

(1School of Information Technology, Jiangnan University, Wuxi 214122, P.R. China)

(2Wuxi Xichen Mapping Co.,Lid,Jiangsu ,Wuxi 214001,China)

(3Wuxi FangGuan Property Assessment Co., Ltd.,wuxi 214001,china)

AbstractThere are the powerful graphics editing functions in AutoCAD, it was widely applied in many fielsds, And there are the powerful attributes editing functions in ArcGIS. That the attributes and graphics are managed on the same platform will cause greatly improving the efficiency and correctness. In this paper, how to quick establish the GIS basic datum through the adoption of AML and ArcMap is introduced ,and the key technologies and difficulties are introduced. As application this method has been applied to take basic datum of the house property geogrphy information system.

Key wordsAutoCADArcGisArcMap


用户名:
密 码:
1 0510-82852987 61234612346123461234612346123461234612346123461234