Algorytm Hirvonena – algorytm służący do transformacji współrzędnych ortokartezjańskich (prostokątnych) x, y, z na współrzędne geodezyjne B, L, h. Jest to proces iteracyjny. W wyniku 3-4-krotnego powtarzania procedury można przeliczyć współrzędne na poziomie dokładności 1 cm.
Współrzędne geodezyjne i kartezjańskie
wychodzimy ze wzorów na x,y,z:
X
=
(
N
+
h
)
cos
B
cos
L
,
{\displaystyle X=(N+h)\cos B\cos L,}
Y
=
(
N
+
h
)
cos
B
sin
L
,
{\displaystyle Y=(N+h)\cos B\sin L,}
Z
=
[
N
(
1
−
e
2
)
+
h
]
sin
B
.
{\displaystyle Z=[N(1-e^{2})+h]\sin B.}
Y
X
=
(
N
+
h
)
cos
B
sin
L
(
N
+
h
)
cos
B
cos
L
=
tg
L
,
{\displaystyle {\frac {Y}{X}}={\frac {(N+h)\cos B\sin L}{(N+h)\cos B\cos L}}={\text{tg }}L,}
L
=
arctg
Y
X
.
{\displaystyle L={\text{arctg }}{\frac {Y}{X}}.}
Z
X
2
+
Y
2
=
[
N
(
1
−
e
2
)
+
h
]
sin
B
(
N
+
H
)
cos
B
=
N
+
N
e
2
+
h
N
+
h
tg
B
=
(
N
+
h
N
+
h
−
N
e
2
N
+
h
)
tg
B
,
{\displaystyle {\frac {Z}{\sqrt {X^{2}+Y^{2}}}}={\frac {[N(1-e^{2})+h]\sin B}{(N+H)\cos B}}={\frac {N+Ne^{2}+h}{N+h}}{\text{tg }}B=\left({\frac {N+h}{N+h}}-{\frac {Ne^{2}}{N+h}}\right){\text{tg }}B,}
Z
X
2
+
Y
2
=
(
1
−
e
2
N
N
+
h
)
tg
B
,
{\displaystyle {\frac {Z}{\sqrt {X^{2}+Y^{2}}}}=\left(1-e^{2}{\frac {N}{N+h}}\right){\text{tg }}B,}
tg
B
=
Z
X
2
+
Y
2
(
1
−
e
2
N
N
+
h
)
−
1
.
{\displaystyle {\text{tg }}B={\frac {Z}{\sqrt {X^{2}+Y^{2}}}}\left(1-e^{2}{\frac {N}{N+h}}\right)^{-1}.}
Ostatecznie:
tg
B
(
k
+
1
)
=
Z
X
2
+
Y
2
(
1
−
e
2
N
k
N
k
+
h
k
)
−
1
{\displaystyle {\text{tg }}B_{(k+1)}={\frac {Z}{\sqrt {X^{2}+Y^{2}}}}\left(1-e^{2}{\frac {N_{k}}{N_{k}+h_{k}}}\right)^{-1}}
przy czym:
tg
B
(
k
=
0
)
=
Z
X
2
+
Y
2
(
1
−
e
2
)
−
1
.
{\displaystyle {\text{tg }}B^{(k=0)}={\frac {Z}{\sqrt {X^{2}+Y^{2}}}}(1-e^{2})^{-1}.}
Wysokość elipsoidalna (h)
edytuj
X
2
+
Y
2
=
(
N
+
h
)
cos
B
,
{\displaystyle {\sqrt {X^{2}+Y^{2}}}=(N+h)\cos B,}
X
2
+
Y
2
cos
B
=
N
+
h
,
{\displaystyle {\sqrt {X^{2}+Y^{2}}}\cos B=N+h,}
h
=
X
2
+
Y
2
cos
B
−
N
.
{\displaystyle h={\frac {\sqrt {X^{2}+Y^{2}}}{\cos B}}-N.}
obliczenie długości geodezyjnej L ,
obliczenie szerokości geodezyjnej, B dla k = 0,
Na podstawie tego B0 liczymy N0 i h0 . Następnie mając dane N0 i h0 liczymy na ich podstawie B1 . Na podstawie B1 liczymy N1 i h1 itd. Zazwyczaj wystarczają 3 iteracje. Proces jest powtarzany do uzyskania zadowalającej dokładności.