座標系¶
Mapray JS に関連する主な座標系には、次の4種類があります。
- 地理座標系(経度・緯度)
- GOCS: Geocentric Orthogonal Coordinate System (地心直交座標系)
- MLOCS: Mapray Local Orthogonal Coordinate System (任意地点を原点とする直交座標系)
- 視点座標系
表記について
このドキュメントでは、\((x, y, z)\) が (赤, 緑, 青) に対応するように記述します。
GOCS: Geocentric Orthogonal Coordinate System (地心直交座標系)¶
GOCS は下記のように定義されます。
- 原点を地球中心とする
- \(z\) 軸を北極の方向とする
- \(x\) 軸をグリニッジ子午線と赤道との交点方向とする
- \(y\) 軸は東経90度方向とする
- 座標値の単位はメートルとする

MLOCS: Mapray Local Orthogonal Coordinate System¶
MLOCS は任意の点を原点とする直交座標系で、下記のように定義されます。
- 地球上の任意の点 \(p_o\) を原点とする
- \(z\) 軸を上方向(地球中心と反対方向)
- \(y\) 軸を北方向(\(z\) 軸に垂直)
- 右手系で残りの軸を \(x\) 軸とする
- 座標値の単位はメートルとする

MLOCS 原点の経度、緯度を \(\lambda, \phi\) としたとき(単位はラジアン)、GOCS 座標系への変換行列は下記のように計算されます。
\(r (= 6378137)\) は地球半径 [\(m\)] 。
この変換行列は、 mapray.GeoPoint.getMlocsToGocsMatrix() によって計算することができます。
const pos = new mapray.GeoPoint( 139.7773163, 35.6318177 );
const mat = pos.getMlocsToGocsMatrix( mapray.GeoMath.createMatrix() );
地理座標系(経度・緯度)¶
地理座標系は、一般的に使用される経度・緯度により表現される座標系です。 Mapray で扱う地理座標は WGS84 で表現されていることを前提として扱います。
地理座標系からGOCSへの変換¶
地理座標系 \((\lambda, \phi, h)\) から GOCS (地心直交座標系) \(\vec{p}=(x, y, z)\) への変換は次のようになります。
\(r (= 6378137)\) は地球半径 [\(m\)] 。
Mapray JS では地球の形状が楕円体ではなく球として描画されます。 ※厳密には WGS84 で表された経度・緯度の座標値を上記計算式に従って計算した3次元位置に描画されます。
mapray.GeoPoint.getAsGocs() を使用して、下記のように計算することができます。
const point = new mapray.GeoPoint( 139.7, 35.6, 10 );
const gocsPoint = point.getAsGocs( mapray.GeoMath.createVector3() );
GOCSから地理座標系への変換¶
GOCS (地心直交座標系) \((x, y, z)\) から地理座標系 \((\lambda, \phi, h)\) への変換は次のようになります。
\(r (= 6378137)\) は地球半径 [\(m\)] 。
GOCS から地理座標系へは mapray.GeoPoint.setFromGocs() によって計算することができます。
const point = new mapray.GeoPoint();
point.setFromGocs( [ -3901767.687704394, 3435006.5102036544, 3697593.3241490265 ] );
Info
mapray.GeoPoint の引数は、 経度, 緯度, 高度 の順になります
視点座標系¶
視点座標系はカメラ位置を原点とした3次元直交座標系で、GOCS 上で下記のように定義されます。
- カメラの位置(投影中心)を原点とする
- \(x\) 軸をカメラの右方向
- \(y\) 軸をカメラの上方向
- \(z\) 軸をカメラの後ろ方向
- 座標値の単位はメートルとする

視点座標系からGOCS座標系への変換行列は Camera.view_to_gocs から設定および取得を行うことができます。
変換行列について¶
Mapray JS において \(4 \times 4\) 変換行列 \(M\) による、3次元位置 \((p_x, p_y, p_z)\) の変換は下記のように行います。
変換後の3次元座標は \(\left(\frac{q_x}{q_w}, \frac{q_y}{q_w}, \frac{q_z}{q_w}\right)\) となります。
視点座標系は Camera.view_to_gocs プロパティに設定する変換行列 \(A\) は、次のように第4行が \((0, 0, 0, 1)\) でなければなりません。
座標系の相互変換¶
図のように相互変換を行うことができます。
モデルの表示に関連する座標系¶
3D モデルの配置に関連する座標系については、 Entities - ModelEntity - Coordinate system を参照してください。