一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法
【專利摘要】本發(fā)明公開了一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,包括以下步驟:S1.在AutoCAD軟件中打開待處理的圖形文檔,對圖形文檔里的所有圖形對象進行ID身份標定;S2.對所述圖形對象進行文本標記;S3.對所述圖形對象的基本屬性進行采集;S4.建立空間數(shù)據(jù)庫轉(zhuǎn)換、存儲數(shù)據(jù)。本發(fā)明從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)及時轉(zhuǎn)換和共享;轉(zhuǎn)換后的圖形保留了在AutoCAD里的所有信息(包括基本屬性和擴展屬性);能夠根據(jù)不同的精度要求控制轉(zhuǎn)換的數(shù)據(jù)量大??;擴大了AutoCAD數(shù)據(jù)的應(yīng)用范圍。
【專利說明】—種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)轉(zhuǎn)換方法,特別是涉及一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法。
【背景技術(shù)】
[0002]WKT(Well-known text)是一種文本標記語言,用于表示矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉(zhuǎn)換。它的二進制表示方式,亦即WKB(well-known binary)則勝于在傳輸和在數(shù)據(jù)庫中存儲相同的信息。該格式由開放地理空間聯(lián)盟(OGC)制定。
[0003]WKT可以表示的幾何對象包括:點,線,多邊形,TIN(不規(guī)則三角網(wǎng))及多面體。可以通過幾何集合的方式來表示不同維度的幾何對象。幾何物體的坐標可以是2D (X,y),3D (x, y, z),4D (x, y, z, m),加上一個屬于線性參照系統(tǒng)的m值。
[0004]以下為幾何WKT字串樣例:
[0005]POINT (6 10)
[0006]LINESTRING(3 4,10 50,20 25)
[0007]POLYGON ((I 1,5 1,5 5,I 5,I 1),(2 2,2 3,3 3,3 2,2 2))
[0008]MULTIPOINT (3.5 5.6,4.8 10.5)
[0009]MULTILINESTRING((3 4, 10 50, 20 25),(-5 -8,-10 -8,-15 -4))
[0010]MULTIPOLYGON(((I 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,92,94,6 3)))
[0011]GE0METRYC0LLECT10N(POINT(4 6),LINESTRING(4 6,7 10))
[0012]POINT ZM (I I 5 60)
[0013]POINT M (I I 80)
[0014]POINT EMPTY
[0015]MULTIPOLYGON EMPTY
[0016]Geometry:平面空間數(shù)據(jù)類型,在SQL Server中作為公共語言運行時(CLR)數(shù)據(jù)類型實現(xiàn)。此類型表示歐幾里得(平面)坐標系中的數(shù)據(jù)。SQL Server支持Geometry空間數(shù)據(jù)類型的一組方法。這些方法包括開放地理空間信息聯(lián)盟(OGC)標準和對該標準的一組Microsoft擴展所定義的Geometry方法。從SQL Server2008版本開始就支持Geometry這一數(shù)據(jù)類型。WKT文本字符串可直接賦值給Geometry數(shù)據(jù)類型。
[0017]而AutoCAD強調(diào)的是制圖要素的符號化表示和繪圖功能的豐富和靈活性,AutoCAD數(shù)據(jù)到GIS數(shù)據(jù)的轉(zhuǎn)換一直是一個瓶頸,主要表現(xiàn)在以下幾個方面:
[0018]1、數(shù)據(jù)轉(zhuǎn)換需要借助第三方工具,不能實現(xiàn)從AutoCAD到GIS空間數(shù)據(jù)的及時轉(zhuǎn)換和共享;
[0019]2、數(shù)據(jù)轉(zhuǎn)換時中間數(shù)據(jù)較多、耗內(nèi)存,轉(zhuǎn)換后的數(shù)據(jù)沉余度大;
[0020]3、數(shù)據(jù)轉(zhuǎn)換后丟失了圖層、顏色、線型、精度等;
[0021]4、數(shù)據(jù)轉(zhuǎn)換后丟失自定義擴展屬性。
【發(fā)明內(nèi)容】
[0022]本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題,特別創(chuàng)新地提出了一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法。
[0023]為了實現(xiàn)本發(fā)明的上述目的,本發(fā)明提供了一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,包括以下步驟:
[0024]SI,在AutoCAD軟件中打開待處理的圖形文檔,對圖形文檔里的所有圖形對象進行ID身份標定;
[0025]S2,對所述圖形對象進行文本標記;
[0026]S3,對所述圖形對象的基本屬性進行采集;
[0027]S4,建立空間數(shù)據(jù)庫轉(zhuǎn)換、存儲數(shù)據(jù),將步驟S1、S2及S3采集的各圖形對象的ID身份標定值、文本標記字串、基本信息分別對應(yīng)入庫。
[0028]在本發(fā)明的一種優(yōu)選實施方式中,所述圖形對象包括點對象、直線對象、多段線對象及其他對象。
[0029]在本發(fā)明的一種優(yōu)選實施方式中,所述點對象文本標記的方法為:通過點對象P的Coordinates屬性獲取點的X坐標X = P.Coordinates O (0)、Y坐標Y =P.CoordinatesO (I);則P點的文本標記方式為POINT(X Y)。對點坐標進行標記采集。
[0030]在本發(fā)明的一種優(yōu)選實施方式中,所述直線對象文本標記的方法為:通過直線對象L的StartPoint屬性獲取直線的起點X坐標Xs = L.StartPoint O (O)、起點Y坐標Ys = L.StartPoint O (I);直線的終點 X 坐標 Xe = L.EndPoint O (O)、終點 Y 坐標 Ye =L.EndPointO (I),則直線L的文本標記方式為LINESTRING (Xs Ys,Xe Ye)。對直線進行標記米集。
[0031]在本發(fā)明的一種優(yōu)選實施方式中,所述多段線對象文本標記的方法為:通過多段線PL的Coordinates屬性逐一讀取多段線的節(jié)點坐標,如下:
[0032]Xl = PL.Coordinates (O), Yl = PL.Coordinates (I);
[0033]X2 = PL.Coordinates (2), Y2 = PL.Coordinates (3);
[0034]......;
[0035]Xi = PL.Coordinates (2* (i~l)), Yi = PL.Coordinates (2* (i_l)+1);
[0036]......;
[0037]Xn = PL.Coordinates (2* (n_l)), Yn = PL.Coordinates (2* (n_l) +1);
[0038]其中,X1、X2、……、X1、……、Xn為依次讀取的多段線節(jié)點的X坐標,Y1、Y2、……、Y1、……、Yn為依次讀取的多段線節(jié)點的Y坐標,η為多段線節(jié)點的個數(shù)且為正整數(shù),i為依次讀取多段線節(jié)點的序號且不大于η的正整數(shù);
[0039]如果多段線閉合,則多段線PL的標記方式是P0LYG0N(X1 Yl, X2 Y2,……,XiYi,......,Xn Yn);
[0040]如果多段線不閉合:則多段線PL的標記方式是LINESTRING(X1 Yl, X2 Y2,……,XiYi,……,Xn Yn)。對多段線進行標記采集。
[0041]在本發(fā)明的一種優(yōu)選實施方式中,所述其他對象標記方法為:首先調(diào)用AutoCAD內(nèi)置命令“_divide”對各對象進行曲線分割,即重采樣,并設(shè)置重采樣的精度,其中采樣的精度可以根據(jù)“_divide ”分割份數(shù)來設(shè)定,各對象重采樣完成后形成了有序的點隊列,將點隊列里的點依次相連構(gòu)建多段線,而后采用多段線文本標記方式進行對象標記。對非點、非直線及非多段線進行標記采集。
[0042]在本發(fā)明的一種優(yōu)選實施方式中,所述其他對象包括圓、圓弧、橢圓、橢圓弧、樣條曲線或者包含有曲線的多段線之一或者組合。
[0043]在本發(fā)明的一種優(yōu)選實施方式中,所述基本屬性的采集內(nèi)容包括圖層、顏色、線型、線寬及比例中的一個或多個;對應(yīng)的利用對象ob j的圖層ob j.layer方法、顏色ob j.Color方法、線型ob j.Linetype方法、線寬ob j.Lineweight方法及比例ob j.LinetypeScale方法采集圖層、顏色、線型、線寬及比例信息。對圖層、顏色、線型、線寬及比例信息進行采集。
[0044]在本發(fā)明的一種優(yōu)選實施方式中,所述S4包括以下步驟:
[0045]S101,在SQL SERVER數(shù)據(jù)庫中建立空間數(shù)據(jù)庫;
[0046]S102,在數(shù)據(jù)庫中分別對AutoCAD的點、線、面對象建表,各表的主鍵為SI中的ID身份標定值;
[0047]S103,對各基本信息分別建立字段,對文本標記字串建立類型為Geometry的字段;
[0048]S104,批量讀取AutoCAD圖形文檔中圖形對象,通過步驟S1、S2及S3逐一采集各對象的ID身份標定值、文本標記字串、基本信息,分別對應(yīng)數(shù)據(jù)庫中的表與字段對應(yīng)入庫。
[0049]本發(fā)明建立的空間數(shù)據(jù)庫即為GIS可直接識別的空間數(shù)據(jù)庫。成功地實現(xiàn)了AutoCAD數(shù)據(jù)向GIS空間數(shù)據(jù)的轉(zhuǎn)換。
[0050]綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)實現(xiàn)高效轉(zhuǎn)換;轉(zhuǎn)換過程中無多余數(shù)據(jù)沉余;中間數(shù)據(jù)借助SQL Server數(shù)據(jù)庫實施高效管理,并且中間數(shù)據(jù)同時也是成果數(shù)據(jù);數(shù)據(jù)轉(zhuǎn)換后保留了圖形對象的基本信息和擴展屬性;能夠根據(jù)不同的精度要求控制轉(zhuǎn)換后的數(shù)據(jù)量大?。婚_啟了 AutoCAD數(shù)據(jù)向空間地理信息方向的應(yīng)用前景,建立的空間數(shù)據(jù)庫可在ArcGIS Server等軟件的輔助下實現(xiàn)麗S、WFS等空間信息服務(wù)的實時發(fā)布,AutoCAD與GIS數(shù)據(jù)轉(zhuǎn)換及時,數(shù)據(jù)共享,擴大了AutoCAD數(shù)據(jù)的應(yīng)用范圍。
【專利附圖】
【附圖說明】
[0051]圖1是本發(fā)明AutoCAD軟件中的圖形數(shù)據(jù)示意圖;
[0052]圖2是本發(fā)明AutoCAD圖形數(shù)據(jù)轉(zhuǎn)換后在SQL Server數(shù)據(jù)庫中的示意圖;
[0053]圖3是本發(fā)明再通過ArcGIS Server軟件發(fā)布后的AutoCAD圖形數(shù)據(jù)示意圖。
【具體實施方式】
[0054]下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0055]本發(fā)明提供了一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,包括以下步驟:
[0056]SI,在AutoCAD軟件中打開待處理的圖形文檔,對圖形文檔里的所有圖形對象進行ID身份標定。在本實施方式中,AutoCAD圖形對象ID身份標定可借助全局唯一標識符(GUID, Global Iy Unique Identifier)實現(xiàn),通過.NET 平臺下的 System.Guid.NewGuidO類隨機生成⑶ID值,通過AutoCAD COM編程接口函數(shù)SetXData將該⑶ID值存儲在圖形對象的擴展屬性中即實現(xiàn)標定。本發(fā)明所有的編程實現(xiàn)方式均為AutoCAD COM編程,編程語言為 VB.NET。
[0057]S2,對圖形對象進行文本標記;在實施方式中,圖形對象包括點對象、直線對象、多段線對象及其他對象,其他對象包括圓、圓弧、橢圓、橢圓弧、樣條曲線或者包含有曲線的多段線之一或者組合。
[0058]本說明書中的文本標記格式為WKT格式。
[0059]其中,點對象文本標記通過點對象P的Coordinates屬性獲取點的X坐標X =P.Coordinates () (0)、Y 坐標 Y = P.Coordinates () (I);貝丨J P 點的文本標記方式為 POINT (XY)。
[0060]直線對象標記通過直線對象L的StartPoint屬性獲取直線的起點X坐標Xs=L.StartPoint O (O)、起點 Y 坐標 Ys = L.StartPoint O (I);直線的終點 X 坐標 Xe=L.EndPoint O (O)、終點Y坐標Ye = L.EndPoint O (I),則直線L的文本標記方式為LINESTRING(Xs Ys, Xe Ye)。
[0061]多段線對象標記通過多段線PL的Coordinates屬性逐一讀取多段線的節(jié)點坐標,如下:
[0062]Xl = PL.Coordinates (O), Yl = PL.Coordinates (I);
[0063]X2 = PL.Coordinates (2), Y2 = PL.Coordinates (3);
[0064]......;
[0065]Xi = PL.Coordinates (2* (i~l)), Yi = PL.Coordinates (2* (i_l)+1);
[0066]......;
[0067]Xn = PL.Coordinates (2* (n_l)),Yn = PL.Coordinates (2* (n_l)+1);其中,X1、X2、……、X1、……、Xn為依次讀取的多段線節(jié)點的X坐標,Y1、Y2、……、Y1、……、Yn為依次讀取的多段線節(jié)點的Y坐標,η為多段線節(jié)點的個數(shù)且為正整數(shù),i為依次讀取多段線節(jié)點的序號且不大于η的正整數(shù);如果多段線閉合,則多段線PL的標記方式是POLYGON (XIY1,X2 Υ2,……,Xi Yi,……,Xn Yn);如果多段線不閉合:則多段線PL的標記方式是LINESTRING (XI Yl, X2 Y2,......,Xi Yi,......,Xn Yn)。
[0068]其他對象標記為首先調(diào)用AutoCAD內(nèi)置命令“_divide”對對象進行曲線分割,即重采樣,并設(shè)置重采樣的精度,使AutoCAD的對象能夠根據(jù)不同的精度要求在GIS環(huán)境下顯示,各對象重采樣完成后形成了有序的點隊列,將點隊列里的點依次相連構(gòu)建多段線,而后采用上述的多段線文本標記方式進行對象標記。
[0069]S3,對圖形對象的基本屬性進行采集;在本實施方式中,基本屬性信息的采集內(nèi)容包括圖層、顏色、線型、線寬及比例中的一個或多個,能夠以字段值的形式掛接在空間數(shù)據(jù)上。對應(yīng)地利用對象obj的圖層obj.layer方法、顏色obj.Color方法、線型obj.Linetype方法、線寬obj.Lineweight方法及比例obj.LinetypeScale方法采集圖層、顏色、線型、線寬及比例信息。
[0070]S4,建立空間數(shù)據(jù)庫,轉(zhuǎn)換、存儲數(shù)據(jù)。在本實施方式中,包括以下步驟:
[0071]S101,在SQL SERVER數(shù)據(jù)庫中建立空間數(shù)據(jù)庫;所用SQL Server數(shù)據(jù)庫為SQLSERVER 2008R2及以上版本。
[0072]S102,在數(shù)據(jù)庫中分別對AutoCAD的點、線、面對象建表,各表的主鍵為SI中的ID身份標定值(GUID值);
[0073]S103,對各基本信息分別建立字段,對文本標記字串建立類型為Geometry的字段;
[0074]S104,批量讀取AutoCAD圖形文檔中圖形對象,通過步驟S1、S2及S3逐一采集有關(guān)信息,特別指出,對象ID身份標定值(GUID值)的獲取方式為調(diào)用AutoCAD COM編程接口函數(shù)GetXData獲得;將各對象的GUID值、文本標記字串、基本信息分別對應(yīng)數(shù)據(jù)庫中的表與字段對應(yīng)入庫。
[0075]需要說明的是,本發(fā)明的圖形對象還具有自定義擴展屬性,例如對象ID身份標定值等,在數(shù)據(jù)轉(zhuǎn)換后保留,以便查看。
[0076]在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
[0077]盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。
【權(quán)利要求】
1.一種從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,包括以下步驟: SI,在AutoCAD軟件中打開待處理的圖形文檔,對圖形文檔里的所有圖形對象進行ID身份標定; S2,對所述圖形對象進行文本標記; S3,對所述圖形對象的基本屬性進行采集; S4,建立空間數(shù)據(jù)庫,轉(zhuǎn)換、存儲數(shù)據(jù),將步驟S1、S2及S3采集的各圖形對象的ID身份標定值、文本標記字串、基本屬性分別對應(yīng)入庫。
2.根據(jù)權(quán)利要求1所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述圖形對象包括點對象、直線對象、多段線對象及其他對象,所述其他對象包括圓、圓弧、橢圓、橢圓弧、樣條曲線或者包含曲線的多段線之一或者組合。
3.根據(jù)權(quán)利要求2所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述點對象文本標記的方法為:通過點對象P的Coordinates屬性獲取點的X坐標X=P.Coordinates O (O)、Y 坐標 Y = P.Coordinates O (I);點對象 P 的文本標記方式為POINT(X Y)。
4.根據(jù)權(quán)利要求2所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述直線對象文本標記的方法為:通過直線對象L的StartPoint屬性獲取直線的起點X坐標 Xs = L.StartPoint O (O)、起點 Y 坐標 Ys = L.StartPoint O (I);直線的終點 X 坐標 Xe=L.EndPoint O (O)、終點Y坐標Ye = L.EndPoint O (I),直線對象L的文本標記方式為LINESTRING(Xs Ys, Xe Ye)。
5.根據(jù)權(quán)利要求2所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述多段線對象文本標記的方法為:通過多段線PL的Coordinates屬性逐一讀取多段線的節(jié)點坐標,如下:
Xl = PL.Coordinates(O), Yl = PL.Coordinates(I);
X2 = PL.Coordinates(2), Y2 = PL.Coordinates(3);
Xi = PL Coordinates (2* (i_l)),Yi = PL Coordinates (2* (i_l)+1);
Xn = PL.Coordinates(2*(n_l)), Yn = PL.Coordinates(2*(n_l)+1); 其中,X1、X2、……、X1、……、Xn為依次讀取的多段線節(jié)點的X坐標,Yl、Y2、……、Y1、……、Yn為依次讀取的多段線節(jié)點的Y坐標,η為多段線節(jié)點的個數(shù)且為正整數(shù),i為依次讀取多段線節(jié)點的序號且不大于η的正整數(shù); 如果多段線閉合,則多段線PL的文本標記方式是POLYGON (Χ1Υ1,X2 Y2,......,Xi Yi,......,Xn Yn); 如果多段線不閉合:則多段線PL的文本標記方式是LINESTRING(X1Y1,X2Y2,……,XiYi,......,Xn Yn)。
6.根據(jù)權(quán)利要求2所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述其他對象標記方法為: 調(diào)用AutoCAD內(nèi)置命令“_divide”對各對象進行曲線分割,即重采樣,并設(shè)置重采樣的精度; 各對象重采樣完成后形成了有序的點隊列; 將點隊列里的點依次相連構(gòu)建多段線; 采用權(quán)利要求5所述多段線文本標記方式進行對象標記。
7.根據(jù)權(quán)利要求1所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述對象基本屬性的采集內(nèi)容包括圖層、顏色、線型、線寬及比例中的一個或多個;采集方法為:分別利用對象的圖層obj.layer方法、顏色obj.Color方法、線型obj.Linetype方法、線寬obj.Lineweight方法及比例obj.LinetypeScale方法采集圖層、顏色、線型、線寬及比例信息。
8.根據(jù)權(quán)利要求1所述的從AutoCAD數(shù)據(jù)到GIS空間數(shù)據(jù)的轉(zhuǎn)換方法,其特征在于,所述S4包括以下步驟: SlOl,在SQL SERVER數(shù)據(jù)庫中建立空間數(shù)據(jù)庫; S102,在數(shù)據(jù)庫中分別對AutoCAD的點、線、面(在AutoCAD中表現(xiàn)為閉合線)對象建表,各表的主鍵為SI中的ID身份標定值; S103,對各基本信息分別建立字段,對文本標記字串建立類型為Geometry的字段;S104,批量讀取AutoCAD圖形文檔中的圖形對象,通過步驟S1、S2及S3逐一采集各對象的ID身份標定值、文本標記字串、基本信息,分別對應(yīng)數(shù)據(jù)庫中的表與字段對應(yīng)入庫。
【文檔編號】G06F17/30GK104391991SQ201410775561
【公開日】2015年3月4日 申請日期:2014年12月15日 優(yōu)先權(quán)日:2014年12月15日
【發(fā)明者】張平, 陳翰新, 向澤君, 周志軍, 朱清海, 劉遠凱, 陳華剛, 周召兵, 汪蓓, 潘成軍, 鄭持輝, 張鳳英, 王昌翰, 劉洪海, 楊本廷, 冉瑞華, 朱偉, 劉洋河, 廖中林, 滕德貴, 肖興國, 岳仁賓, 鄭佳, 孫宇, 汪劍云, 肖先華, 張 杰, 謝文敏, 王剛氚, 栗龍, 張立祥, 彭文, 代強, 張?zhí)烨? 李彥聰, 徐定建, 楊勇, 吳凡, 俞躍 申請人:重慶市勘測院