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

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

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

時(shí)間:2010-11-01 10:02:14 來(lái)源:未知

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

 

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

 

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

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

 

代碼
 public bool CadDataToShape(string _cadFilePath)
 {        
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對(duì)應(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#分頁(yè)標(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#分頁(yè)標(biāo)題#e#
                    Directory.Delete(DataSaveFilePath 
+ @"\" + fileName);
                }

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

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

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

                IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                
//對(duì)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#分頁(yè)標(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#分頁(yè)標(biāo)題#e#
            }

        }

 

 

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

  

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

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

            
//這個(gè)conversionTools不包含注記圖層的轉(zhuǎn)換
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea = new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            
//ImportCADAnnotation功能,實(shí)現(xiàn)導(dǎo)入注記圖層
            ESRI.ArcGIS.ConversionTools.ImportCADAnnotation importCADAnno = new ImportCADAnnotation();
            
try
            {                #p#分頁(yè)標(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#分頁(yè)標(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);
                    
//打開一個(gè)要素集
                    pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);

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

                    
for (#p#分頁(yè)標(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#分頁(yè)標(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();           
            }            
        }

 

 

從上面的代碼可以看出,實(shí)際C#調(diào)用了Geoprocessor 執(zhí)行了ConversionTools.FeatureClass to FeatureClass工具,這是不是有點(diǎn)像用arctoolbox中的功能!這里就可以擴(kuò)展用Geoprocessor 實(shí)現(xiàn)其他arctoolbox中能夠先實(shí)現(xiàn)的功能!#p#分頁(yè)標(biāo)題#e#

 

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


