荊 毅 ,莊宿軍,姚麒麟
(上海華東電力設計巖土工程有限公司,上海 200331)
當今,AutoCAD在設計施工與地形測繪中的應用已經相當的廣泛,CAD圖已經成為圖形數據編輯和各種成果提交的主要形式。例如在施工放樣樁位時,若工程樁施工圖就是在其設計坐標系統下,則可以直接在圖中“拾取”樁位坐標用于指導放樣。但在多數情況下,CAD圖中的實體坐標與其的設計坐標并不一致,使得實體的在CAD圖中的位置信息不能直接使用,給設計和施工人員雙方之間信息的共享帶來了不便。常規的做法是根據圖紙中標注的某點的設計坐標和距離間接地算出工程樁的設計坐標后再用于放樣。這樣不但效率低下,而且也很容易出錯。為此考慮通過平面坐標轉換的方法將工程樁施工圖轉換到其設計坐標系統下,則工程樁的圖上坐標就是其設計坐標,這樣不但提高了效率也大大降低了計算樁位時出錯的概率,充分發揮CAD電子圖的優勢。
坐標轉換的具體過程可以描述為:首先將圖中設計坐標已知的點作為同名點,通過若干同名點求出坐標轉換參數;然后根據得到的轉換參數對CAD圖進行坐標系的旋轉、縮放和平移,將整幅圖上的實體轉換到設計坐標系下。對此問題已有不少有益的研究,但對CAD圖進行坐標轉換的方法各異,例如可通過CAD中提供的旋轉,平移,縮放等命令實現坐標的轉換[1],此方法雖然簡便,但是對于行業之外的人來說,操作起來還是有一定的難度。另有一些通過編寫程序對 CAD中(交換數據格式)DXF中地物的坐標數據進行坐標轉換達到坐標轉換的目的[2]、[3]。
本文主要介紹了一種基于最小二乘的平面坐標轉換算法和對此算法的VBA實現,達到對CAD圖坐標的自動轉換。
由相似變換公式

其中,(x, y)是圖形中某點在新坐標系下的坐標;(x′, y′)是圖形中某點在舊坐標系下的坐標;(m, n)是就坐標系原點在新坐標系下的坐標即橫向和縱向的平移參數;s為比例系數;θ為旋轉角度。
令a = s·cosθ,b = s·sinθ ,則可將式⑴寫為:

選取m、n、a、b作為平差參數,并將新坐標系下的坐標作為觀測值,舊坐標系中的坐標設為無誤差,可列出誤差方程[4]

即

按上式組成法方程:

可得:
將求出的δx加到給定的參數初值上,帶回法方程迭代至收斂,得到坐標轉換參數m、n、a、b。
Visual Basic for Applications(簡稱VBA)是新一代標準宏語言,提供了面向對象的程序設計方法,并提供了相當完整的程序設計語言。Autodesk公司從AutoCAD R14.01版開始,內置了VBA開發工具,它易學易用、功能強大,并借助于VB提供的ActiveX對象強大功能,使它已經成為CAD二次開發中一種最為常見的形式,可以大大減輕CAD中重復性的繪圖和計算工作[5]。
根據上一節算法得到的轉換參數,利用ActiveX對象封裝的函數實現圖形坐標轉換,轉換過程見圖1。
選取紹興濱海熱電廠主廠房工程樁施工(CAD)圖進行實驗分析。見圖2,圖上左下角標有設計坐標(A=417.500 B=553.000)的角點與其圖上的實際坐標(X=1038954.4740 Y= -91838.4526)并不一致。此外,從圖上右下角(標有設計坐標A=272.500 B=553.000)的角點與其對應的圖上實際坐標(X=1184454.4740 Y=-91838.4526)可以看出,設計坐標系統與圖上坐標系統比例因子也不為1,且設計橫坐標向左為正與圖上橫坐標向右為正的方向相反,說明兩個坐標系之間還存在著一定的旋轉角度。適于本文要解決的問題。

圖1 轉換流程圖
已知同名點的設計坐標如表1的第2、3兩列所示,選取其中的點1和2作為同名點進行坐標系統的轉換。

圖2 主廠房打樁設計樁位圖(局部)

表1 同名點設計坐標和殘差分析結果 單位:m
首先在圖中“拾取”同名點的圖上坐標值,然后輸入其設計坐標值(A=417.500 B=553.000)。輸入點1和2兩個同名點后,點擊“計算”,則計算的轉換參數見圖3。

圖3 軟件操作界面圖
點擊“轉換”按鈕后,軟件按照計算得到的轉換參數對原圖自動地進行坐標系的旋轉,縮放和平移,完成圖形的坐標的轉換。將轉換后的同名點坐標值列于表1的第4、5兩列,將同名點的設計坐標和轉換后得到的坐標求其坐標殘差并列于表的第6、7兩列。經轉換后的主廠房打樁設計樁位圖,比較其同名點的設計坐標值,在165m×61m的主廠房打樁區域內,坐標轉換的殘差全部為0,轉換的效果非常好。
本文針對CAD圖上坐標與設計坐標不一致的問題,介紹了一種坐標轉換的算法并給出了坐標轉換的VBA實現,最后以一幅實際工程的施工樁位圖為例,驗證了算法可行性。現軟件已在實際工程中得到應用并得出以下結論:
⑴ 本文所介紹的轉換模型和相應軟件因為是四個參數,因此需要兩個以上的同名點新舊坐標值;
⑵ 本文所介紹的轉換模型和相應軟件只適合于二維平面坐標的相似轉換,即縱向的縮放比例和橫向縮放比例是一致的情況;
⑶ 本文介紹的旋轉是對坐標軸的旋轉,因為若將創建為塊(block)的圖形進行旋轉,雖然也可達到坐標系旋轉的目的,但旋轉后的圖形相對于視圖窗口會有一個角度,不方便使用者查看和使用。
[1]石永樂,梁宏奇,李國林.AutoCAD繪圖中的坐標轉換[J].礦山測量,2006.
[2]吳銘杰.CAD數據坐標轉換方法研究[J].江西測繪,2009.
[3]任沂軍.AutoCAD中DXF文件的坐標轉換分析與實現[J].測繪通報,2006(7).
[4]武漢大學測繪學院測量平差組.誤差理論與測量平差基礎[M].武漢:武漢大學出版社,2003.
[5]曾洪飛,張帆,盧擇臨.AutoCAD VBA &VB.NET開發基礎與實例教程[M].北京:中國電力出版社,2008.