袁錢梅
(貴州省第二測繪院,貴州 貴陽 550000)
Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python 的設計具有很強的可讀性,相比其他語言經(jīng)常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。Python 吸收了Perl,TCL等腳本語言的優(yōu)點,使得Python 具備Tcl 的擴展性,同時又具備Perl 的文本解析和匹配能力。
高斯-克呂格投影是一種等角橫軸切橢圓柱投影。它是假設一個橢圓柱面與地球橢球體面橫切于某一條經(jīng)線上,按照等角條件將中央經(jīng)線東、西各3°或1.5°經(jīng)線范圍內的經(jīng)緯線投影到橢圓柱面上,然后將橢圓柱面展開成平面而成的。
這種投影,將中央經(jīng)線投影為直線,其長度沒有變形,與球面實際長度相等,其余經(jīng)線為向極點收斂的弧線,距中央經(jīng)線愈遠,變形愈大。赤道線投影后是直線,但有長度變形。除赤道外的其余緯線,投影后為凸向赤道的曲線,并以赤道為對稱軸。經(jīng)線和緯線投影后仍然保持正交。所有長度變形的線段,其長度變形比均大于1,隨遠離中央經(jīng)線,面積變形也愈大。若采用分帶投影的方法,可使投影邊緣的變形不致過大。我國各種大、中比例尺地形圖采用了不同的高斯-克呂格投影帶。其中大于1:1萬的地形圖采用3°帶;1:2.5萬至1:50萬的地形圖采用6°帶。
Python 是中許多功能是由一系列的模塊組成的,每個模塊可以是一個py 為后綴的文件。模塊也可以理解為lib 庫,如果需要使用某個模塊中的函數(shù)或對象,則要導入這個模塊才可以使用;除了系統(tǒng)默認的模塊(內置函數(shù))不需要導入。在實際使用中高斯投影計算是使用在實際工作中的各個部分的,為方便調用,采用Python 的模塊方式對高斯計算進行封裝,可高效利用模塊在不同的應用中進行計算。
高斯投影計算分正算和反算,正算為經(jīng)緯度坐標計算到投影坐標;反算為投影坐標計算到經(jīng)緯度坐標。高斯投影正算需要確定投影后的中央經(jīng)度,及投影橢球參數(shù)信息;如采用CGCS2000 坐標系及1980 西安坐標系其采用橢球參數(shù)不同,經(jīng)過正算的投影坐標即不同。
由于Python 為腳本語言,其在進行科學計算時小數(shù)位取位是無法保證計算精度的,在Python 中實現(xiàn)高斯投影計算單純的使用其提供的基本計算函數(shù)是無法滿足計算精度需求的,因此需要借助Python 提供的模塊進行提高精度計算。
Python 提供了decimal 模塊用于十進制數(shù)學計算,它具有以下特點:
1.提供十進制數(shù)據(jù)類型,并且存儲為十進制數(shù)序列;
2.有界精度:用于存儲數(shù)字的位數(shù)是固定的,可以通過decimal.getcontext ().prec=x 來設定,不同的數(shù)字可以有不同的精度;
3.浮點:十進制小數(shù)點的位置不固定 (但位數(shù)是固定的);
通過Python 提供的IDLE 開發(fā)環(huán)境進行代碼編制與程序調試,程序實現(xiàn)見下圖:
為保證計算精度與準確率,筆者利用了國內開發(fā)的MAPGIS、EPS 軟件與計算結果進行比對,同時也使用了ARCGIS軟件投影計算進行比對,比對后采用Python 計算的結果均能保證小數(shù)位后6 位的精度,已能滿足高斯投影的計算要求。
采用Python 開發(fā)環(huán)境與機制編制高斯投影計算模塊,可高效處理各類的高斯計算;再配合ARCGIS 的ARCPY 模塊可在Python 下高效的處理各類地理空間數(shù)據(jù);并具有較好的移植性與通用性,并也能在不同的操作系統(tǒng)中進行計算。
[1]《Python 標準庫》機械工業(yè)出版社
[2]《控制測量學》武漢測繪科技大學出版社