李云濤,邱利軍,張波,王鵬翔
(1.山東省第四地質礦產勘查院,山東 濰坊 261021;2.河北建筑工程學院土木工程學院,河北 張家口 075000;3.華北地質勘查局五一九大隊,河北 保定 071000)
基于點對的CAD圖坐標系變換及程序實現
李云濤1,邱利軍2,張波2,王鵬翔3
(1.山東省第四地質礦產勘查院,山東 濰坊 261021;2.河北建筑工程學院土木工程學院,河北 張家口 075000;3.華北地質勘查局五一九大隊,河北 保定 071000)
同一地區不同坐標系的地形圖文件,在進行比較階段變化的過程中會出現困難,或在全站儀自由設站測量展點后與原有圖形文件點坐標系不一致。文章基于ActiveX技術,在AutoCAD結構下,基于C#語言進行了不同圖形文件坐標轉換的開發,使得以全站儀自由坐標系下測圖結果與原有地形圖進行比較,或不同時期不同坐標系下圖形文件的匹配比較更加方便直觀。
坐標變換;ActiveX;程序設計

地形圖作為我國最重要的基礎測繪地理信息成果之一,其應用范圍和影響也最為廣泛。在勘測設計階段需要提供地形圖資料,若采用全站儀自由坐標采集并成圖后,在判斷該區域地形變化時,與原有圖形資料進行比較,存在坐標系不一致問題。另外,不同時期同一地區不同坐標系地形圖進行比較,也存在坐標系變換問題。本文基于AutoCAD二次開發較好的解決了不同dwg圖形文件坐標系不統一的問題。目前AutoCAD二次開發主要方式有4種:AutoLisp、ADS、ObjectARX和ActiveX Automation(ActiveX自動化)。該程序實現采用微軟提供的技術標準ActiveX,采用C#語言進行面向對象程序設計,對功能進行較好的實現,解決了圖形文件間比較坐標不一致問題。

整個程序由圖形文件(dwg格式)選擇、點坐標導入、坐標對選取等組成,程序框架的技術路線如圖1所示。

平面內坐標系間坐標變換原理如圖2所示。

圖1 流程圖

圖2 坐標轉換示意圖

其中:α為坐標系縱軸夾角及偏轉角;X0、Y0為坐標系X′O′Y′坐標原點在坐標系XOY中的坐標,即分別為坐標軸方向平移量;XA、YA與XA′、YA′分別為任意點A在兩個坐標系內的坐標。
上式為不考慮尺度參數的情況下坐標轉換方程。根據坐標點進行坐標變換,則坐標系間夾角未知,兩個平移量未知,若不考慮尺度系數則為三參數。參數計算至少需要兩對點坐標建立4個方程。則可以根據兩對不同坐標系中對應點坐標,算不同坐標系的偏轉角(或僅解算偏轉角的正弦與余弦值),進而計算坐標平移量,從而實現坐標從一個坐標系到另一個坐標系的轉換。


程序實現結果如圖3所示,選取進行坐標變換的圖形文件并選擇圖層,圖層內坐標點均顯示在數據區內,選取當前點為對應點對計算參數后應用,則可以實現坐標旋轉。

圖3 程序界面
程序實現部分方法描述如下。
首先添加引用AutoCAD 2008 Type Library和AutoCAD/Object-DBX Common 17.0 Type Library,定義 AcadApplication CadApp、AcadDocument CadDoc、AcadModelSpace CadMspace等變量。
獲取所有圖層名:

定義選擇集:

選擇圖層區域內所有對象:

判斷并選取點對象,獲取坐標值:

獲取坐標值后按公式計算參數,實現坐標變換并重新繪圖保存。

圖4 示例圖1

圖5 示例圖2
如上圖所示,兩幅圖上同一建筑物特征點1點坐標為(300,400)對應A點坐標為(300,300),2點坐標為(300,500),對應B點坐標(400,300),則可以計算轉換參數,應用可將示例圖2坐標旋轉為圖1坐標系下并保存。

基于ActiveX技術應用C#語言對不同圖形文件坐標轉換程序進行了開發實現,使得全站儀自由坐標系下測圖結果與原有地形圖進行比較,或不同時期不同坐標系下圖形文件的比較更加方便。
[1]景勝強,等.基于ActiveX技術的鉆孔柱狀圖自動繪制系統開發[J].礦山測量,2013(4):32-34.
[2]鄭闊.采用ActiveX Automation技術制作房產測繪成果報表[J].北京測繪,2016(1):132-134.
[3]于蕭榕,郭昌言,陳剛.結合Objectarx和C#進行AutoCAD二次開發框架的研究[J].科學技術與工程,2010,10(20):5085-5091.
[4]堯燕.基于VC#.NET對AutoCAD二次開發方法的研究[J].科學技術與工程,2008.8(23):6365-6367.
[5]宋耀東,等.地形圖應用現狀分析[J].測繪標準化,2015(4):8-10.
TU17
A
1007-7359(2016)05-0260-02
10.16330/j.cnki.1007-7359.2016.05.093
李云濤(1987-),男,河北保定人,助理工程師,研究方向:數據處理。