欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏ArcGIS应用与开发AO开发 → 正文
加入CAD文件
07-12-05 00:00:00 作者:本站 出处:本站
CAD数据是GIS中常用的一种地理数据,GIS的数据很多都是从DWG文件获取的。Map对象可以载入很多种格式的数据,当然也包括DWG文件,这里介绍将CAD文件载入Map对象的方法。
在Map对象看来,DWG文件可以看成两种不同形式的混合体,一是看作要素图层,另外一种是看作栅格图像。对于前者,ArcObjects使用统一和普通Featurelayer一样的方法来管理,而对于后者则是采用cadLayer对象来管理。
当一个DWG文件被看作是要素图层的时候,它表现为四种类型的要素类,即点、线、多边形和标注图层。这种区分并不是按照DWG文件本身的图层号来做的,而是简单地考虑DWG文件中的几何对象的类型,因此,如果一个DWG文件中有多个图层都是线,那它们将会合并在一个线要素图层中。

CadDrawingLayer对象
下面的代码是将一个CAD文件添加到地图对象中去,这是作为一个栅格图形加入的,无法进行GIS分析等操作,仅仅是作为背景显示。
Dim pCadWorkspaceFactory As IWorkspaceFactory
pCadWorkspaceFactory = New CadWorkspaceFactory ‘使用专门的workspacefactory
Dim pWorkspace As IWorkspace
pWorkspace = pCadWorkspaceFactory.OpenFromFile("C:\ArcGIS\ArcTutor\Editor\ExerciseData ", 0)

Dim pCadDrawingWorkspace As ICadDrawingWorkspace
pCadDrawingWorkspace = pWorkspace

Dim pCadDataset As ICadDrawingDataset ‘定义CAD文件的数据集
pCadDataset = pCadDrawingWorkspace.OpenCadDrawingDataset("PARCELS.DWG") ‘获得CAD数据集

Dim pCadLayer As ICadLayer ‘定义一个CAD图层
pCadLayer = New CadLayer
pCadLayer.CadDrawingDataset = pCadDataset

AxMapControl1.AddLayer(pCadLayer) ‘加入到Map中

cad文件作为Feature对象
作为要素文件被读取的时候,使用的方法和iFeaturelayer是一样的,需要注意的是它是作为一个要素数据集的形式而存在的。一个DWG文件在Map看来是一个要素数据集,其中的类简单分为点,线,面和文字标注四种类型。
下面的方法是把CAD文件当作要素数据集来获取,然后加入Map对象中。
Dim pCadWorkspacefactory As IWorkspaceFactory
pCadWorkspacefactory = New CadWorkspaceFactory

Dim pWorkspace As IFeatureWorkspace
pWorkspace = pCadWorkspacefactory.OpenFromFile("C:\ArcGIS\ArcTutor\Editor\ExerciseData ", 0)

‘打开一个要素数据集
Dim pFeatDataset As IFeatureDataset
pFeatDataset = pWorkspace.OpenFeatureDataset("PARCELS.DWG")

Dim pFeatClassContainer As IFeatureClassContainer
pFeatClassContainer = pFeatDataset ‘pFeatClassContainer可以管理pFeatDataset中的每个要素集

Dim pFeatClass As IFeatureClass
Dim pFeatLayer As IFeatureLayer
Dim i As Integer
‘对其中的要素集进行逐个处理
For i = 0 To pFeatClassContainer.ClassCount - 1
pFeatClass = pFeatClassContainer.Class(i)
If pFeatClass.FeatureType = esriFeatureType.esriFTCoverageAnnotation Then
pFeatLayer = New CadAnnotationLayer ‘标注类型,必须设置为单位的标注图层
Else
pFeatLayer = New FeatureLayer ‘点线面类型
End If
pFeatLayer.Name = pFeatClass.AliasName
pFeatLayer.FeatureClass = pFeatClass
AxMapControl1.AddLayer(pFeatLayer)
Next

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号