MATLAB實現高斯-克呂格投影正算-即經緯度轉爲x和y
高斯-克呂格投影簡介
高斯-克呂格投影,是由德國數學家、物理學家、天文學家高斯於1822年代首次提出,後經德國大地測量學家克呂格於1912年對投影公式加以補充,故稱高斯-克呂格投影,又名"等角橫切橢圓柱投影”,是地球橢球面和平面間正形投影的一種。該投影是用一個設想的圓柱筒橫置於地球表面,與地球相切於某一經線(中央經線),圓柱的中心軸位於赤道面內,按等角條件將地球橢球面投影於橢球圓柱面上。
爲控制投影變形,先按一定的經度差(6°或者3°)將地球表面劃分爲若干投影帶,再使圓柱面依次和每一帶的中央經線相切,並把各帶中央經線東西兩側一定經度差範圍內的經緯線網投影到圓柱上,然後從兩級將該圓柱面切開展平,構成地球各帶經緯線網在平面上的圖形。
高斯-克呂格投影正算公式
x=X+Ntcos2Bρ2l2[0.5+241(5−t2+9η2+4η4)cos2Bρ2l2+7201(61−58t2+t4)cos4Bρ4l4](1)y=NcosBρl[1+61(1−t2+η2)cos2Bρ2l2+1201(5−18t2+t4+14η2−58t2η2)cos4Bρ4l4](2)其中,X爲中央子午線弧長,N爲卯酉圈曲率半徑,t=tanB,ρ=180×3600/π爲弧度秒,η2=e′2cos2B,e′爲地球橢球第二偏心率,B爲當地緯度。卯酉圈曲率半徑及中央子午線弧長公式如下:N=1−e2sin2Ba(3) X=a(1−e2)(A′arcB−B′sin2B+C′sin4B−D′sin6B+E′sin8B−F′sin10B+G′sin12B)(4)子午線弧長計算公式中的各項符號具體公式如下:A′=1+43e2+6445e4+256175e6+1638411025e8+6553643659e10+1048576693693e12 B′=83e2+3215e4+1024525e6+40962205e8+13107272765e10+524288297297e12 C′=25615e4+1024105e6+163842205e8+6553610396e10+83886081486485e12 D′=307235e6+4096105e8+26214410395e10+104857655055e12 E′=131072315e8+5242883465e10+838860899099e12 F′=1310720693e10+52428809909e12 G′=83886081001e12其中,e爲地球橢球第一偏心率,a爲地球橢球長半軸。
注意1:當緯度已經爲弧度(π=180°)時ρ=1;
注意2:中國地區內,爲了避免出現負數,y需要加上500000m.
在WGS-84座標系中,a=6378137m,f=1/298.257223563,e2=2f−f2,e′2=(2f−f2)/(1−f2)
高斯-克呂格投影的MATLAB函數
function [x,y] = GaussProWGS84(Lat,Lon)
% Lat: Latitude(rad)
% Lon: longitude(rad)
% REF//程鵬飛,成英燕,文漢江,等.2000國家大地座標系實用寶典[M].
% //北京:測繪出版社,2008:144-148.
Lat = Lat*pi/180;
Lon = Lon*pi/180;
MedLon = 114*pi/180; %武漢的中央子午線經度
Eth.R0 = 6378137.0;
Eth.f = 1/298.257223563;
Eth.e12 = 2*Eth.f - Eth.f*Eth.f; % 0.00669437999014132
Eth.e22 = Eth.e12/((1 - Eth.f)*(1 - Eth.f));
%% 高斯投影正算公式
RN = Eth.R0/sqrt(1 - Eth.e12*sin(Lat)*sin(Lat));
Lon = Lon - MedLon;
Lon2 = Lon*Lon;
Lon4 = Lon2*Lon2;
tnLat = tan(Lat);
tn2Lat = tnLat*tnLat;
tn4Lat = tn2Lat*tn2Lat;
csLat = cos(Lat);
cs2Lat = csLat*csLat;
cs4Lat = cs2Lat*cs2Lat;
Eta2 = Eth.e22*cs2Lat;
NTBLP = RN*tnLat*cs2Lat*Lon2;
coe1 = (5 - tn2Lat + 9*Eta2 + 4*Eta2*Eta2)*cs2Lat*Lon2/24;
coe2 = (61 - 58*tn2Lat + tn4Lat)*cs4Lat*Lon4/720;
x = Merdian(Eth,Lat) + NTBLP*(0.5 + coe1 + coe2);
NBLP = RN*csLat*Lon;
coe3 = (1 - tn2Lat + Eta2)*cs2Lat*Lon2/6;
coe4 = (5 - 18*tn2Lat + tn4Lat + 14*Eta2 - 58*tn2Lat*Eta2)*cs4Lat*Lon4/120;
y = NBLP*(1 + coe3 + coe4) + 500000;
end
function X0 = Merdian(Eth,Lat)
% REF//過家春.子午線弧長公式的簡化及其泰勒級數解釋[J].測繪學報,2014,43(2):125-130.
S0 = Eth.R0*(1 - Eth.e12);
e2 = Eth.e12;
e4 = e2*e2;
e6 = e4*e2;
e8 = e6*e2;
e10 = e8*e2;
e12 = e10*e2;
A1 = 1 + 3*e2/4 + 45*e4/64 + 175*e6/256 + 11025*e8/16384 + 43659*e10/65536 + 693693*e12/1048576;
B1 = 3*e2/8 + 15*e4/32 + 525*e6/1024 + 2205*e8/4096 + 72765*e10/131072 + 297297*e12/524288;
C1 = 15*e4/256 + 105*e6/1024 + 2205*e8/16384 + 10395*e10/65536 + 1486485*e12/8388608;
D1 = 35*e6/3072 + 105*e8/4096 + 10395*e10/262144 + 55055*e12/1048576;
E1 = 315*e8/131072 + 3465*e10/524288 + 99099*e12/8388608;
F1 = 693*e10/1310720 + 9009*e12/5242880;
G1 = 1001*e12/8388608;
X0 = S0*(A1*Lat - B1*sin(2*Lat) + C1*sin(4*Lat) - D1*sin(6*Lat) +...
E1*sin(8*Lat) - F1*sin(10*Lat) + G1*sin(12*Lat));
end
函數代碼使用示例
示例中緯度爲30.4691868227°,經度爲114.3510760836°,中央子午線經度爲114°(武漢),參考真值爲:x(北向) = 3372178.140m,y(東向) = 533713.649m。計算結果如下。可以看出:計算結果完全正確,精度非常高。
參考資料
[1] 程鵬飛,成英燕,文漢江,等.2000國家大地座標系實用寶典[M]. 北京:測繪出版社,2008.
[2] 孔祥元, 郭際明. 大地測量學基礎[M]. 武漢: 武漢大學出版社, 2005.
[3] 過家春.子午線弧長公式的簡化及其泰勒級數解釋[J].測繪學報,2014,43(2):125-130.
完畢