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;
    
                            }
                        }
                    }
                }
    
            }
    
        }
    }
    

      

  • 相关阅读:
    AC自动机(转载)
    hdu 4352 XHXJ's LIS(数位dp+状压)
    hdu 4734 F(x)(数位dp)
    hdu 3709 Balanced Number(数位dp)
    hdu 6268 Master of Subgraph(点分治+bitset)
    poj 1741 tree(点分治)
    pytorch 矩阵数据增加维度unsqueeze和降低维度squeeze
    pytorch seq2seq模型中加入teacher_forcing机制
    pytorch seq2seq模型训练测试
    python os模块判断文件是否存在,file_path获取当前文件路径
  • 原文地址:https://www.cnblogs.com/liweis/p/6285376.html
Copyright © 2011-2022 走看看