一種GIS與AutoCAD數(shù)據(jù)交換方法及中間文件的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種GIS與AutoCAD數(shù)據(jù)交換方法及中間文件,屬于地理信息數(shù)據(jù)交換領(lǐng)域。
【背景技術(shù)】
[0002]近年來(lái),GIS技術(shù)已經(jīng)廣泛應(yīng)用于經(jīng)濟(jì)社會(huì)的各個(gè)方面。然而在GIS項(xiàng)目中數(shù)據(jù)錄入與建庫(kù)流程往往要花費(fèi)大量時(shí)間,而且相當(dāng)耗費(fèi)精力。鑒于此將現(xiàn)有的地圖和圖形數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換成為GIS數(shù)據(jù)已經(jīng)成為GIS行業(yè)的普遍要求。GIS地圖數(shù)據(jù)絕大多數(shù)來(lái)源于測(cè)繪部門(mén),由于傳統(tǒng)測(cè)繪行業(yè)大都使用計(jì)算機(jī)輔助設(shè)計(jì)CAD類(lèi)軟件,其中AutoCAD是最普遍最常用的CAD軟件,這就出現(xiàn)了從AutoCAD到GIS的數(shù)據(jù)格式轉(zhuǎn)換問(wèn)題。而且在基礎(chǔ)數(shù)據(jù)的生產(chǎn)過(guò)程中,也有必要將與地理信息相關(guān)的GIS數(shù)據(jù)轉(zhuǎn)化為CAD數(shù)據(jù)。
[0003]CAD數(shù)據(jù)與GIS數(shù)據(jù)的相互轉(zhuǎn)化可以為數(shù)據(jù)采集節(jié)省大量的人力、物力和時(shí)間。盡管大部分GIS軟件都提供了從CAD數(shù)據(jù)轉(zhuǎn)化到GIS數(shù)據(jù)的功能,然而由于不同GIS平臺(tái)間的壁皇,當(dāng)前不同GIS軟件在數(shù)據(jù)存儲(chǔ),元數(shù)據(jù)定義存在不同,缺乏統(tǒng)一的空間數(shù)據(jù)標(biāo)準(zhǔn)。商業(yè)GIS軟件廠商已將各自對(duì)空間數(shù)據(jù)的定義、存儲(chǔ)方式,文件組織結(jié)構(gòu),和數(shù)據(jù)轉(zhuǎn)化的方法等視為其核心技術(shù)加以保護(hù),開(kāi)發(fā)和應(yīng)用人員往往只能通過(guò)系統(tǒng)提供的函數(shù)接口來(lái)操作和訪問(wèn)數(shù)據(jù),而且在GIS數(shù)據(jù)和CAD數(shù)據(jù)的相互轉(zhuǎn)化過(guò)程中普遍存在特征丟失、特征變形、數(shù)據(jù)冗余坐標(biāo)轉(zhuǎn)換偏差等問(wèn)題。
[0004]為解決上述問(wèn)題AutoCAD提供了與外界進(jìn)行數(shù)據(jù)交換的文件(Drawing ExchangeFormat )DXF文件,DXF文件可以存儲(chǔ)為二進(jìn)制格式或ASCII碼格式,一個(gè)完整的DXF文件由標(biāo)題段(HEADER)、類(lèi)段(CLASSES)、符號(hào)表段(TABLES)、塊段(BLOCKS)、圖元段(ENTITIES)、對(duì)象段(OBJECTS)、文件結(jié)束符號(hào)(組碼為O,組值為EOF)。其中包含了所繪圖形的基本信息,應(yīng)用程序定義的類(lèi)的信息,圖形元素的坐標(biāo)和屬性信息、非圖像對(duì)象信息。DXF文件由多行"碼一值〃記錄組成各個(gè)段,DXF在表現(xiàn)圖形要素方面以十分精確,由于AutoCAD現(xiàn)在是最流行的cad系統(tǒng),DXF也被廣泛使用,成為事實(shí)上的標(biāo)準(zhǔn)。然而DXF文件的結(jié)構(gòu)較為復(fù)雜,完整讀取DXF文件也是一項(xiàng)異常繁瑣的工程。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種GIS與AutoCAD數(shù)據(jù)交換方法及中間文件,通過(guò)定義一個(gè)中間文件的標(biāo)準(zhǔn),中間文件只包含了需要數(shù)據(jù)交換的基本信息,保留了圖形要素的空間坐標(biāo)信息和需要的屬性信息,結(jié)構(gòu)簡(jiǎn)明,存儲(chǔ)量小,利用該中間文件,在實(shí)際的數(shù)據(jù)交換過(guò)程中可根據(jù)需要隨時(shí)進(jìn)行拓展,從而能較好的適應(yīng)實(shí)際數(shù)據(jù)交換的需要。
[0006]本發(fā)明為解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:提供了一種GIS與AutoCAD數(shù)據(jù)交換方法,包括以下步驟:
[0007](I)調(diào)用ArcGIS平臺(tái)的 geodatabase 接口、geometry 接口、car to接口和display 接口從GIS系統(tǒng)的空間數(shù)據(jù)庫(kù)或SHP文件中提取圖形要素的空間信息、屬性信息和矢量符號(hào)信息,所述圖形要素包括點(diǎn)、線、面和注記點(diǎn),空間信息為圖形要素的空間坐標(biāo),屬性信息包括圖形要素編碼oid、樣式信息和注記點(diǎn)屬性信息,所述注記點(diǎn)屬性信息包括注記文本字符串和旋轉(zhuǎn)角度,所述矢量符號(hào)信息包括矢量符號(hào)編號(hào)和矢量描述格式;
[0008](2)生成空的中間文件,調(diào)用文件1流接口將步驟(I)提取到的圖形要素的空間信息和屬性信息按照中間文件的格式寫(xiě)入生成的中間文件中各子文件,包括以下過(guò)程:
[0009]點(diǎn)、線、面和注記點(diǎn)的要素編碼oid分別寫(xiě)入中間文件中點(diǎn)文件、線文件、面文件和注記文件的要素實(shí)體號(hào)字段;
[0010]點(diǎn)、線、面和注記點(diǎn)的空間坐標(biāo)分別寫(xiě)入中間文件中點(diǎn)文件的點(diǎn)xy坐標(biāo)字段、線文件的線上點(diǎn)坐標(biāo)串字段、面文件的點(diǎn)坐標(biāo)序列字段和注記文件的注記點(diǎn)Xy坐標(biāo)字段;
[0011]點(diǎn)、線、面和注記點(diǎn)的注記文本字符串和旋轉(zhuǎn)角度分別寫(xiě)入中間文件中注記文件的注記文本字符串字段和角度字段;
[0012]矢量符號(hào)編號(hào)和矢量描述格式分別寫(xiě)入中間文件矢量符號(hào)描述文件的子圖號(hào)字段和矢量描述字段;
[0013]點(diǎn)、線、面和注記點(diǎn)的樣式信息分別寫(xiě)入中間文件中點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件和注記樣式描述文件的各字段,中點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件和注記樣式分別通過(guò)各自的樣式ID分別與點(diǎn)文件、線文件、面文件和注記文件關(guān)聯(lián);
[0014]將各點(diǎn)文件、線文件、面文件和注記文件的文件名寫(xiě)入工程圖層總體描述文件;
[0015]上述點(diǎn)文件、線文件、面文件、注記文件、點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件、注記樣式描述文件和工程圖層總體描述文件均為中間文件的子文件;
[0016](3)調(diào)用1流接口從中間文件各子文件各字段提取待導(dǎo)入的信息,所述待導(dǎo)入的信息包括點(diǎn)文件、線文件、面文件和注記文件中分別記錄的要素實(shí)體號(hào),點(diǎn)文件的點(diǎn)Xy坐標(biāo)、線文件的線上點(diǎn)坐標(biāo)串、面文件的點(diǎn)坐標(biāo)序列和注記文件的注記點(diǎn)Xy坐標(biāo)、注記文本字符串和角度,點(diǎn)文件、線文件、面文件和注記文件中的樣式ID,以及樣式描述文件中的樣式信息;
[0017](4)調(diào)用AutoCAD的二次開(kāi)發(fā)接口將步驟(3)提取出的待導(dǎo)入的信息導(dǎo)入AutoCAD的dwg文件,完成數(shù)據(jù)交換。
[0018]本發(fā)明同時(shí)提供了一種用于所述數(shù)據(jù)交換方法的中間文件,所述中間文件由工程圖層總體描述文件、樣式描述文件、點(diǎn)文件、線文件、面文件以及注記文件組成;其中,
[0019]工程圖層總體描述文件用于記錄點(diǎn)文件、線文件、面文件和注記文件的文件名;
[0020]樣式描述文件包括以下子文件:點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件、注記樣式描述文件和矢量符號(hào)描述文件;其中,
[0021 ]點(diǎn)樣式描述文件用于記錄各個(gè)點(diǎn)要素實(shí)體的樣式信息,點(diǎn)樣式描述文件的字段包括樣式ID、類(lèi)型、點(diǎn)大小、顏色、旋轉(zhuǎn)角度、基點(diǎn)坐標(biāo)、字體索引、字體名和符號(hào)圖片;
[0022]線樣式描述文件用于記錄各個(gè)線要素實(shí)體的樣式信息,線樣式描述文件的字段包括樣式ID、線類(lèi)型、線寬和顏色;
[0023]面樣式描述文件用于記錄各個(gè)面要素實(shí)體的樣式信息,面樣式描述文件的字段包括樣式ID、填充顏色、線型、線寬和邊線顏色;
[0024]注記樣式描述文件用于記錄各個(gè)注記要素實(shí)體的樣式信息,注記樣式描述文件的字段包括樣式ID、字體名、字大小、角度和顏色;
[0025]矢量符號(hào)描述文件的字段包括子圖號(hào)和矢量描述,矢量描述包括以下格式:多邊形、線、圓和圓?。?br>[0026]點(diǎn)文件用于存儲(chǔ)GIS文件中點(diǎn)的坐標(biāo)和樣式信息,點(diǎn)文件的字段包括要素實(shí)體號(hào)、點(diǎn)xy坐標(biāo)和樣式ID;
[0027]線文件用于存儲(chǔ)組成線要素實(shí)體的點(diǎn)的坐標(biāo)和線的樣式信息,即線的起點(diǎn)和終點(diǎn)的坐標(biāo)和線的樣式信息,線文件的字段包括要素實(shí)體號(hào)、線上點(diǎn)坐標(biāo)串和樣式ID;
[0028]面文件用于存儲(chǔ)組成面要素實(shí)體的點(diǎn)的坐標(biāo)信息和面的樣式信息,面文件的字段包括要素實(shí)體號(hào)、點(diǎn)坐標(biāo)序列和樣式ID;
[0029]注記文件用于存儲(chǔ)注記要素實(shí)體的坐標(biāo)信息、注記文本、旋轉(zhuǎn)角度和注記樣式,注記文件的字段包括要素實(shí)體號(hào)、注記點(diǎn)Xy坐標(biāo)、注記文本字符串、樣式ID和角度。
[0030]圖層總體描述文件的后綴名為ly,點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件和注記樣式描述文件的后綴名均為sym,矢量符號(hào)描述文件的后綴名為sub,點(diǎn)文件的后綴名為pnt,線文件的后綴名為lin,面文件的后綴名為pgn,注記文件的后綴名為anno。
[0031]本發(fā)明基于其技術(shù)方案所具有的有益效果在于:
[0032](I)本發(fā)明通過(guò)定義一個(gè)中間文件的標(biāo)準(zhǔn),中間文件只包含了需要數(shù)據(jù)交換的基本信息,保留了圖形要素的空間坐標(biāo)信息和需要的屬性信息,結(jié)構(gòu)簡(jiǎn)明,存儲(chǔ)量小,在實(shí)際的數(shù)據(jù)交換過(guò)程中可根據(jù)需要隨時(shí)進(jìn)行拓展,從而能較好的適應(yīng)實(shí)際數(shù)據(jù)交換的需要;
[0033](2)本發(fā)明的中間文件舍棄了與圖形實(shí)體坐標(biāo)幾何和屬性信息無(wú)關(guān)的其它描述信息,而這些舍棄的信息也是與實(shí)際數(shù)據(jù)轉(zhuǎn)化無(wú)關(guān)的;本發(fā)明將交換文件DXF由單一文件變成一個(gè)中間文件系統(tǒng),該文件系統(tǒng)自然區(qū)分的各圖形實(shí)體的類(lèi)型,在圖形實(shí)體的記錄中一個(gè)實(shí)體為一條記錄,文件結(jié)構(gòu)清晰;
[0034](3)本發(fā)明提供的中間文件是通過(guò)編程的方式進(jìn)行AutoCAD和GIS數(shù)據(jù)的交換、對(duì)中間文件的存儲(chǔ)類(lèi)型沒(méi)有做硬性規(guī)定,在實(shí)際編程過(guò)程中所述中間文件可以是文本文件、二進(jìn)制文件或其他文件類(lèi)型,而且在中間文件中并沒(méi)有定義圖形實(shí)體類(lèi),用戶(hù)可以根據(jù)實(shí)際需要編寫(xiě)程序。
【具體實(shí)施方式】
[0035]下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0036]提供了一種GIS與AutoCAD數(shù)據(jù)交換方法,包括以下步驟:
[0037](I)調(diào)用ArcGIS平臺(tái)的geodatabase 接口、geometry 接口、car to接口 和display 接口從GIS系統(tǒng)的空間數(shù)據(jù)庫(kù)或SHP文件中提取圖形要素的空間信息、屬性信息和矢量符號(hào)信息,所述圖形要素包括點(diǎn)、線、面和注記點(diǎn),空間信息為圖形要素的空間坐標(biāo),屬性信息包括圖形要素編碼oid、樣式信息和注記點(diǎn)屬性信息,所述注記點(diǎn)屬性信息包括注記文本字符串和旋轉(zhuǎn)角度,所述矢量符號(hào)信息包括矢量符號(hào)編號(hào)和矢量描述格式;
[0038](2)生成空的中間文件,調(diào)用文件1流接口將步驟(I)提取到的圖形要素的空間信息和屬性信息按照中間文件的格式寫(xiě)入生成的中間文件中各子文件,包括以下過(guò)程:
[0039]點(diǎn)、線、面和注記點(diǎn)的要素編碼oid分別寫(xiě)入中間文件中點(diǎn)文件、線文件、面文件和注記文件的要素實(shí)體號(hào)字段;
[0040]點(diǎn)、線、面和注記點(diǎn)的空間坐標(biāo)分別寫(xiě)入中間文件中點(diǎn)文件的點(diǎn)xy坐標(biāo)字段、線文件的線上點(diǎn)坐標(biāo)串字段、面文件的點(diǎn)坐標(biāo)序列字段和注記文件的注記點(diǎn)xy坐標(biāo)字段;
[0041]點(diǎn)、線、面和注記點(diǎn)的注記文本字符串和旋轉(zhuǎn)角度分別寫(xiě)入中間文件中注記文件的注記文本字符串字段和角度字段;
[0042]矢量符號(hào)編號(hào)和矢量描述格式分別寫(xiě)入中間文件矢量符號(hào)描述文件的子圖號(hào)字段和矢量描述字段;
[0043]點(diǎn)、線、面和注記點(diǎn)的樣式信息分別寫(xiě)入中間文件中點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件和注記樣式描述文件的各字段,中點(diǎn)樣式描述文件、線樣式描述文件、面樣式描述文件和注記樣式分別通過(guò)各自的樣式ID分別與點(diǎn)文件、線文件、面文件和注記文件關(guān)聯(lián);
[0044]將各點(diǎn)文件、線文件、面文件和注記文件的文件名寫(xiě)入工程圖層總體描述文件;
[0045]上述點(diǎn)文件、線文件、面文件、