李云濤,邱利軍,張波,王鵬翔
(1.山東省第四地質(zhì)礦產(chǎn)勘查院,山東 濰坊 261021;2.河北建筑工程學(xué)院土木工程學(xué)院,河北 張家口 075000;3.華北地質(zhì)勘查局五一九大隊,河北 保定 071000)
基于點對的CAD圖坐標(biāo)系變換及程序?qū)崿F(xiàn)
李云濤1,邱利軍2,張波2,王鵬翔3
(1.山東省第四地質(zhì)礦產(chǎn)勘查院,山東 濰坊 261021;2.河北建筑工程學(xué)院土木工程學(xué)院,河北 張家口 075000;3.華北地質(zhì)勘查局五一九大隊,河北 保定 071000)
同一地區(qū)不同坐標(biāo)系的地形圖文件,在進行比較階段變化的過程中會出現(xiàn)困難,或在全站儀自由設(shè)站測量展點后與原有圖形文件點坐標(biāo)系不一致。文章基于ActiveX技術(shù),在AutoCAD結(jié)構(gòu)下,基于C#語言進行了不同圖形文件坐標(biāo)轉(zhuǎn)換的開發(fā),使得以全站儀自由坐標(biāo)系下測圖結(jié)果與原有地形圖進行比較,或不同時期不同坐標(biāo)系下圖形文件的匹配比較更加方便直觀。
坐標(biāo)變換;ActiveX;程序設(shè)計
地形圖作為我國最重要的基礎(chǔ)測繪地理信息成果之一,其應(yīng)用范圍和影響也最為廣泛。在勘測設(shè)計階段需要提供地形圖資料,若采用全站儀自由坐標(biāo)采集并成圖后,在判斷該區(qū)域地形變化時,與原有圖形資料進行比較,存在坐標(biāo)系不一致問題。另外,不同時期同一地區(qū)不同坐標(biāo)系地形圖進行比較,也存在坐標(biāo)系變換問題。本文基于AutoCAD二次開發(fā)較好的解決了不同dwg圖形文件坐標(biāo)系不統(tǒng)一的問題。目前AutoCAD二次開發(fā)主要方式有4種:AutoLisp、ADS、ObjectARX和ActiveX Automation(ActiveX自動化)。該程序?qū)崿F(xiàn)采用微軟提供的技術(shù)標(biāo)準(zhǔn)ActiveX,采用C#語言進行面向?qū)ο蟪绦蛟O(shè)計,對功能進行較好的實現(xiàn),解決了圖形文件間比較坐標(biāo)不一致問題。
整個程序由圖形文件(dwg格式)選擇、點坐標(biāo)導(dǎo)入、坐標(biāo)對選取等組成,程序框架的技術(shù)路線如圖1所示。
平面內(nèi)坐標(biāo)系間坐標(biāo)變換原理如圖2所示。
圖1 流程圖
圖2 坐標(biāo)轉(zhuǎn)換示意圖
其中:α為坐標(biāo)系縱軸夾角及偏轉(zhuǎn)角;X0、Y0為坐標(biāo)系X′O′Y′坐標(biāo)原點在坐標(biāo)系XOY中的坐標(biāo),即分別為坐標(biāo)軸方向平移量;XA、YA與XA′、YA′分別為任意點A在兩個坐標(biāo)系內(nèi)的坐標(biāo)。
上式為不考慮尺度參數(shù)的情況下坐標(biāo)轉(zhuǎn)換方程。根據(jù)坐標(biāo)點進行坐標(biāo)變換,則坐標(biāo)系間夾角未知,兩個平移量未知,若不考慮尺度系數(shù)則為三參數(shù)。參數(shù)計算至少需要兩對點坐標(biāo)建立4個方程。則可以根據(jù)兩對不同坐標(biāo)系中對應(yīng)點坐標(biāo),算不同坐標(biāo)系的偏轉(zhuǎn)角(或僅解算偏轉(zhuǎn)角的正弦與余弦值),進而計算坐標(biāo)平移量,從而實現(xiàn)坐標(biāo)從一個坐標(biāo)系到另一個坐標(biāo)系的轉(zhuǎn)換。
程序?qū)崿F(xiàn)結(jié)果如圖3所示,選取進行坐標(biāo)變換的圖形文件并選擇圖層,圖層內(nèi)坐標(biāo)點均顯示在數(shù)據(jù)區(qū)內(nèi),選取當(dāng)前點為對應(yīng)點對計算參數(shù)后應(yīng)用,則可以實現(xiàn)坐標(biāo)旋轉(zhuǎn)。
圖3 程序界面
程序?qū)崿F(xiàn)部分方法描述如下。
首先添加引用AutoCAD 2008 Type Library和AutoCAD/Object-DBX Common 17.0 Type Library,定義 AcadApplication CadApp、AcadDocument CadDoc、AcadModelSpace CadMspace等變量。
獲取所有圖層名:
定義選擇集:
選擇圖層區(qū)域內(nèi)所有對象:
判斷并選取點對象,獲取坐標(biāo)值:
獲取坐標(biāo)值后按公式計算參數(shù),實現(xiàn)坐標(biāo)變換并重新繪圖保存。
圖4 示例圖1
圖5 示例圖2
如上圖所示,兩幅圖上同一建筑物特征點1點坐標(biāo)為(300,400)對應(yīng)A點坐標(biāo)為(300,300),2點坐標(biāo)為(300,500),對應(yīng)B點坐標(biāo)(400,300),則可以計算轉(zhuǎn)換參數(shù),應(yīng)用可將示例圖2坐標(biāo)旋轉(zhuǎn)為圖1坐標(biāo)系下并保存。
基于ActiveX技術(shù)應(yīng)用C#語言對不同圖形文件坐標(biāo)轉(zhuǎn)換程序進行了開發(fā)實現(xiàn),使得全站儀自由坐標(biāo)系下測圖結(jié)果與原有地形圖進行比較,或不同時期不同坐標(biāo)系下圖形文件的比較更加方便。
[1]景勝強,等.基于ActiveX技術(shù)的鉆孔柱狀圖自動繪制系統(tǒng)開發(fā)[J].礦山測量,2013(4):32-34.
[2]鄭闊.采用ActiveX Automation技術(shù)制作房產(chǎn)測繪成果報表[J].北京測繪,2016(1):132-134.
[3]于蕭榕,郭昌言,陳剛.結(jié)合Objectarx和C#進行AutoCAD二次開發(fā)框架的研究[J].科學(xué)技術(shù)與工程,2010,10(20):5085-5091.
[4]堯燕.基于VC#.NET對AutoCAD二次開發(fā)方法的研究[J].科學(xué)技術(shù)與工程,2008.8(23):6365-6367.
[5]宋耀東,等.地形圖應(yīng)用現(xiàn)狀分析[J].測繪標(biāo)準(zhǔn)化,2015(4):8-10.
TU17
A
1007-7359(2016)05-0260-02
10.16330/j.cnki.1007-7359.2016.05.093
李云濤(1987-),男,河北保定人,助理工程師,研究方向:數(shù)據(jù)處理。