国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ArcEngine的CAD數(shù)據(jù)與ArcGIS數(shù)據(jù)互轉(zhuǎn)

2014-07-25 11:29任學申張月香
鐵道勘察 2014年5期
關(guān)鍵詞:圖層代碼編碼

任學申 張月香

(山東正元地球物理信息技術(shù)有限公司,山東濟南 250101)

基于ArcEngine的CAD數(shù)據(jù)與ArcGIS數(shù)據(jù)互轉(zhuǎn)

任學申 張月香

(山東正元地球物理信息技術(shù)有限公司,山東濟南 250101)

AutoCAD和ArcGIS兩種軟件在數(shù)據(jù)處理上各有其優(yōu)點,為了充分利用這兩種軟件的數(shù)據(jù),降低數(shù)據(jù)采集的費用,實現(xiàn)數(shù)據(jù)共享,以標準CASS的基礎(chǔ)地形圖為例,對AutoCAD數(shù)據(jù)與ArcGIS數(shù)據(jù)的無缺失相互轉(zhuǎn)換進行探討。

ArcEngine CASS ArcGIS 相互轉(zhuǎn)換

ArcGIS有強大的數(shù)據(jù)分析、數(shù)據(jù)管理等功能,在建立空間數(shù)據(jù)庫方面有其得天獨厚的優(yōu)勢,但ArcGIS也具有圖層疊加不便、屏幕刷新緩慢、繪圖功能不足等缺點。AutoCAD具有強大的繪圖功能和處理矢量圖形的能力,大部分地形圖采用了AutoCAD為制圖平臺,不過,其處理數(shù)據(jù)間的拓撲關(guān)系較為簡單,處理對象屬性方面及空間分析功能欠缺。因此,為了使ArcGIS和AutoCAD軟件平臺發(fā)揮其最大的優(yōu)點,進行CAD數(shù)據(jù)與GIS數(shù)據(jù)相互轉(zhuǎn)換方法的研究具有重要現(xiàn)實意義。

AutoCAD數(shù)據(jù)和ArcGIS數(shù)據(jù)在數(shù)據(jù)模型方面存在很大差異,兩種軟件描述數(shù)據(jù)的方式不同。傳統(tǒng)的數(shù)據(jù)轉(zhuǎn)換方法只考慮如何把AutoCAD數(shù)據(jù)轉(zhuǎn)換為ArcGIS數(shù)據(jù),而沒有考慮在轉(zhuǎn)換之后的ArcGIS數(shù)據(jù)如何再轉(zhuǎn)為CAD數(shù)據(jù),使轉(zhuǎn)換之后的CAD數(shù)據(jù)與原始CAD數(shù)據(jù)圖形屬性無丟失。本文探討標準CASS的基礎(chǔ)地形圖與 GIS數(shù)據(jù)相互轉(zhuǎn)換的邏輯組織及解決方案。

1 CAD與ArcGIS數(shù)據(jù)格式的差異

1.1 CAD數(shù)據(jù)格式

在AutoCAD數(shù)據(jù)中,包含了多種類型的圖形對象,包括:點、線段、折線、文字等,其中點、線為基本元素,其他的是由基本元素組合形成的復雜元素,這些元素都是矢量形式的,即由一組或多組X、Y、Z坐標確定圖形元素的幾何位置和形狀。在CAD的一個圖層上可以存放多種類型的圖形對象,而且每個圖形對象都可以設(shè)置獨有的顏色、線形、樣式等。

DXF 是Autodesk公司開發(fā)的用于AutoCAD與其他軟件之間進行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式。DXF是一種開放的矢量數(shù)據(jù)格式,可以分為兩類:ASCII格式和二進制格式;ASCII可讀性好,但占有空間較大;二進制格式占有空間小、讀取速度快。DXF在表現(xiàn)圖形的大小方面十分精確,包含了AutoCAD圖形文件的所有信息。

1.2 ArcGIS數(shù)據(jù)格式

