📄 gk2bl.m
字号:
function [b,l]=gk2bl(R,H,ell)
% [B,L]=gk2bl(R,H)
% [B,L]=gk2bl(R,H,ELLIPS)
%
% Conversion from Gauss-Krueger coordinates (transverse mercator projection of german convention)
% in geodetic ellipsoidal coordinates
%
% Input: east [m], north [m]
% ELLIPS is a string: 'wgs84', 'grs80', oder 'bessel' (default)
% Output: latitude [deg.decimals], longitude [deg.decimals]
%
% closed formulas, no iteration
%
% (c) iapg - Zeb - 11/96
if nargin < 3, ell = 'bessel'; end % Bessel default
ell = lower(deblank(ell));
if strcmp(ell,'bessel') % Bessel-Ellipsoid
a = 6377397.155; % grosse Halbachse
c = 6398786.849; % a*a/b
es = 0.006719218798; % (a*a-b*b)/(b*b)
n = 0.001674184801; % (a-b)/(a+b)
elseif strcmp(ell,'wgs84') % WGS84-Ellipsoid
a = 6378137;
c = 6399593.626;
es = 0.00673949674226;
n = 0.00167922038638;
elseif strcmp(ell,'grs80') % GRS80-Ellipsoid
a = 6378137;
c = 6399593.626;
es = 0.00673949677548;
n = 0.00167922039463;
else
error('Undefined Ellipsoid')
end
rho=180 / pi;
% GK in der Bundesrepublik Deutschland
masstab = 1;
y0 = 500000;
% Meridianbogenlaenge
x = H;
g = x / masstab;
% Berechnung der Fusspunktsbreite aus Meridianbogenlaenge
kz = floor(R * 1e-6);
l0 = kz * 3;
y = R - (kz + 0.5)*1e6;
bs = (1+n) / a / (1 +n^2 / 4 + n^4 / 64) * g;
bf3 = bs + 1.5*n * (1 - n^2*9/16) * sin(2*bs);
bf2 = bf3 + n^2/16 * ( 21 - 27.5* n^2) * sin (4*bs);
bf1 = bf2 + 151/96 * n^3 * sin(6*bs);
bf = bf1 + 1097/512 * n^4 * sin(8*bs);
% Berechnung von Breite und Laenge
eta2 = es * cos(bf).^2;
v2 = 1 + eta2;
v = sqrt(v2);
ys = y / masstab / c;
ll = v ./ cos(bf) .* sinh(ys) .* (1 - eta2.^2 ./ 6 .* ys.^2 - 0.1*es*ys.^4);
lroh = atan(ll);
bb = tan(bf) .* cos(v .* lroh) .* (1 - eta2 .* lroh.^4 / 6);
broh = atan (bb);
b = broh * rho;
l = lroh * rho + l0;
% -------------------Ende----------------------------------Zeb,11/96--------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -