999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB的坐標轉換程序的開發

2013-03-06 02:11:59田繼成
城市勘測 2013年4期
關鍵詞:程序

田繼成

(大同市勘察測繪院,山西大同 037000)

基于VB的坐標轉換程序的開發

田繼成?

(大同市勘察測繪院,山西大同 037000)

網上免費的坐標轉換軟件很多,功能各異,其中COORD功能強大、使用廣泛,是坐標轉換軟件中的杰出代表。盡管如此,COORD在有些情況下仍不能實現一步轉換。因此,有必要開發一種能夠實現一步轉換的坐標轉換程序。本文以VB 6.0為開發環境,重點闡述了開發坐標轉換程序的思路和算法。程序投入運行以來,極大地提高了坐標轉換工作的效率,也有利于坐標轉換成果的標準化。

坐標轉換;程序設計;模塊化;VB 6.0

1 引 言

坐標轉換問題在測量中經常遇到,計算過程較復雜,一般使用軟件計算。網上免費的坐標轉換軟件很多,功能各異,其中COORD功能強大、使用廣泛,是坐標轉換軟件中的杰出代表。

盡管如此,COORD在有些情況下仍不能實現一步轉換,如:轉換過程中需要進行兩次不同自定義的高斯正算和反算時。由于大同市獨立坐標系采用非國家標準3°帶中央子午線投影,故大同獨立坐標系轉西安80坐標系即屬于這種情況。因此,有必要開發一種能夠實現一步轉換的坐標轉換程序。

為了使開發的程序精確可靠、功能強大、易于使用,并縮短程序開發周期,開發過程中筆者閱讀了大量坐標轉換文獻,對比和借鑒了大量坐標轉換軟件,測試分析了大量坐標轉換源代碼,并在此基礎上對源代碼進行了改進和利用。

本文以VB 6.0為開發環境,重點闡述了開發坐標轉換程序的思路和算法。程序投入運行以來,極大地提高了大同市勘察測繪院坐標轉換工作的效率,也有利于坐標轉換成果的標準化。

2 功能及界面設計

程序應實現:

(1)一步坐標轉換

程序實行模塊化,通過對坐標轉換子模塊的任意組合,實現一步坐標轉換。

(2)實時坐標轉換

當輸入或改變源坐標時,實時計算當前行目標坐標。改變源坐標系或目標坐標系時,實時全部重新計算目標坐標。改變保留小數位數或角度格式后,實時刷新數據。

(3)轉換參數的安全

轉換參數加密內置在程序中,既方便使用和防止誤操作,又避免了使用明碼參數帶來的易泄露和傳播等不安全問題。

為防止對程序進行逆向工程,程序采用P碼編譯并加殼處理。通過第三方軟件實現程序的防拷貝。通過設定登錄密碼、綁定微機硬件、使用次數限制、時間炸彈等措施,實現程序非授權禁用并自毀。

程序界面如圖1所示:

圖1 坐標轉換

3 關鍵技術及實現

3.1 模塊化坐標轉換

本程序坐標轉換分為專用坐標轉換和通用坐標轉換兩部分。專用坐標轉換中預置了大同市常用的坐標轉換參數,通用坐標轉換需用戶定制后才可使用。

將坐標轉換模塊劃分4大類:四參數轉換、七參數轉換、大地坐標系與空間直角坐標系互轉、高斯正反算。

(1)專用坐標轉換:支持6種坐標(大同地方坐標系、大同獨立坐標系、北京54坐標系、西安80坐標系、WGS84坐標系、CGCS2000坐標系)互轉。將6種坐標互轉過程按4大類劃分為28個模塊,編程時指定每兩種坐標轉換時對應的模塊組合,即可實現專用坐標轉換。

以大同獨立坐標系轉西安80坐標系為例,需要6步:

①四參數轉換:大同獨立坐標轉WGS84橢球的高斯投影平面坐標;

②高斯反算:WGS84橢球的高斯投影平面坐標轉WGS84大地坐標;

③大地轉空間:WGS84大地坐標轉WGS84空間直角坐標;

④七參數轉換:WGS84空間直角坐標轉西安80空間直角坐標;

⑤空間轉大地:西安80空間直角坐標轉西安80大地坐標;

⑥高斯正算:西安80大地坐標轉西安80平面坐標。

(注:WGS84橢球的高斯投影平面坐標,具體為高斯投影3°帶,中央子午線???°??′,投影面高程????m。)

