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

您的位置:網(wǎng)站首頁 > CAD教程 > 常見問題

C#實現(xiàn)CAD數(shù)據(jù)轉(zhuǎn)shape或mdb

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

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

 

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

 

話不多說了,進(jìn)入主題吧

下面的方法實現(xiàn)了點線面圖層轉(zhuǎn)成Shape文件

 

代碼
 public bool CadDataToShape(string _cadFilePath)
 {        
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對應(yīng)數(shù)據(jù)集
            
            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#分頁標(biāo)題#e#= strFullPath.Substring(index + 1);
                
string DataSaveFilePath=@"D:CADToShape";

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

                
//打開cad數(shù)據(jù)集
                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#分頁標(biāo)題#e#
                    Directory.Delete(DataSaveFilePath 
+ @"\" + fileName);
                }

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

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

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

                IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                
//對CAD文件中的要素進(jìn)行遍歷處理
                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#分頁標(biāo)題#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#分頁標(biāo)題#e#
            }

        }

 

 

下面的方法實現(xiàn)CAD數(shù)據(jù)轉(zhuǎn)成本地的Personal Geodatbase,同時實現(xiàn)了注記圖層的轉(zhuǎn)換

  

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

            
//創(chuàng)建MDB工作空間
            IWorkspaceFactory pAccessWorkSpaceFactory;

            
//這個conversionTools不包含注記圖層的轉(zhuǎn)換
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea = new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            
//ImportCADAnnotation功能,實現(xiàn)導(dǎo)入注記圖層
            ESRI.ArcGIS.ConversionTools.ImportCADAnnotation importCADAnno = new ImportCADAnnotation();
            
try
            {                #p#分頁標(biāo)題#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數(shù)據(jù)集
                    pWorkspaceFactory = new CadWorkspaceFactoryClass();
                    pFeatureWorkspace 
= (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);

                    
//創(chuàng)建mdb(personal geodatabase)
                    pAccessWorkSpaceFactory = new AccessWorkspaceFactoryClass();
                    
if (File.Exists(DataSaveFilePath +#p#分頁標(biāo)題#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文件中的要素進(jìn)行遍歷處理
                    int count = pFeatureClassContainer.ClassCount;

                    
for (#p#分頁標(biāo)題#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#分頁標(biāo)題#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#調(diào)用了Geoprocessor 執(zhí)行了ConversionTools.FeatureClass to FeatureClass工具,這是不是有點像用arctoolbox中的功能!這里就可以擴(kuò)展用Geoprocessor 實現(xiàn)其他arctoolbox中能夠先實現(xiàn)的功能!#p#分頁標(biāo)題#e#

 

這里也可以將上面的方法里的參數(shù)改為多個cad數(shù)據(jù)路徑,實現(xiàn)批量轉(zhuǎn)數(shù)據(jù)!


久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区
国产乱码精品一区二区三区卡| 黄色片网址在线观看| 久久国产精品亚洲| 国产在线观看欧美| 尤物av无码色av无码| 久久综合色一本| 日日噜噜噜夜夜爽爽 | 日韩成人在线资源| 国产成人一区二| 黄色a级在线观看| 日本在线播放不卡| 日本精品久久久久久久久久| 久久av.com| 91av中文字幕| 欧美日韩在线不卡视频| 久久久久久国产精品| 欧美激情亚洲另类| 日韩中文有码在线视频| 国产亚洲精品美女久久久m| 日韩在线一级片| 日本高清一区| 欧美日韩在线不卡一区| 国产偷久久久精品专区| 97免费视频观看| 国产一区二区中文字幕免费看| 欧美变态另类刺激| 国产美女直播视频一区| 欧美性大战久久久久| 亚洲一区亚洲二区| 国产精品国三级国产av| 久久精品aaaaaa毛片| 成人精品在线观看| 欧美 日韩 国产在线| 免费国产一区二区| 日本韩国欧美精品大片卡二| 欧美精品无码一区二区三区| 国产免费一区二区| 久久精品人人做人人爽电影| 国产精品极品美女在线观看免费| 中文字幕在线中文字幕日亚韩一区| 日韩一区av在线| 精品久久中出| 日韩福利二区| 国产精品夜夜夜一区二区三区尤| 久久噜噜噜精品国产亚洲综合| 久久精品99国产精品酒店日本| 久久久久久网站| 久久99精品久久久水蜜桃| 国产精品免费一区二区| 日韩亚洲欧美中文高清在线| 国产精品高潮呻吟久久av无限 | 久久亚洲精品欧美| 国产精品伦子伦免费视频| 久久久久久久香蕉网| 久久中国妇女中文字幕| 日本久久91av| av无码精品一区二区三区| 99国内精品久久久久久久软件| 北条麻妃一区二区三区中文字幕| 欧美激情在线一区| 欧美日韩大片一区二区三区| 国产精品18久久久久久麻辣 | 日韩和欧美的一区二区| 日本国产一区二区三区| 国产最新免费视频| 久久久久久久激情视频| 日韩一区免费观看| 日本欧美精品久久久| 国产美女搞久久| 国产精品久久久久久久app| 日本精品免费在线观看| 国产精品97在线| 国产超级av在线| 一本一道久久久a久久久精品91 | 中文字幕不卡每日更新1区2区| 人禽交欧美网站免费| 91久热免费在线视频| 最新中文字幕久久| 国产欧美一区二区三区在线看| 国产精品久久久亚洲| 欧美久久在线| 国产成人啪精品视频免费网| 日本国产在线播放| 九九九九久久久久| 日本不卡一区二区三区四区 | 97久久国产亚洲精品超碰热| 欧美精品情趣视频| 国产欧美日本在线| 欧美精品在线免费| 国产一区免费观看| 精品免费日产一区一区三区免费 | 日韩av色在线| 久久婷婷开心| 日本视频一区二区在线观看| 国产高清在线不卡| 日韩精品在线观看av| 国产xxxxx视频| 人妻少妇精品无码专区二区| 日韩色av导航| 欧洲一区二区在线| 蜜桃传媒一区二区三区| 久久精品人人爽| 亚洲精品中文字幕在线| 欧美一区二区影院| www日韩欧美| 国内精品久久久| 九九热r在线视频精品| 国产精品一区二区三区成人| 亚洲欧美成人一区| 国产ts人妖一区二区三区| 日韩精品一区二区三区外面| 日韩在线观看免费高清| 欧美凹凸一区二区三区视频| 久久综合免费视频| 国产精品一区二区a| 五月天在线免费视频| 久久久久久久久电影| 国产中文字幕在线免费观看| 中文字幕在线观看一区二区三区| 久久一区免费| 欧美一区二区中文字幕| 欧美精品午夜视频| 97国产在线播放| 日韩中文不卡| 国产精品日韩一区二区三区| 国产精品亚洲аv天堂网| 日韩av高清在线看片| 国产精品久久久av久久久| 99久久精品无码一区二区毛片| 视频一区不卡| 久久这里有精品视频| 91精品久久久久久久久青青| 欧美日韩国产一二| 亚洲一区二区三区在线观看视频| 色妞在线综合亚洲欧美| 草b视频在线观看| 狠狠色综合欧美激情| 亚洲不卡中文字幕| 国产精品久久91| 久久偷看各类wc女厕嘘嘘偷窃| 国产一区亚洲二区三区| 日本高清视频精品| 亚洲图色在线| 国产精品美女在线| 7777在线视频| 国产免费一区视频观看免费| 欧美综合第一页| 午夜视频在线瓜伦| 国产99视频在线观看| 久久久国产一区| 久久久999视频| 波多野结衣精品久久| 国产又粗又长又爽视频| 青青视频免费在线观看| 亚洲精品国产精品国自产观看| 欧美大成色www永久网站婷| 国产成人精品在线| 国产v片免费观看| 91精品啪在线观看麻豆免费| 精品婷婷色一区二区三区蜜桃| 日韩欧美亚洲日产国产| 午夜欧美大片免费观看| 一区二区三区日韩视频| 欧美成aaa人片免费看| 久久精品亚洲精品| 日韩在线视频播放| 国产激情综合五月久久| 97国产精品久久| 成人乱人伦精品视频在线观看| 精品无人区一区二区三区竹菊| 欧美日韩dvd| 人妻夜夜添夜夜无码av| 日本一区不卡| 日本最新一区二区三区视频观看| 一区二区三区在线观看www| 欧美乱妇高清无乱码| 国产精品黄色av| 久久艹在线视频| 国产精品高清一区二区三区| 国产精品久久二区| 国产精品电影网站| 国产精品乱码| 国产精品久久久对白| 国产精品久久久久秋霞鲁丝| 精品国产一区二区在线| 久久视频精品在线| 国产精品美女www爽爽爽视频| 日韩视频一区在线| 久久精品国产欧美激情| 日韩综合中文字幕| 久久精品99国产精品酒店日本| 久久人人爽亚洲精品天堂| 久久色免费在线视频| 国产精品二区三区四区| 欧美成人午夜剧场免费观看| 精品蜜桃传媒| 亚洲一区二区三区香蕉| 欧美一级视频免费看| 日本不卡视频在线播放| 欧日韩不卡在线视频|