Geodatabase是一種采用標準關(guān)系數(shù)據(jù)庫技術(shù)來表現(xiàn)地理信息的數(shù)據(jù)模型。目前有兩種Geodatabase結(jié)構(gòu):Personal Geodatabase和Multiuser Geodatabase。Personal Geodatabase更像基于文件的工作空間,使用微軟的Access數(shù)據(jù)庫同時存儲空間數(shù)據(jù)和屬性數(shù)據(jù),數(shù)據(jù)庫存儲量大小可伸縮,最大為2GB。Personal Geodatabase支持單用戶編輯,不支持版本管理。

2 CAD與GIS數(shù)據(jù)之間對應關(guān)系

2.1 圖層對應關(guān)系

在CAD中,不同的地理要素放在不同的圖層,比如水系、居民地、植被等,相同地理要素的注記、點、線、塊都是放在同一圖層,即一個圖層里可以放置擁有相同性質(zhì)的若干元素,如一幅地形圖中的水系可以放在同一層中,居民地又可以放在另一層中。ArcGIS圖層由點、線、面、注記四種類型的數(shù)據(jù)組成,且每一個圖層里面只能存放一種類型的數(shù)據(jù),如點圖層只能存放點數(shù)據(jù),線圖層只能存放線數(shù)據(jù)。

根據(jù)CASS標準圖層及基礎(chǔ)地理信息要素分類及代碼(GB/T 13923-2006)對數(shù)據(jù)進行分類,共分為8大類,然后根據(jù)點、線、面、注記每類數(shù)據(jù)的要求,分為若干個不同類型的層,如表1所示。

表1 CASS圖層與ArcGIS圖層對應

2.2 要素對應關(guān)系

AutoCAD數(shù)據(jù)與ArcGIS數(shù)據(jù)在要素結(jié)構(gòu)上有所不同,但兩個系統(tǒng)對要素的表達方式基本相同,即都是點、線、注記及其組合。

AutoCAD 和 ArcGIS之間的數(shù)據(jù)轉(zhuǎn)換可以轉(zhuǎn)化為要素之間的對應轉(zhuǎn)換,其轉(zhuǎn)換關(guān)系如表2所示。

表2 AutoCAD要素與ArcGIS要素對應關(guān)系

2.3 結(jié)構(gòu)對應關(guān)系

表3 GIS數(shù)據(jù)結(jié)構(gòu)

在標準CASS數(shù)據(jù)轉(zhuǎn)換為ArcGIS數(shù)據(jù)時,需要記錄標準CASS數(shù)據(jù)的屬性信息,以便在ArcGIS轉(zhuǎn)換為標準CASS數(shù)據(jù)時使用,其ArcGIS數(shù)據(jù)結(jié)構(gòu)如表3所示。

2.4 編碼對應關(guān)系

GIS要素的分類編碼結(jié)構(gòu),在大類、中類、小類和子類的基礎(chǔ)上添加幾何特征碼及圖形特征碼,用以描述要素對象的幾何特征和圖形特征。

GIS要素大類、中類、小類的分類代碼采用基礎(chǔ)地理信息要素分類及代碼(GB/T 13923—2006)中規(guī)定的分類代碼;要素子類的分類代碼統(tǒng)一采用9位十進制數(shù)字碼,分別為按數(shù)字順序排列的大類碼、中類碼、小類碼、子類碼、幾何特征碼和圖形特征碼,具體代碼結(jié)構(gòu)見圖1。

圖1 要素代碼結(jié)構(gòu)

根據(jù)標準CASS數(shù)據(jù)的圖形、代碼描述和國家基本比例尺地圖圖式,建立兩系統(tǒng)的對照,如表4所示。

表4 標準CASS編碼與GIS編碼對應關(guān)系

建立編碼對應關(guān)系是為了在對ArcGIS符號化時,與AutoCAD數(shù)據(jù)保持一致,也是為了符合基礎(chǔ)地理信息要素的建庫標準。

3 數(shù)據(jù)轉(zhuǎn)換

3.1 AutoCAD轉(zhuǎn)ArcGIS

(1)轉(zhuǎn)換之前預處理