(2)通用坐標轉換:按4大類劃分為6個模塊:四參數轉換、七參數轉換、大地轉空間、空間轉大地、高斯正算、高斯反算。使用時用戶自定義模塊組合,即可實現通用坐標轉換。添加模塊后,需設置模塊對應參數,如:四參數轉換需輸入四參數、高斯正算需輸入投影參數等。全部設置好后,可保存為坐標轉換配置文件,下次使用時選擇即可。坐標轉換配置文件為加密格式。

圖2 定制轉換方案

3.2 高斯投影代碼的改進

網上收集了很多高斯投影源代碼,經測試或多或少存在不足,如:代碼存在漏錯、代碼格式混亂、支持橢球較少、不支持自定義高斯投影、不支持橢球變換、轉換精度不夠等。

經比較,選定一款較好的高斯投影源代碼,在此基礎上進行改進,實現了:

(1)增加支持的橢球

源代碼只支持北京54坐標系的參考和西安80坐標系的參考橢球,在此基礎上,增加了對WGS84和CGCS 2000橢球的支持。

(2)提高轉換精度

經對比發現,源代碼中用于計算X(B)的高階項系數只有A1、A2、A3、A4,通過增加A5、A6,提高了轉換精度。

(3)支持橢球變換

橢球變換主要有橢球平移法、橢球膨脹法、橢球變形法等,其中橢球膨脹法最為簡潔,為工程應用之首選。考慮到坐標轉換軟件COORD采用橢球膨脹法,為了使用COORD求解的坐標轉換參數,故本程序橢球變換也采用橢球膨脹法。

橢球膨脹法公式:

式中:Hm—該地區平均大地高;Bm—該地區的平均緯度。

改進后的高斯投影代碼如下(限于篇幅,部分省略):

'設置橢球參數

Public Sub SetEllipsoidPara(ByVal CoordID%)

Select Case CoordID

Case 1 '北京54 a=6378245# f=298.3

Case 2 '西安80 a=6378140# f=298.257

Case 3 'WGS84 a=6378137# f=298.257223563

Case 4 'CGCS2000 a=6378137# f=298.257222101

End Select

End Sub

'設置坐標系統參數

