関数latlon2xy マニュアル

(The documentation of function latlon2xy)

Last Update: 2023/3/30


◆機能・用途(Purpose)

緯度経度で与えられた座標を平面直角座標に変換する。
Convert a coordinate given by the latitude and longitude to a cartesian.


◆形式(Format)

#include <coordinate.h>
inline void latlon2xy
(const double N,const double E,const double refN,const double refE,
 double ∗x,double ∗y)


◆引数(Arguments)

N 変換したい地点の緯度(\(^{\circ}\))。
The latitude (\(^{\circ}\)) of the point to convert.
E 変換したい地点の経度(\(^{\circ}\))。
The longitude (\(^{\circ}\)) of the point to convert.
refN 投影の基準点の緯度(\(^{\circ}\))。
The latitude (\(^{\circ}\)) of the reference point of the projection.
refE 投影の基準点の経度(\(^{\circ}\))。
The longitude (\(^{\circ}\)) of the reference point of the projection.
x 変換後の\(x\)座標(基準点から東方向、m)の代入先。 宣言しただけのdouble型変数を&を付けて与える。
The memory into which the \(x\) coordinate (in meters; eastward from the reference point) computed by the conversion will be inserted. Give an empty double-type variable with &.
y 変換後の\(y\)座標(基準点から北方向、m)の代入先。 宣言しただけのdouble型変数を&を付けて与える。
The memory into which the \(y\) coordinate (in meters; northward from the reference point) computed by the conversion will be inserted. Give an empty double-type variable with &.


◆使用例(Example)

double x,y;
latlon2xy(35.89278,137.48028,36.0,138.5,&x,&y);


◆用いている計算式(Formula used)

計算式は河瀬(2011)に基づく。 なお元の式は\(x\)が北方向、\(y\)が東方向になっているが、 本プログラムでは\(x\)を東方向、\(y\)を北方向に取る。
The formula is based on Kawase (2011). The original formula defines \(x\) and \(y\) directions to be north and east, respectively, whereas this program uses \(x\) to be east and \(y\) to be north.

このプログラムでは表1に示す定数と表2に示す変数を用いる。 なお楕円体としてはWGS84で用いられているITRF座標系GRS80の値を使用した。
This program uses constants listed in Table 1 and variables listed in Table 2. Here the GRS80 ellipsoid in the ITRF coordinate for WGS84 is used.


表1. このプログラムで使用する定数 (Constants used in this program)
記号
Notation
意味
Description

Value
\(a\) 楕円体の長半径(m)
The longer radius (m) of the ellipsoid
6378137.0
\(F\) 楕円体の扁平率の逆数
The inverse of the ellipticity of the ellipsoid
298.257222101
\(m_0\) 縮尺係数
The scale factor
0.9999


表2. このプログラムで使用する変数 (Variables used in this program)
記号
Notation
意味
Description
\(\phi\) 変換したい地点の緯度(rad)
The latitude (rad) of the point to convert
\(\lambda\) 変換したい地点の経度(rad)
The longitude (rad) of the point to convert
\(\phi_0\) 投影の基準点の緯度(rad)
The latitude (rad) of the reference point of the projection
\(\lambda_0\) 投影の基準点の経度(rad)
The longitude (rad) of the reference point of the projection


これらの定数及び変数を用いて緯度が\(\phi\), 経度が\(\lambda\)の地点の \(x\)座標(東方向)および\(y\)座標(北方向)は以下の式で計算できる。
Using these constants and variables, the \(x\) and \(y\) coordinates (east and north, respectively) at the point of latitude \(\phi\) and longitude \(\lambda\) is computed by the formula below.


●緯度経度によらない定数 (Constants independent of the latitude and longitude)

\[\begin{equation} n=\frac{1}{2F-1} \end{equation}\] \[\begin{equation} \alpha_1 =\frac{1}{2}n-\frac{2}{3}n^2+\frac{5}{16}n^3 +\frac{41}{180}n^4-\frac{127}{288}n^5 \end{equation}\] \[\begin{equation} \alpha_2 =\frac{13}{48}n^2-\frac{3}{5}n^3+\frac{557}{1440}n^4+\frac{281}{630}n^5 \end{equation}\] \[\begin{equation} \alpha_3=\frac{61}{240}n^3-\frac{103}{140}n^4+\frac{15061}{26880}n^5 \end{equation}\] \[\begin{equation} \alpha_4=\frac{49561}{161280}n^4-\frac{179}{168}n^5 \end{equation}\] \[\begin{equation} \alpha_5=\frac{34729}{80640}n^5 \end{equation}\]