當轉(zhuǎn)換后的DXF中存在注記時,系統(tǒng)很有可能讀取到的內(nèi)容是亂碼,因此需要轉(zhuǎn)換前把DXF文件使用記事本打開,然后使用UTF-8編碼另存為一份DXF文件,另存的DXF文件,可能使用AutoCAD打不開,因為記事本把DXF的文件頭破壞掉了,但不影響轉(zhuǎn)換,轉(zhuǎn)換之前標準CASS數(shù)據(jù)如圖2所示。

圖2 標準CASS數(shù)據(jù)

(2)轉(zhuǎn)換方法及實現(xiàn)

目前國內(nèi)外實現(xiàn)數(shù)據(jù)轉(zhuǎn)換的方式大致有四種:外部數(shù)據(jù)交換模式、直接數(shù)據(jù)訪問模式、空間數(shù)據(jù)互操作模式、數(shù)據(jù)轉(zhuǎn)換平臺,本文采用第一種方法,即外部數(shù)據(jù)交換模式。首先把CASS的CAD數(shù)據(jù)轉(zhuǎn)換為DXF格式的數(shù)據(jù),使用程序讀取DXF文件中的明碼,逐個分析,然后使用基于ArcEngine中的接口創(chuàng)建數(shù)據(jù)庫、圖層、要素等,逐個把實體記錄下來。關(guān)鍵代碼如下:

#region按類型讀取

switch (sValue)

{

case "MTEXT":

sFtType="注記";

VbContinue=ReadDXFMText(i, iEdSec, ref tPntInfoArr, ref sFldVal, ref Anno, ref Height, ref Angle, ref iFAliType);

bContinue=CreateMText(sLyrName, tPntInfoArr, sFldVal, Anno, Height, Angle, iFAliType);

break;

case "TEXT":

sFtType="注記";

bContinue=ReadDXFText(i, iEdSec, ref tPntInfoArr, ref sFldVal, ref Anno, ref Height, ref Angle, ref iHAliType, ref iVAliType);

bContinue=CreateText(sLyrName, tPntInfoArr, sFldVal, Anno, Height, Angle, iHAliType, iVAliType);

break;

case "POINT":

case "INSERT":

sFtType="點";

bContinue=ReadDXFPoint(i, iEdSec, ref tPntInfoArr, ref sFldVal);

bContinue=CreateGeoFeature(sLyrName, sFtType, i, iClose, tPntInfoArr, sFldVal);

break;

……

}

#endregion

轉(zhuǎn)換之后的ArcGIS數(shù)據(jù)如圖3所示。

圖3 轉(zhuǎn)換后的ArcGIS數(shù)據(jù)

3.2 ArcGIS轉(zhuǎn)AutoCAD

ArcGIS數(shù)據(jù)轉(zhuǎn)換為AutoCAD數(shù)據(jù),需要注意的是轉(zhuǎn)換后的AutoCAD文件中,數(shù)據(jù)的位置、顏色、樣式、屬性等信息,需同原始CAD中數(shù)據(jù)相一致。

while (pFeature !=null)

{

string EntityType=GetFiledValue(clsFieldSysName.EntityType);

switch (EntityType)

{

case "MTEXT":

case "TEXT":

WriteTextEnt(pFeature.ShapeCopy as IPoint, sCADLayer, GetFiledValue(clsFieldSysName.FontText), GetFiledValue(clsFieldSysName.FontX), GetFiledValue(clsFieldSysName.FontY), GetFiledValue(clsFieldSysName.FontZ), GetFiledValue(clsFieldSysName.H), GetFiledValue(clsFieldSysName.FontName), GetFiledValue(clsFieldSysName.FontCenter), GetFiledValue(clsFieldSysName.FontHor), GetFiledValue(clsFieldSysName.FontVer), GetFiledValue(clsFieldSysName.FontHight), GetFiledValue(clsFieldSysName.FontWidth), GetFiledValue(clsFieldSysName.EntityColor), GetFiledValue(clsFieldSysName.CADAngle));

break;

case "POINT":

case "INSERT":

WritePointEnt(pFeature.ShapeCopy as IPoint, sCADLayer, GetFiledValue(clsFieldSysName.BlockName), GetFiledValue(clsFieldSysName.CASSCode), GetFiledValue(clsFieldSysName.PointXScale), GetFiledValue(clsFieldSysName.PointYScale), GetFiledValue(clsFieldSysName.PointZScale), GetFiledValue(clsFieldSysName.CADAngle), GetFiledValue(clsFieldSysName.H), GetFiledValue(clsFieldSysName.EntityColor), GetFiledValue(clsFieldSysName.AttHave));

break;

……

}

pFeature=pCursor.NextFeature();

}

