?

基于MapGIS開發北京西安坐標系轉換

2014-11-15 02:51田芳蓮
電子測試 2014年18期
關鍵詞:類庫橢球二次開發

田芳蓮

(青海省核工業地質局,810001)

我國完成了大量基于54坐標系的測繪成果,這些成果對國民經濟建設具有重要的使用價值。為了消除局部平差和逐級控制帶來的不合理影響,提高大地網的精度,1980年我國建立了比北京54坐標系更為科學、嚴密的西安80坐標系。

為能有效的利用北京54坐標系下的大量測量成果,使北京54坐標系下的數據與西安80坐標系下的數據相互有效結合利用,北京54坐標系與西安80坐標系的轉換勢在必行。

1 MapGIS

1.1 MapGIS軟件

MapGIS軟件具有圖形編輯、修改、檢索、造區等功能,從而使輸入的圖形更準確、更豐富、更漂亮。它的主要功能有:

(1)先進的可視化定位檢索功能---提供了多種圖形窗口的操作功能,包括開窗口,移動窗口,無級任意放大縮小窗口比例,顯示窗口及圖元捕獲信息等系列可視化技術功能。

(2)靈活方便的線元編輯功能---軟件將各種線型以線為單位作為線圖元來編輯。各種線圖元,根據指定的坐標點數據、線型及參數,經過算法處理產生各種線型。

(3)功能強大的點元編輯功能---圖形中各種注釋,各種專用符號、子圖、圖案以及圓、弧、直線歸并為點圖元來編輯。

1.2 二次開發

MapGIS為了支持用戶進行二次開發,而提供了完整的二次開發庫,所有用戶可以在MAPGIS平臺上開發出面向各領域的應用系統。當前,二次開發庫以MFC擴展類、COM組件、ActiveX控件、API函數方式提供。

(1) 基于API函數開發

這些函數的實現被封裝在24個動態鏈接庫(DLL)中, 因此,是獨立于開發工具的。

(2) 基于MFC類庫開發

MapGIS類庫用面向對象的思想把一些API功能進行封裝,形成多個派生于MFC中Cview類的可重用基類,用戶利用基于MFC的MapGIS類庫可構建面向對象軟件工程的MapGIS應用系統。

(3) COM組件開發

MAPGIS COM組件支持用戶進行組件式開發,具有二次開發便利、易于集成、無限擴展的特點,支持多種開發軟件等優點。

2 北京與西安坐標系

2.1 北京坐標系

北京54坐標系是采用前蘇聯的克拉索夫斯基橢球參數(長軸6 378 245 m,短軸6 356 863m,扁率1/298.3),并與前蘇聯1942年坐標系進行聯測,通過計算建立了我國大地坐標系,定名為1954年北京坐標系。其坐標的原點在前蘇聯的普爾科沃。

北京存在著坐標系存在著以下缺隙:

① 橢球參數有較大誤差;

② 參考橢球面與我國大地水準面存在著自西向東明顯的系統性的傾斜;

③ 幾何和物理大地測量應用的參考面不統一;

④定向不明確;

2.2 西安坐標系

西安80坐標系是1980年國家大地坐標系,利用多點定位,采用地球橢球基本參數為1975年國際大地測量與地球物理聯合會第十六屆大會推薦的數據(長軸6 378 140 m,短軸6 356 755 m,扁率l/298.257 221 01)。該坐標系的大地原點設在我國中部的陜西省涇陽縣永樂鎮,位于西安市西北方向約60 km,故稱1980年西安坐標系。

西安坐標系存在著以下優點:

① 橢球短軸平行于地球地軸;

② 起始大地子午面平行于格林尼治天文臺起始子午面;

③ 橢球面同似大地水準面在我國境內最為密合;

④ 系統經過了整體平差。

3 轉換流程圖

MapGIS開發北京西安坐標系轉換流程圖如下所示:

圖1 MapGIS開發北京西安坐標系轉換流程圖

4 程序實現

4.1 VC++

Visual C++ 6.0提供了各種各樣的數據庫訪問技術-ODBC API、MFC ODBC、DAO、OLE DB等。這些技術各有自己的特點,具有簡單、靈活、訪問速度快、可擴展性好的特點。

ODBC(Open Database Connectivity) 是客戶應用程序訪問關系數據庫時提供的一個統一接口,對于不同的數據庫,ODBC提供了一套統一的API。

4.2 部份代碼

(1) 文件批量處理子程序

文件批量處理子程序的部份代碼如下所示:

CString strtemp;

if(strPath.Right(1)!="\")

strtemp.Format("%s\*.*",strPath);

else

strtemp.Format("%s*.*",strPath);

CFileFind findfile;

BOOL bfind=findfile.FindFile(strtemp);

while(bfind)

{ bfind=findfile.FindNextFile();

if(strfilename==findfile.GetFileName())

{ m_filelist.AddString(findfile.GetFilePath()); }

if(findfile.IsDirectory()&&!findfile.IsDots())

{

FindFile(findfile.GetFilePath());

}

if(bstop)return;

}

(2) 北京西安坐系互轉主程序

北京西安坐系互轉主程序的部份代碼如下所示:

_GetPntNum(QTZJAi,&i,&pntN);

GetDlgItemText(IDC_repace,str1);

GetDlgItemText(IDC_repace1,str2);

for(i=1;i

{

_GoingClockCursor();

memset(szBufCvt,0,sizeof(szBufCvt));

memset(szBufCvt1,0,sizeof(szBufCvt1));

t=0;jj=0;jjj=0;

if(_GetPnt(QTZJAi,i,&xyz,&dat,&len,&QTZJinf)<=0)continue;

{

for (int j = 0 ; j

{

if(dat[1]==str1[0])//開頭是"T"

{

if (dat[j]=='/')

{t=t+1; continue;}

else

{ if(t==1)

{

szBufCvt1[jj]=dat[j];

jj =jj+1;

} } }

......

5 結束語

54坐標系向80坐標系過渡是今后社會發展的需要,在逐步過渡的過程中,只要采用有效合理的措施,就可以在盡量不影響現有測繪成果使用方便的基礎上,避免一次轉換需要較多投入而難于實現。本文基于VC++結合MapGIS類庫開發出54坐標系與80坐標系互轉程序,該程序算法較合理,操作簡單,大大提高了工作效率。

[1]中國地質大學(武漢)信息工程學院.MAPGIS地理信息系統開發手冊[M].武漢華地圖形數據公司.1998.

[2]邊少鋒.大地坐標系與大地基準[M].北京:國防工業出版社,2005,

[3]呂曉華,劉宏林.地圖投影數值變換方法綜合評述[J].測繪學院學報,2002,19(2):150—153.

猜你喜歡
類庫橢球二次開發
獨立坐標系橢球變換與坐標換算
橢球槽宏程序編制及其Vericut仿真
淺談基于Revit平臺的二次開發
用Java編寫客戶機/服務器端應用程序
淺談Mastercam后處理器的二次開發
Python在數據可視化中的應用
數據結構課程教學改革方案和應用效果
數據結構可視化類庫的設計與實現
西門子Easy Screen對倒棱機床界面二次開發
橢球精加工軌跡及程序設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合