●緯度経度を用いて計算される値 (Values computed from the latitude and longitude)

\[\begin{equation} t=\sinh\left[ \tanh^{-1}(\sin\phi) -\frac{2\sqrt{n}}{1+n}\tanh^{-1}\left(\frac{2\sqrt{n}}{1+n}\sin\phi\right) \right] \end{equation}\] \[\begin{equation} \xi=\tan^{-1}\left[\frac{t}{\cos(\lambda-\lambda_0)}\right] \end{equation}\] \[\begin{equation} \eta=\tanh^{-1}\left[\frac{\sin(\lambda-\lambda_0)}{\sqrt{1+t^2}}\right] \end{equation}\]

●関数 (Function)

\[\begin{equation} S(\phi)=\frac{a}{1+n}\sum_{j=0}^5S_{1j}^2S_{2j}(\phi) \end{equation}\] \[\begin{equation} S_{1j}=\prod_{k=1}^j\left(\frac{3n}{2k}-n\right) \end{equation}\] \[\begin{equation} S_{2j}(\phi)=\phi+\sum_{l=1}^{2j}S_{3jl} \end{equation}\] \[\begin{equation} S_{3jl}=\left(\frac{1}{l}-4l\right)\sin(2l\phi)\prod_{m=0}^lS_{4jm} \end{equation}\] \[\begin{equation} S_{4jm}= \begin{cases} \frac{3n}{2j+m}-n & (m\mbox{が偶数}\textcolor[named]{Gray}{\mbox{ / for even $m$}}) \\ \frac{1}{\frac{3n}{2j-(m-1)}-n} & (m\mbox{が奇数}\textcolor[named]{Gray}{\mbox{ / for odd $m$}}) \end{cases} \end{equation}\] \[\begin{equation} S_p=S\left(\frac{\pi}{2}\right) \end{equation}\] \[\begin{equation} S_{\phi_0}=S\left(\phi_0\right) \end{equation}\]

● xy座標の計算式 (Formula for the xy coordinate)

\[\begin{equation} x=\frac{2m_0S_p}{\pi} \left[\eta+\sum_{j=1}^5\alpha_j\cos(2j\xi)\sinh(2j\eta)\right] \end{equation}\] \[\begin{equation} y=\frac{2m_0S_p}{\pi} \left[\xi+\sum_{j=1}^5\alpha_j\sin(2j\xi)\cosh(2j\eta)\right] -m_0S_{\phi_0} \end{equation}\]

◆検証(Validation)

御嶽山山頂の緯度経度 \((35^{\circ}53’34”N=35.89278^{\circ}N\), \(137^{\circ}28’49”E=137.48028^{\circ}E\)) を世界測地系8系におけるxy座標に換算する。 世界測地系8系の基準点は36\(^{\circ}\)N, 138.5\(^{\circ}\)Eであるので
     latlon2xy(35.89278,137.48028,36.0,138.5,&x,&y);
とすることでこの変換を実行できる。 結果は\(x\)(東)\(=-92058.3366\)(m)、\(y\)(北)\(=-11415.4240\)(m)となる。 国土地理院のWEB変換ツール を用いると \(X\)(北)\(=-11415.4240\)(m), \(Y\)(東)\(=-92058.3366\)(m) となり、両者の結果は完全に一致する。
Let us convert the latitude and longitude of the summit of Mt. Ontake, Japan (\(35^{\circ}53’34”N=35.89278^{\circ}N\), \(137^{\circ}28’49”E=137.48028^{\circ}E\)) to the xy coordinate on the Japanese zone 8 of WGS84. The reference point of zone 8 is 36\(^{\circ}\)N, 138.5\(^{\circ}\)E. Thus the command to convert is
     latlon2xy(35.89278,137.48028,36.0,138.5,&x,&y);
the result of which is \(x\) (east) \(=-92058.3366\) (m) and \(y\) (north) \(=-11415.4240\) (m). A conversion of the same latitude and lontitude using a WEB conversion tool of GSJ results in \(X\) (north) \(=-11415.4240\) (m) and \(Y\) (east) \(=-92058.3366\) (m). The two results are perfectly consistent to each other.


◆引用文献(References)