Public Sub SetCoordPara(ByVal CoordID%,ByVal Hm#,By-Val Bm#)

Dim TA#,TB#,TC#,TD#,TE#,TF#

Dim Rm#,Rn#

'設置橢球參數

Call SetEllipsoidPara(CoordID) '橢球變換(橢球膨脹法)

e2=1-((f-1)/f)?((f-1)/f)

Rm=a?Sqr(1-e2)/(1-e2?Sin(Bm)^2)

Rn=Rm+Hm

a=Rn?(1-e2?Sin(Bm)^2)/Sqr(1-e2)

'計算用于計算X的橢球參數

e2=1-((f-1)/f)?((f-1)/f)

e12=(f/(f-1))?(f/(f-1))-1

TA=a?(1-e2)?(1+3?e2/4+45?e2^2/64+175?e2^3/256+11025?e2^4/16384)

TB=a?(1-e2)?(3?e2/4+15?e2^2/16+525?e2^3/ 512+2205?e2^4/2048)

TC=a?(1-e2)?(15?e2^2/64+105?e2^3/256+2205?e2^4/4096+10395?e2^5/16384)

TD=a?(1-e2)?(35?e2^3/512+315?e2^4/2048+ 31185?e2^5/131072)

TE=a?(1-e2)?(315?e2^4/16384+3465?e2^5/ 65536)

TF=a?(1-e2)?(693?e2^5/131072)

A1=TA

A2=-TB/2

A3=TC/4

A4=-TD/6

A5=TE/8

A6=-TF/10

End Sub

'高斯正算

Public Sub BL2XY(ByRef B#,ByRef L#,ByVal L0#,ByVal Y0#,ByVal Hm#,ByVal Bm#,ByVal Coord ID%)

………………

x=A1?B+A2?Sin(2?B)+A3?Sin(4?B)+A4?Sin (6?B)+A5?Sin(8?B)+A6?Sin(10?B)

………………End Sub

'高斯反算

Public Sub XY2BL(ByRef x#,ByRef y#,ByVal L0#,ByVal Y0#,ByVal Hm#,ByVal Bm#,ByVal CoordID%)

………………

DoWhile True

preB0=B0

B0=B0?pi/180

B0=(x-(A2?Sin(2?B0)+A3?Sin(4?B0)+A4?Sin(6?B0)+A5?Sin(8?B0)+A6?Sin(10?B0)))/A1?180/pi

eta=Abs(B0-preB0)

If eta<1E-16 Then Exit Do

Loop

………………

End Sub

3.3 角度轉度分秒函數的改進

度轉度分秒的難點在于容易出現60″。出現60″的原因:VB雙精度變量最多存儲16位(不包括正負號),秒單獨存儲時保留小數較多,此時的秒小于60″。秒和度分組合后,由于雙精度最大存儲限制導致秒四舍五入,此時的秒有可能等于60″。

避免出現60″的方法:在秒和度分組合前,對秒進行四舍五入,并判斷其是否為60″。實現保留最多小數位數的計算公式:小數位數=16-度的位數-分秒的位數4-小數點位數1。

通過對源代碼的修改,實現了避免出現60″、保留最多小數位數、支持負角度。

修改后的角度轉度分秒代碼如下:

Public Function Deg2Dms(ByVal Deg As Double)As Double

………………

Deg=Abs(Deg) DD=Int(Deg)

MM=Int((Deg-DD)?60#)

SS=((Deg-DD)?60#-MM)?60#

SecDec=16-Len(CStr(DD))-5

If Round(SS,SecDec)=60 Then

SS=0:MM=MM+1

End If

If MM=60 Then MM=0:DD=DD+1

End If

Deg2Dms=Sign?(DD+MM/100+SS/10000)

End Function

3.4 支持“一轉多”和“多轉一”

支持源坐標同時轉換多種目標坐標,簡稱“一轉多”。支持源坐標按多種源坐標系轉換一種目標坐標,簡稱“多轉一”。

“一轉多”用于同時轉換兩種或兩種以上坐標,避免了多次轉換的麻煩,而且成果可生成在一張報表中。

“多轉一”用于源坐標系的輔助確定,有時無法確定源坐標系,但知道具體位置時,可按不同坐標系轉換后,與地形圖匹配確定源坐標系,再進行坐標的轉換。

3.5 文件的導入導出

程序除支持常用的導入導出格式外,還支持對用戶鍵入格式的解析,用戶鍵入的格式要求以逗號分隔。

用戶鍵入的導入格式,可以是6種關鍵字(序號、點名、代碼、X、Y、H)的自由組合。

用戶鍵入的導出格式,可以是9種關鍵字(序號、點名、代碼、前X、前Y、前H、后X、后Y、后H)的自由組合。其中,“前”代表轉換前的坐標,“后”代表轉換后的坐標。

此外還支持輸出Word格式的坐標轉換報表,表格的列寬和字號隨坐標系名稱、坐標系類型、小數位數、角度格式等智能調整。

3.6 生成經緯網格

經緯網格可用于專題圖的制作、柵格圖的糾正拼接等。較復雜的經緯網格一般使用ArcGIS生成,為了能夠直接生成符合要求的、DWG格式的經緯網格,專門開發了生成經緯網格功能。

本功能支持多種橢球、支持自定義高斯投影、支持注記網格經緯度,可自定義網格范圍、經線緯線間隔、設置網格線樣式等。

圖3 繪制經緯風格

4 程序測試

筆者對程序的各個模塊進行了大量獨立測試和聯合測試,并用大同市C級GPS網多套坐標成果對程序進行了全面驗證。大同市C級GPS網覆蓋面積約1 500 km2,東西跨度57 km,南北跨度36 km。用該成果驗證轉換精度,具有很好的代表性。

作者編制了較完整程序測試報告,并制作了轉換精度分布圖。測試結果表明,程序穩定可靠、轉換精度較高。由于報告內容較多,限于篇幅,僅以大同獨立坐標系轉西安80坐標系為例簡要介紹。

測試方法如下:

(1)轉換精度:輸入源坐標,轉換得到目標坐標,將目標坐標與控制點坐標進行比較。

(2)逆轉相符性:輸入源坐標,轉換得到目標坐標,再將目標坐標轉換為源坐標,將轉換得到的源坐標與輸入的源坐標進行比較。

(3)源坐標高程對平面精度的影響:輸入源坐標時,高程分別輸入0、1 000、大地高,將3種不同高程時得到的目標坐標進行比較。

(4)COORD轉換精度:在COORD中輸入與本程序一樣的坐標轉換參數,將COORD得到目標坐標與控制點坐標進行比較。

(5)本程序與COORD比較:在COORD中輸入與本程序一樣的坐標轉換參數,將COORD得到目標坐標與本程序得到目標坐標進行比較,如表1所示。

坐標轉換測試項目及精度 表1

5 結 語

投入使用以來,程序在不斷地改進和完善,目前仍有諸多不足之處,如不支持坐標轉換參數的求解,不支持高程的轉換等。今后筆者會適時增加這方面的功能。

通過此次開發,筆者掌握了全套源代碼,通過定制可服務不同需要,對于提高工作效率具有重要意義。此外,通過實踐加深了對坐標轉換原理和方法的認識。

[1] 王順興,顏美代.精解Word 2000 VBA與范例解析[M].北京:北京大學出版社,2001.

[2] 張晉西.Visual Basic與AutoCAD二次開發[M].北京:清華大學出版社,2002.

[3] 何光渝.Visual Basic常用數值算法集[M].北京:科學出版社,2002.

[4] 許謖.Visual Basic應用與開發案例教程[M].北京:清華大學出版社,2005.

[5] 李懷明,駱原,王育新.Visual Basic 6.0中文版參考詳解[M].北京:清華大學出版社,1999.

[6] 陳涌泉.Visual Basic第三方控件大全[M].北京:中國電力出版社,200.

The Program Development of Coordinate Transformation Based on VB

Tian Jicheng
(Datong Institute of Prospecting and Mapping,Datong 037000,China)

There's lots of free coordinate transformation software with different functions.As an outstanding representative of the software,COORD is powerful and widely used.But,in some cases,COORD still can not achieve one-step conversion.Therefore,it is necessary to develop a coordinate transformation program to achieve one-step conversion. Based on VB 6.0,this paper focusing on the thoughtand algorithms of development coordinate transformation programs.It greatly improves thework efficiency of the coordinate transformation since put into operation,and conducive to the standardization of coordinate transformation results.

coordinate transformation;program development;modularization;VB 6.0

1672-8262(2013)04-71-04

P226+.3

B

2013—03—09

田繼成(1965—),男,高級工程師,注冊規劃師,主要從事生產管理和技術研究工作。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产女人在线视频| 精品无码专区亚洲| 亚洲欧洲日韩久久狠狠爱| 男人天堂亚洲天堂| 欧美亚洲国产视频| 老司国产精品视频91| 操美女免费网站| 亚洲国产亚洲综合在线尤物| 中国国产A一级毛片| 最新精品久久精品| 99久久精品国产自免费| 香蕉伊思人视频| 国产第八页| 久久熟女AV| 亚洲精品手机在线| 亚洲人成影院在线观看| 亚洲成人在线免费| 毛片久久久| 国产区在线看| 国产午夜看片| 日韩中文字幕亚洲无线码| 婷婷伊人久久| 天天躁日日躁狠狠躁中文字幕| 福利国产微拍广场一区视频在线| 国产真实乱子伦视频播放| 天天色天天综合| 不卡的在线视频免费观看| 欧美成a人片在线观看| 无套av在线| 无码日韩人妻精品久久蜜桃| 国产精品网址在线观看你懂的| 久久黄色免费电影| 99伊人精品| A级全黄试看30分钟小视频| 国产综合精品日本亚洲777| 国产精品va| 91精品综合| 久久久精品国产亚洲AV日韩| 中文字幕日韩视频欧美一区| 亚洲色精品国产一区二区三区| 日韩123欧美字幕| 国产亚洲精| 国产毛片不卡| 在线另类稀缺国产呦| 国产一二三区在线| 国产精品精品视频| 熟女成人国产精品视频| 91探花在线观看国产最新| 亚洲啪啪网| 欧美性爱精品一区二区三区 | 夜夜操天天摸| 国产呦视频免费视频在线观看| 国产好痛疼轻点好爽的视频| 欧美国产在线一区| 亚洲人成亚洲精品| 91在线丝袜| 深爱婷婷激情网| 亚洲欧美自拍中文| 日韩AV手机在线观看蜜芽| 亚洲成人网在线播放| 天天综合网色| 在线观看国产黄色| 色欲色欲久久综合网| 亚洲美女视频一区| 久久久久国色AV免费观看性色| 亚洲女同欧美在线| 日韩国产亚洲一区二区在线观看| jizz国产在线| 成人午夜天| 日本国产精品一区久久久| 在线无码av一区二区三区| 国产乱子伦手机在线| 国产精品精品视频| 国产亚洲精品97在线观看| 久久精品一卡日本电影| 中文字幕 91| 99久久精品国产麻豆婷婷| 欧美日韩免费在线视频| 亚洲69视频| av在线5g无码天天| 香港一级毛片免费看| 久久综合九色综合97网|