久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区
国产精品999视频| 成人做爽爽免费视频| 黄色av网址在线播放| 久久亚洲综合网| 一区二区精品免费视频| 国产综合色香蕉精品| 日韩在线视频免费观看高清中文| 亚洲综合在线播放| 国产一区二区三区小说| 久久精品国产综合精品| 欧美一区二区三区精品电影| 91久久久在线| 亚洲黄色一区二区三区| 国产美女作爱全过程免费视频| 国产精品青青草| 欧美中文娱乐网| 久久久久久久久久国产| 日本丰满少妇黄大片在线观看| 久久久免费看| 日本毛片在线免费观看| 九色91国产| 日产精品久久久一区二区福利| 91精品久久久久久久久久久久久 | 日韩人妻精品一区二区三区| 91成人免费观看| 亚洲国产精品影视| 久久影院理伦片| 日本一区二区在线| 日韩亚洲欧美中文高清在线| 人妻精品无码一区二区三区| 日韩中文字幕在线视频播放| 欧美亚州在线观看| 国产精品手机在线| 国产真实乱子伦| 又粗又黑又大的吊av| 国产精品一区二区在线观看| 欧美激情一二三| 9191国产视频| 青青草国产精品| 国产精品区一区二区三含羞草 | 国产欧美日韩精品丝袜高跟鞋| 精品久久久久久中文字幕动漫| 国产精品自拍网| 亚洲高清123| 国产成a人亚洲精v品在线观看| 日韩a在线播放| 国产激情在线看| 欧日韩在线观看| 超在线视频97| 91精品国产综合久久久久久蜜臀 | 国产一区二区在线网站 | 国内精品久久久久影院优| 久久91亚洲精品中文字幕奶水| 成人av一级片| 日韩少妇中文字幕| 国产精品久久久久久久久久久久| 国产欧美va欧美va香蕉在线| 偷拍视频一区二区| 91久久国产婷婷一区二区| 日韩免费高清在线观看| 插插插亚洲综合网| 国产极品粉嫩福利姬萌白酱| 韩日精品中文字幕| 亚洲精品欧美极品| 国产精品人成电影| 91久色国产| 欧美日韩亚洲一区二区三区四区| 精品毛片久久久久久| 久久伦理网站| 国产又黄又大又粗视频| 欧美一区二区三区四区在线观看地址| 国产精品区免费视频| 91精品免费看| 欧美精品一区二区三区三州| 九九热r在线视频精品| 久久久久久亚洲精品| 国产一区 在线播放| 日产日韩在线亚洲欧美| 欧美成年人视频网站| 久久久免费视频网站| 精品一区二区三区自拍图片区| 亚洲 国产 日韩 综合一区| 国产精品视频区| 国产精欧美一区二区三区| 免费黄色福利视频| 日韩av大片在线| 欧美精品久久久久久久免费观看| 日韩有码片在线观看| 国产免费一区二区三区在线能观看 | 人妻无码一区二区三区四区| 欧美激情亚洲视频| 久久久精品国产亚洲| 久久免费成人精品视频| 成人中文字幕av| 国产综合av在线| 欧美中文字幕在线观看| 亚洲人成77777| 欧美日产国产成人免费图片| 久久久国产一区二区三区| 99久久国产宗和精品1上映 | 九九久久精品一区| 久久精品国产亚洲7777| 国产高清不卡无码视频| 成人一级生活片| 国内精品视频一区二区三区| 日本精品视频网站| 懂色一区二区三区av片| 伊人久久av导航| 伊人精品久久久久7777| 一区二区三区四区免费观看| 久久这里只有精品99| 国产精品久久久一区| 久久成人免费观看| 7777精品视频| 777久久精品一区二区三区无码| 成人a视频在线观看| 国产精品一码二码三码在线| 国产日韩精品推荐| 国产三区精品| 国产免费毛卡片| 国产精品一区二区三区久久久| 精品视频在线观看一区二区| 狠狠色综合网站久久久久久久| 欧美日韩精品久久久免费观看| 日韩视频在线视频| 日韩中文字幕在线视频观看| 国产精品美女在线| 久久精品91久久香蕉加勒比| 国产成人一区二区三区电影| 91精品久久香蕉国产线看观看| 成人动漫在线视频| 成人免费在线网址| 国产精品专区第二| 国产一区二区网| 国产在线播放一区二区| 国模杨依粉嫩蝴蝶150p| 欧美日韩在线成人| 青青影院一区二区三区四区| 视频一区二区在线观看| 亚洲a级在线播放观看| 在线观看成人一级片| 一本久道中文无码字幕av| 国产精品美女在线播放| 久热99视频在线观看| 久久久av一区| 国产精品三级网站| 国产精品成人久久电影| 久久久久久12| 亚洲天堂第一区| 亚洲精品一区二区毛豆| 亚洲a成v人在线观看| 少妇高潮喷水久久久久久久久久| 日韩久久不卡| 欧美精品一区二区视频| 麻豆传媒一区二区| 国产欧美一区二区三区久久人妖| 国产日韩在线播放| 国产精品一区二区三区在线 | 久久一区二区精品| 国产激情在线看| 久久久久久网站| 国产成人久久婷婷精品流白浆| 国产精品高清在线观看| 色综合久久精品亚洲国产 | 国产在线资源一区| 精品网站在线看| 国产伦精品一区| 成人av在线网址| 久久久久久久久国产精品| 久久视频在线看| 欧美精品国产精品日韩精品| 日韩一区国产在线观看| 日韩欧美亚洲区| 国产日本欧美在线观看| 97久久精品人人澡人人爽缅北| 久久av喷吹av高潮av| 国产精品久久久久久久久久久久 | 国产精品久久久久久搜索| 精品综合久久久久久97| 亚洲精品一区二区三区樱花| 日本不卡免费高清视频| 红桃av在线播放| 国产高清视频一区三区| 国产精品国产自产拍高清av水多| 精品乱码一区| 污视频在线免费观看一区二区三区| 日本a级片电影一区二区| 欧洲熟妇精品视频| 99视频网站| 精品国产拍在线观看| 中文字幕欧美日韩一区二区| 视频在线99re| 日韩精品国内| 91免费人成网站在线观看18| 精品国产自在精品国产浪潮| 亚洲自拍小视频| 黄色大片中文字幕| 国产主播欧美精品| 国产成人无码a区在线观看视频| 一区国产精品|