CAD文件转ArcGIS要素.pdf_第1页
CAD文件转ArcGIS要素.pdf_第2页
CAD文件转ArcGIS要素.pdf_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcGIS中国通讯 39 ArcGIS技术殿堂 在此可将单个图层导出为shp文件 分层要求可以通过 设置图层的Definition Query实现 CAD文件转GIS要素 文 彭剑 西安代表处技术部 AutoCAD软件作为工程建设的一个基础平台 有着非 常广泛的应用 其图形要素的属性都以外挂数据库方式管 理 为了使工程建设与地理信息进行对接 对CAD数据进行 GIS转换是非常必要的 由于CAD的符号 以块的形式组 织 完全不同于GIS的符号组织格式 这些都要求找到一 套较好的方案进行批量无缝的转换 对于上述情况 ArcGIS提供了CAD转换到Feature Class 的几种实现方法 每种方法都有其适用的场景 优势 转换分析 CAD文件是由诸如颜色 线型 线宽 符号等静态图 形特征组织后的图层集合 其图层并没有象GIS中的图层那 样组织严密 实体 元素都包含在一个单一的文件中 属性 数据的主要描述图层和注记 ArcGIS在读取CAD文件的时候 没有按照CAD的数据 组织方式分层 而是根据要素类型分层 将所有同一类型 的要素放置到一个图层上来 图层信息存储在layer字段 在CAD转换为FeatureClass的时候要素在转换过程 中 除了要素CAD的数据转化为FeatureClass 还要将属于 同一图层的要素打散 按照Layer字段值再次分层 在ArcGIS下有多种方式实现CAD转featurecclass 现 有的功能包括 数据互操作扩展提供的export data功能 gp以及gp提供的示例 Export data 在ArcMap中打开CAD文件 点击图层右键 export data 弹出如下窗口 40 ArcGIS中国通讯 ArcGIS技术殿堂 这种做法比较繁琐 分层导入每次都要去设置过滤属 性 效率比较低下 全手工操作 建议在转换单个的小型 CAD文件时使用这种方法 GP工具 ArcInfo提供了一个现成的CAD数据转换工具 位置在 ToolBox Sample CAD to FeatureClass 这个工具基本反映了导入的整个流程 使用三个工 具组合而成 Select Data Make FeatureLayer Copy Features 这个工具对比export data自动化程度更高了一 些 而且Make Feature Layer可以使用filter 在导入之前设 置filter expression 实现按图层分类的要素 先选择一个cad文件 设置输出的图层文件 提取数据 的类型 filter expreesion 输出字段等属性 导出的是一个 按Filter expreesion分类的图层 这个工具基本上实现了转换功能 但是在按图层输出 上还是要手工输入 一次执行只能输出一个图层 在图层 比较多的时候不适合使用此工具 方案测试 能不能找到一种方法 使得整个转换过程简单 高 效 不需要太多的人工干预 就能实现数据转换的自动 化 整个过程中 最重要的点在于按属性分层转化后的要 素类 按属性分层过程 Make Feature Layer做个循环批处 理 读取layer字段的唯一值集合 然后循环make feature layer 再 Copy Features导出为图层即可 ArcGIS提供了多 种的实现途径 下面一一展开测试这些方法 在AO的接口列表中 有三种方案可以实现读取唯一值 列表 IDataStatistics接口 设置FeatureCursor后 可以 通过其UniqueValues属性获取唯一值列表 通过IFeatureWorkSpace的CreateQueryDef 方法 创建一个查询 设置SubFields属性为 Distinct FieldName 执行后获取结果集ICursor 此 结果集就是唯一值列表 最简单的办法就是通过FeatureCoass的Search方 法获取所有值列表 循环抽取出唯一值列表 上述三个方法中 最慢的是3 这个方法就是硬读取 循环抽取唯一值 需要将整个列表循环一遍 其次是1和 3 3是一个SQL查询 但当前的文件类型不支持此操作 最后使用IDataStatistics接口先试验了一下 在C 写了小工 具完成 C 代码片段 IDataStatistics pDataStatic new DataStatisti csClass pDataStatic Field FieldName 要统计的字段 pDataStatic Cursor pFeatureCursor as ICursor 输入 System Collections IEnumerator pEnumvar pDataStatic UniqueValues while pEnumvar MoveNext object pObj pEnumvar Current uvList Add pObj 定义数组存储唯一值 pNext pEnumvar MoveNext 上面是在ArcEngine下的实现方法 对于对接口比较 熟悉的开发人员来说 不失为一种比较快捷的方法 但是 里面使用的很多关键方法在ArcToolBox就已经提供 我 们做的就只是简单的重复编码工作 能不能利用这些工具 组合起来去实现我们想要的功能 如果有些方法或者功能 ArcGIS中国通讯 41 ArcGIS技术殿堂 rows gp SearchCursor inFeatyreClass valuelist ValueRow rows Next LayerValue ValueRow GetValue sortfield valuelist append LayerValue while ValueRow LayerValue ValueRow GetValue sortfield if not LayerValue in valuelist valuelist append LayerValue CanInsert True for i in range len valuelist if valuelist i LayerValue CanInsert False if CanInsert True valuelist append LayerValue else gp AddMessage LayerValue not insert ValueRow rows next 完成脚本后 最后按照处理过程将已有工具和这个脚 本结合起来 形成一个完整的GP工具 这个工具就实现我们CAD转FeatureClass的自动化处 理 只需要输入CAD文件和输出目录 就可以自动的将 CAD文件分层转换 而且整个过程中就batchcopy这一步 是代码完成 其他的工具都是系统提供 减少了开发工作 量 提高了工具利用效率 利用该转换方式将CAD数据转换ArcGIS的数据 不 仅保证数据的完整性和可使用性 且转换效率也有很大提 高 能够进行大批量的自动处理 借助此方式我们可以实 现CAD与GIS的数据交互 为GIS在工程设计领域进行双向 集成提供了技术基础 ArcEngine可以实现但是ArcToolBox没有提供怎么办 不要 担心 我们还可以嵌入万能的脚本 比如python 在GP实现取唯一值列表 由于本人对toolbox了解不熟悉 查找了整个Toolbox 并没有发现一个直接的功能有此功能 最后的方法是 通过写Python脚本来实现关键步骤 在初步的了解了 Modelbuild和脚本后 规划了整个转换过程 整个过程第三步由python脚 本完成 由于对写python脚本的规 范不太熟悉 按自己的理解设置了 设置了四个输入参数输入要素 分 类字段 输出的工作空间 要素类 型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论