久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区

您的位置:網站首頁 > CAD教程 > 常見問題

C#實現CAD數據轉shape或mdb

時間:2010-11-01 10:02:14 來源:未知

本文所指的CAD數據為不帶空間參考和擴展數據的數據。如果CAD帶了空間參考或是擴展屬性數據的話,就要采用圖形和屬性分離的方法轉CAD數據,即圖形轉完后需要掛接屬性數據庫。這里就不詳細說明了.

 

ArcGIS和CAD對空間數據的歸納有所不同,在AutoCad中,點線面可以在同一個圖層中,但是在ArcGIS中,點線面被嚴格的區分為了point、polyline和polygon三種類型的圖層,所以直接用ArcCatalog查看CAD數據時會看到五個圖層(點線面、注記和Multipatch)

 

話不多說了,進入主題吧

下面的方法實現了點線面圖層轉成Shape文件

 

代碼
 public bool CadDataToShape(string _cadFilePath)
 {        
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對應數據集
            
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea 
= new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();

            
try
            {
                
string strFullPath = _cadFilePath;
                
int index = strFullPath.LastIndexOf("\");
                
string filePath = strFullPath.Substring(0, index);
                
string fileName #p#分頁標題#e#= strFullPath.Substring(index + 1);
                
string DataSaveFilePath=@"D:CADToShape";

                cadGISInfo 
= new stMdbInfo();
                cadGISInfo.mdbFeaturesName 
= new List<string>();
                cadGISInfo.mdbname 
= fileName;

                
//打開cad數據集
                pWorkspaceFactory = new CadWorkspaceFactoryClass();
                pFeatureWorkspace 
= (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
                
                
                
if (Directory.Exists(DataSaveFilePath + @"\" + fileName))
                {                  
                    DirectoryInfo dirInfo 
= new DirectoryInfo(DataSaveFilePath + @"\" + fileName);
                    
foreach (FileInfo file in dirInfo.GetFiles())
                    {
                        file.Delete();
                    }
                   #p#分頁標題#e#
                    Directory.Delete(DataSaveFilePath 
+ @"\" + fileName);
                }

                Directory.CreateDirectory(DataSaveFilePath 
+ @"\" + fileName);

                cadGISInfo.mdbfilepath 
= DataSaveFilePath + @"\" + fileName;

                
//打開一個要素集
                pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);

                IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                
//對CAD文件中的要素進行遍歷處理
                int count = pFeatureClassContainer.ClassCount;

                
for (int j = 0; j < pFeatureClassContainer.ClassCount; j++)
                {
                    IFeatureClass pFeatClass 
= pFeatureClassContainer.get_Class(j);
                    cadGISInfo.mdbFeaturesName.Add(pFeatClass.AliasName
+".shp");
                    
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation || pFeatClass.FeatureType == esriFeatureType.esriFTAnnotation)
                    {#p#分頁標題#e#

                    }
                    
else
                    {
                        feaTofea.in_features 
= strFullPath + @"\" + pFeatClass.AliasName;
                        feaTofea.out_path 
= DataSaveFilePath + @"\" + fileName;

                        feaTofea.out_feature_class 
= pFeatClass.AliasName;
                        feaTofea.out_name 
= pFeatClass.AliasName;
                        pGeoPro.Execute(feaTofea, 
null);
                    }
                }           
                
return true;
            }
            
catch
            {
                
return false;
            }
            
finally
            {
                pWorkspaceFactory 
= null;              
                pFeatureDataset 
= null;            
                pFeatureWorkspace 
= null;             
                GC.Collect();#p#分頁標題#e#
            }

        }

 

 

下面的方法實現CAD數據轉成本地的Personal Geodatbase,同時實現了注記圖層的轉換

  

代碼
public bool CadDataToGeodatabase(string _cadFilePath)
        {     
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對應數據集

            
//創建MDB工作空間
            IWorkspaceFactory pAccessWorkSpaceFactory;

            
//這個conversionTools不包含注記圖層的轉換
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea = new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            
//ImportCADAnnotation功能,實現導入注記圖層
            ESRI.ArcGIS.ConversionTools.ImportCADAnnotation importCADAnno = new ImportCADAnnotation();
            
try
            {                #p#分頁標題#e#
                    
string strFullPath = _cadFilePath;
                    
int index = strFullPath.LastIndexOf("\");
                    
string filePath = strFullPath.Substring(0, index);
                    
string fileName = strFullPath.Substring(index + 1);
                    
string DataSaveFilePath=@"D:CADToMDB";

                    cadGISInfo
= new stMdbInfo();
                    cadGISInfo.mdbFeaturesName 
= new List<string>();
                    cadGISInfo.mdbname 
= fileName;
                    
//打開cad數據集
                    pWorkspaceFactory = new CadWorkspaceFactoryClass();
                    pFeatureWorkspace 
= (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);

                    
//創建mdb(personal geodatabase)
                    pAccessWorkSpaceFactory = new AccessWorkspaceFactoryClass();
                    
if (File.Exists(DataSaveFilePath +#p#分頁標題#e# @"\" + fileName + ".mdb"))
                    {
                        File.Delete(DataSaveFilePath 
+ @"\" + fileName + ".mdb");
                    }

                    cadGISInfo.mdbfilepath 
= DataSaveFilePath + @"\" + fileName + ".mdb";
                    
//ltMdbFilePath.Add(DataSaveFilePath + @"\" + fileName + ".mdb");

                    pAccessWorkSpaceFactory.Create(DataSaveFilePath, fileName 
+ ".mdb"null0);
                    
//打開一個要素集
                    pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);

                    IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                    
//對CAD文件中的要素進行遍歷處理
                    int count = pFeatureClassContainer.ClassCount;

                    
for (#p#分頁標題#e#int j = 0; j < pFeatureClassContainer.ClassCount; j++)
                    {

                        IFeatureClass pFeatClass 
= pFeatureClassContainer.get_Class(j);
                        cadGISInfo.mdbFeaturesName.Add(pFeatClass.AliasName);
                        
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation || pFeatClass.FeatureType == esriFeatureType.esriFTAnnotation)
                        {
                            pFeatureLayer 
= new CadAnnotationLayerClass();//注記圖層
                            importCADAnno.input_features = strFullPath + @"\" + pFeatClass.AliasName;
                            importCADAnno.output_featureclass 
= DataSaveFilePath + @"\" + fileName + ".mdb" + @"\" + pFeatClass.AliasName;
                            importCADAnno.reference_scale 
= 1000;
                            pGeoPro.Execute(importCADAnno, 
null);
                        }
                        #p#分頁標題#e#
else
                        {
                            feaTofea.in_features 
= strFullPath + @"\" + pFeatClass.AliasName;
                            feaTofea.out_path 
= DataSaveFilePath + @"\" + fileName + ".mdb";

                            feaTofea.out_feature_class 
= pFeatClass.AliasName;
                            feaTofea.out_name 
= pFeatClass.AliasName;
                            pGeoPro.Execute(feaTofea, 
null);
                        }
                    }                 
                
return true;
            }
            
catch(Exception ex)
            {
                
return false;
            }
            
finally
            {                 
                GC.Collect();           
            }            
        }

 

 

從上面的代碼可以看出,實際C#調用了Geoprocessor 執行了ConversionTools.FeatureClass to FeatureClass工具,這是不是有點像用arctoolbox中的功能!這里就可以擴展用Geoprocessor 實現其他arctoolbox中能夠先實現的功能!#p#分頁標題#e#

 

這里也可以將上面的方法里的參數改為多個cad數據路徑,實現批量轉數據!


久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区
国产乱子伦农村叉叉叉| 欧美日韩一区综合| 日韩国产欧美精品| av在线不卡观看| 国产在线视频欧美| 久久九九国产视频| 一区二区三区四区免费观看 | 国产成人精品自拍| 日韩一级特黄毛片| 国产伦精品一区二区三区精品视频| 国产精品一区=区| 久久精品国产2020观看福利| 无码少妇一区二区三区芒果| 国产欧美一区二区三区另类精品| 成人中文字幕在线观看| 国产精品毛片a∨一区二区三区|国| 国产精品高潮呻吟久久av无限| 国产精品丝袜视频| 日本精品视频网站| 国模视频一区二区三区| 日韩三级成人av网| 欧美性大战久久久久xxx| 国产啪精品视频| 国产精华一区| 亚洲午夜久久久影院伊人| 国产乱码精品一区二区三区不卡| 91av在线不卡| 亚洲国产精品日韩| 成人91免费视频| 亚州欧美日韩中文视频| 国产精成人品localhost| 天天爽天天狠久久久| 91精品久久久久久久久久久 | 国产v综合v亚洲欧美久久| 亚洲欧洲另类精品久久综合| 福利视频一二区| 一本二本三本亚洲码| 国产精品亚洲综合天堂夜夜| 一区二区日本伦理| 久久人人97超碰精品888| 日韩一二区视频| 日韩一中文字幕| 欧美久久电影| 国产精品久久久久久久9999| 国模精品视频一区二区| 在线观看免费91| 国产高清自拍一区| 日韩精品在在线一区二区中文| 国产伦精品一区二区三区照片| 久久久久久久激情视频| 一区二区日本伦理| 久久久亚洲综合网站| 日日噜噜夜夜狠狠久久丁香五月 | 久久精品男人天堂| 黄色大片中文字幕| 国产成人a亚洲精v品无码| 日本高清视频免费在线观看| 久久精品人人爽| 日本网站免费在线观看| 国产精品直播网红| 中文字幕无码精品亚洲资源网久久| 狠狠干 狠狠操| 国产成人在线播放| 一本一本a久久| 久久精品综合一区| 精品午夜一区二区三区| 亚洲7777| 国产精品久久久久久久电影| 99久久久精品视频| 热久久免费视频精品| 欧美乱大交xxxxx| 91av一区二区三区| 国产在线视频在线| 日韩在线国产| 九九精品视频在线观看| 91久久久久久| 国内精品一区二区三区四区| 精品国产一区久久久| 精品视频在线观看| 天天成人综合网| 国产精品成av人在线视午夜片| 黄色免费视频大全| 亚洲欧洲三级| 国产精品二区二区三区| 蜜臀av无码一区二区三区| 亚洲五码在线观看视频| 91久久精品视频| 婷婷久久五月天| 久久无码高潮喷水| 欧美少妇在线观看| 亚洲a级在线观看| 久久伊人精品视频| 国产欧美精品xxxx另类| 日韩一二区视频| 久久久精品久久| 狠狠色综合欧美激情| 亚洲a∨一区二区三区| 久久成人18免费网站| 日韩亚洲综合在线| 91成人综合网| 成人免费淫片aa视频免费| 黄色污污在线观看| 日韩免费毛片| 午夜在线视频免费观看| 欧美伦理91i| 免费观看美女裸体网站| 日韩av免费在线播放| 一区二区国产日产| 麻豆乱码国产一区二区三区| 日韩视频中文字幕| 国产福利一区视频| 欧美一性一乱一交一视频| 久久精品国产亚洲一区二区 | 久久久国产精品一区| 91国偷自产一区二区三区的观看方式| 午夜精品久久久久久久99热浪潮| 久久久综合免费视频| 国产日韩欧美电影在线观看| 欧美日韩一区二区三区在线观看免 | 久久久久久久久久久av| 91精品国产色综合久久不卡98| 日韩欧美一区二| 亚洲欧美日韩综合一区| 中文字幕在线中文| 伊人久久大香线蕉av一区| 久久99亚洲热视| 欧美精品国产精品日韩精品| 欧美成人四级hd版| 久久人人爽人人| 91久久国产婷婷一区二区| 欧美亚洲成人网| 欧美主播一区二区三区美女 久久精品人| 国产精品高潮在线| 国产精品久久久久久av下载红粉 | 国产精品国产亚洲伊人久久| 精品国产自在精品国产浪潮| 精品人伦一区二区三区| 人妻内射一区二区在线视频| 欧美一级特黄aaaaaa在线看片| 国产精品狼人色视频一区| 久久久久久久久久婷婷| 精品人妻少妇一区二区| 欧美理论一区二区| 国内精品视频一区二区三区| 国内久久久精品| 国产日韩欧美视频| 人妻久久久一区二区三区| 欧美日韩精品久久久免费观看| 亚洲永久免费观看| 亚洲最大av在线| 都市激情久久久久久久久久久 | 亚洲最大福利网站| 亚洲日本欧美在线| 日韩在线国产| 欧美日韩国产精品一卡| 国产综合av一区二区三区| 官网99热精品| 国内精品视频久久| 国产一区二区在线免费视频| 青青草原一区二区| 欧美主播一区二区三区美女 久久精品人 | 亚洲综合在线播放| 欧美一区二区三区四区在线| 午夜精品久久久久久99热软件| 国产精品大全| 久久99视频精品| 日日噜噜噜夜夜爽爽| 黄色国产一级视频| 91精品久久久久久久| 国产成人鲁鲁免费视频a| 久久91精品国产| 日本网站免费在线观看| 亚洲伊人成综合成人网| 污污污污污污www网站免费| 欧美一级大片视频| 日韩欧美激情一区二区| 欧美日韩大片一区二区三区| 成人免费网视频| 久草一区二区| 久久精品ww人人做人人爽| 国产精品少妇在线视频| 中文字幕一区二区三区乱码| 日韩精品一区在线视频| 国产精品一香蕉国产线看观看| 国产中文一区二区| 久久久av水蜜桃| 国产a∨精品一区二区三区不卡| 久久在线免费观看视频| 亚洲精品一区二区三区樱花| 欧美 日本 亚洲| 国产精品av在线| 久久av在线播放| 日本不卡视频在线播放| 国产日韩欧美日韩大片| 色青青草原桃花久久综合 | 国产成人免费91av在线| 一区二区免费电影| 免费看a级黄色片| 国产情人节一区| 精品国产拍在线观看|