轉(zhuǎn)換后的AutoCAD數(shù)據(jù)如圖4所示。

圖4 轉(zhuǎn)換后的AutoCAD數(shù)據(jù)

4 結(jié)論

(1)標準CASS的基礎(chǔ)地形圖與 GIS數(shù)據(jù)相互轉(zhuǎn)換,前提是GIS數(shù)據(jù)來源于CAD數(shù)據(jù),或者具有CAD數(shù)據(jù)的一些圖形信息。

(2)標準CASS的基礎(chǔ)地形圖轉(zhuǎn)換為GIS數(shù)據(jù),需要使用CAD的中間格式DXF,且DXF文件的編碼格式要明確。

(3)標準CASS數(shù)據(jù)的編碼需要與基礎(chǔ)地理信息要素代碼對應,以便對GIS數(shù)據(jù)符號化。

(4)GIS數(shù)據(jù)轉(zhuǎn)換為標準CASS數(shù)據(jù)需要DXF模板中存在較全的塊名、線形及字體。

(5)實現(xiàn)標準CASS數(shù)據(jù)到GIS數(shù)據(jù),再到標準CASS數(shù)據(jù)無信息丟失的轉(zhuǎn)換,不但實現(xiàn)了兩種數(shù)據(jù)的共享,也降低了數(shù)據(jù)采集的費用,加大了數(shù)據(jù)的利用率。

[1] 郭敏,劉長星.AutoCAD向GIS數(shù)據(jù)轉(zhuǎn)換方法的研究[D].西安:西安科技大學測繪學院,2009

[2] 黨安榮,賈海峰,易善楨,等.ArcGIS8 Desktop地理信息系統(tǒng)應用指南[M].北京:清華大學出版社,2005

[3] 杜輝.基于FME的ARCGIS與AUTOCAD空間數(shù)據(jù)交換[J].鐵道勘察,2012(3)

[4] 劉永強.AutoCAD與ArcGIS數(shù)據(jù)轉(zhuǎn)換方法研究[J].測繪科學,2009(S2)

[5] 鄂潔,陳婕.AutoCAD和ArcGIS間的數(shù)據(jù)轉(zhuǎn)換研究[J].軟件導刊,2007(17)

[6] 林曉清,楊素鳳.COVERAGE格式數(shù)據(jù)和AOTUCAD格式數(shù)據(jù)間的轉(zhuǎn)換[J].鐵道勘察,2011(3)

[7] 陳樂書,劉連勝,王長委.CAD到GIS數(shù)據(jù)格式轉(zhuǎn)換的探討[J].安徽農(nóng)業(yè)科學,2009(18)

[8] 曹國云,張偉.AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)轉(zhuǎn)換技術(shù)和方法的研究[J].安徽農(nóng)業(yè)科學,2006(22)

[9] 肖鳴.CAD數(shù)據(jù)向GIS空間數(shù)據(jù)庫轉(zhuǎn)換方法的實現(xiàn)[J].測繪信息與工程,2007(3)

InterconversionofCADdataandGISdatabasedonArcEngine

REN Xue-shen ZHANG Yue-xiang

2014-07-10

任學申(1983—),男,2010年畢業(yè)于江西理工大學地理信息系統(tǒng)專業(yè),碩士,工程師。

1672-7479(2014)05-0008-04

P208

: A

猜你喜歡
圖層代碼編碼
基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達圖像配準
《全元詩》未編碼疑難字考辨十五則
子帶編碼在圖像壓縮編碼中的應用
Genome and healthcare
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
解密照片合成利器圖層混合模式
跟我學添加真實的光照效果