zoukankan      html  css  js  c++  java
  • 基于Teigha.Net实现CAD到SHP的转换方案

    CAD在测绘领域运用广泛,所以,现在有很多成果都是CAD格式,但其自身存在很多局限性,需将其转为支持更加广泛,存储更加完善的 SHP文件。ArcGIS中直接提供相关转换工具,但不能转换Xdata,ArcObject似乎也没相关的操作接口。

    通常,以前我的解决方法有两个:一是使用FME,FME是万能的空间数据转换器,支持的格式广泛,用它可以轻松将CAD扩展属性直接转到shp文件的属性表,以前,我通常用它来将南方CASS的扩展属性转换SHP属性;二是使用CAD.net二次开发组件,也可以实现读取和编辑。但这都有一个缺撼,就是不能脱离CAD或ArcGIS环境。

    现在找到了一种解决方案,就是Teigha.Net,需要要的可以尝试一下。先用它将xdata读取出来,然后Shapelib等将其他写到shp文件的属性中。

    using Teigha.DatabaseServices;
    using Teigha.Runtime;
    
    namespace CAD2Shp
    {
        public static class TeighaHelper
        {
            /// <summary>
            /// 加载CAD文件
            /// </summary>
            /// <param name="filePath">路径</param>
            /// <param name="passWord">密码</param>
            /// <returns></returns>
            public static Database LoadCad(string filePath,string passWord="")
            {
                using (Services svcs = new Services())
                {
                    Database database = new Database(false, false);
                    database.ReadDwgFile(filePath, FileOpenMode.OpenForReadAndAllShare, false, passWord);
                    return database;
                }
            }
    
            public static void ReadXdata(Database database)
            {
                using (Services svcs = new Services())
                {
                    BlockTableRecord btab = (BlockTableRecord)database.CurrentSpaceId.GetObject(OpenMode.ForRead);
                    foreach (ObjectId btr in btab)
                    {
                        using (Transaction tr = database.TransactionManager.StartTransaction())
                        {
                            DBObject obj = tr.GetObject(btr, OpenMode.ForWrite);
                            switch (obj.GetType().Name)
                            {
                                case "Polyline":
                                    Polyline dwgpl = (Polyline) obj;
                                    break;
                                default:
                                    break;
    
                            }
                        }
                    }
                }
    
            }
    
        }
    }
    

      

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/liweis/p/6285376.html
Copyright © 2011-2022 走看看