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