久久国产色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| av一区观看| 国产视频99| 免费在线精品视频| 激情成人开心网| 欧美另类一区| 国模精品系列视频| 国产一区二区网| 精品一区二区国产| 日韩免费在线播放| 欧美午夜精品久久久久免费视| 日本网站免费在线观看| 日本高清久久一区二区三区| 日韩成人手机在线| 人妻久久久一区二区三区| 日韩精品一区二区三区外面 | 91高清免费在线观看| 北条麻妃在线视频观看| 99精品一区二区三区的区别| 国产精品 欧美在线| 国产福利一区视频| 视频在线观看99| 色噜噜亚洲精品中文字幕| 久久久久久久久久久久久久久久av | 日本精品免费视频| 日本亚洲欧洲精品| 婷婷亚洲婷婷综合色香五月| 欧美专区一二三| 虎白女粉嫩尤物福利视频| 国产免费亚洲高清| 久久久婷婷一区二区三区不卡| 久久久久在线观看| 国产精品久久精品视| 欧美成人一区在线| 日韩中文字幕免费在线| 青青草视频国产| 国产美女搞久久| 久久综合毛片| 国产精品视频免费一区二区三区 | 欧美精品午夜视频| 视频一区三区| 国内成人精品视频| 91九色极品视频| 国产精品网站视频| 一区二区三区国| 欧美自拍视频在线观看| 成人免费91在线看| 久久久国产精彩视频美女艺术照福利| 欧美成人性色生活仑片| 日本一区二区三区四区在线观看| 黄色国产一级视频| 97精品免费视频| 国产精品日日摸夜夜添夜夜av| 欧美区在线播放| 三年中文高清在线观看第6集| 欧美二区在线| 久久一区免费| 精品久久久久久亚洲| 日韩国产小视频| av在线不卡观看| 国产精品无码人妻一区二区在线| 亚洲精品久久区二区三区蜜桃臀 | 极品粉嫩国产18尤物| 91av在线网站| 精品国产一区二区三区日日嗨 | 亚洲av首页在线| 国产一区深夜福利| 日韩在线免费观看视频| 亚洲欧美日韩国产成人综合一二三区| 欧美日韩亚洲免费| 久久久无码中文字幕久...| 中文一区一区三区免费| 欧美精品久久久久久久久久久| 国产极品尤物在线| 夜夜爽www精品| 国产一区二区在线免费| 国产精品视频中文字幕91| 日韩av高清在线播放| 成年丰满熟妇午夜免费视频| 国产精品视频在线免费观看| 日韩视频在线免费播放| 91精品国产乱码久久久久久久久| 欧美另类第一页| 蜜臀精品一区二区| 久久久久久久少妇| 日韩国产欧美精品| 7777奇米亚洲综合久久| 亚洲最大av网| 成人国产精品久久久久久亚洲| 久久伊人91精品综合网站| 欧美极品jizzhd欧美| 日韩中文字幕免费视频| 日韩欧美激情一区二区| 久久日韩精品| 色综合久久久久久久久五月| 91精品国产沙发| 日韩av高清| 久久久久久久少妇| 日韩欧美黄色大片| 国产成人精品一区二区三区福利| 人人澡人人澡人人看欧美| 久久国产精品 国产精品| 日韩久久久久久久久久久久| 视频直播国产精品| 欧美性大战久久久久xxx| 久久精品国产视频| 欧美日韩亚洲在线| 国产精品美女呻吟| 精品一区国产| 精品久久久久久一区二区里番| 国产欧美高清在线| 九九热视频这里只有精品| 成人精品一二区| 亚洲专区国产精品| 久久伦理网站| 欧美日韩天天操| 国产精品第七影院| 国产精品一区二区你懂得| 亚洲一区二区自拍| 久久国产午夜精品理论片最新版本| 日韩精品极品视频在线观看免费| 国产精品日韩精品| 国产日韩精品视频| 亚洲欧洲精品一区二区 | 日韩中文字幕在线视频| 欧美影院久久久| 精品久久久久久乱码天堂| www国产免费| 日韩免费观看高清| 精品伦理一区二区三区| 91九色视频在线| 男人天堂成人网| 欧美精品久久久久久久久| 131美女爱做视频| 欧美连裤袜在线视频| 欧美激情精品久久久久| 91精品国产成人| 黄色免费观看视频网站| 亚洲一区二区三区香蕉 | 国产精品九九久久久久久久| 99热在线这里只有精品| 欧美日韩国产精品一卡| 在线播放 亚洲| 波霸ol色综合久久| 成人免费在线小视频| 品久久久久久久久久96高清| 欧美精品制服第一页| 国产va亚洲va在线va| 国模吧一区二区三区| 性欧美大战久久久久久久| 欧美成人亚洲成人| 九色自拍视频在线观看| 国产精品一区=区| 日韩美女av在线免费观看| 一区二区三区我不卡| 久久精品国产成人| 久久久亚洲天堂| 成人在线观看a| 欧美在线视频a| 午夜久久久久久久久久久| 久久香蕉国产线看观看av| 国产成人精品免费视频| 成人精品视频在线| 欧美国产激情视频| 日本高清视频精品| 亚洲国产欧美日韩| 国产成人久久久精品一区| 97久久国产亚洲精品超碰热| 国产中文字幕视频在线观看| 人妻内射一区二区在线视频| 亚洲电影一二三区| 国产精品男女猛烈高潮激情| 久久久久久欧美精品色一二三四| 97人人模人人爽人人少妇| 国产色综合一区二区三区| 极品粉嫩国产18尤物| 青草热久免费精品视频| 五月天综合婷婷| 亚洲最大的av网站| 麻豆乱码国产一区二区三区| 久久久成人精品视频| 久久久久这里只有精品| 久久免费看av| 国产精品91在线| aaa免费在线观看| 苍井空浴缸大战猛男120分钟| 国产欧美日韩中文| 精品日韩美女| 国产一二三区在线播放| 国产又粗又爽又黄的视频| 黄色片免费在线观看视频| 女女同性女同一区二区三区91| 欧洲日本亚洲国产区| 欧美一区视频在线| 日本在线观看一区二区| 日韩亚洲欧美精品| 欧美专区第一页| 欧美精品一区三区在线观看| 欧美成人一区二区在线|