MySQLにおける「いろいろな地球」はどれくらい「いろいろ」なのか

これは、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2022 の14日目の記事です。

はじめに

 地域や時代によって様々な「地球の形のモデル」が使われてきたことは、これまで何度も話題にしてきたので知っている人も多いと思う。では、どんなパラメタの違いがあるのか、それらにはどれくらいのバリエーションがあるのか、このたび整理したので公開する。

「バリエーション」の根拠

 この記事ではMySQLの使用を前提とする。MySQLの世界において「知っているすべての世界」は、INFORMATION_SCHEMA の ST_SPATIAL_REFERENCE_SYSTEMS テーブル(以下ST_SRSと略記す)に記述されている。つまり、このテーブルで定義されている内容の違いが、世界の違いであると言える。
 そこで今回は、このテーブルにて定義されている内容を精査することにした。

ST_SRS の内容

 ST_SRSには、地理座標系と投影座標系の両方の定義が格納されている。今回は地球のモデルのバリエーションを確認したいので、地理座標系の定義を確認することになる。MySQL 8.0.31 時点で、ST_SRSには 5152件が登録されているが、そのうち 地理座標に関する定義は 483件である。

ST_SRS全件 地理座標系件数 投影座標系件数
5152 483 4668

SPHEROID

 まずは何はなくとも SPHERO(球体)情報である。地球を回転楕円体としてモデル化したとき、その形は「大きさ」と「つぶれ具合」によって表される。「大きさ」に相当するのが長半径(赤道半径)、「つぶれ具合」に相当するのが扁平率である。扁平率は、南北方向が長半径に対してどれくらい潰れているか(短いか)を表す数字で、この逆数ぶんだけ短くなる。具体的な数字で説明すると、「地球の長半径はおよそ6378kmで、南北方向はそれよりも約 298分の1だけ短い」ということになる。


 さて、このSPHEROのバリエーション。地域ごとの歴史的経緯や、測量技術の進化などに伴い、実に50ものバリエーションが ST_SRSには登録されている。日本が21世紀に入る直前まで使っていた「ベッセル楕円体(Bessel 1841)」や、現在の日本が使っている JGD2000, JGD2011 らが採用している 「GRS 1980」も含まれていることがわかる。中には、まったく扁平していない真球のモデルもあるのが面白い。

SRS名称 長半径 扁平率
Clarke 1866 Authalic Sphere 6370997 0
GRS 1980 Authalic Sphere 6371007 0
International 1924 Authalic Sphere 6371228 0
Zach 1812 6376045 310
Plessis 1817 6376523 308.64
Danish 1876 6377019.27 300
Everest 1830 (1937 Adjustment) 6377276.345 300.8017
Everest 1830 (RSO 1969) 6377295.664 300.8017
Everest 1830 (1967 Definition) 6377298.556 300.8017
Everest 1830 (1975 Definition) 6377299.151 300.8017255
Everest (1830 Definition) 6377299.366 300.8017255
Everest 1830 (1962 Definition) 6377301.243 300.8017255
Everest 1830 Modified 6377304.063 300.8017
Airy Modified 1849 6377340.189 299.3249646
Bessel 1841 6377397.155 299.1528128
Bessel Namibia (GLM) 6377483.865 299.1528128
Bessel Modified 6377492.018 299.1528128
Airy 1830 6377563.396 299.3249646
Average Terrestrial System 1977 6378135 298.257
WGS 72 6378135 298.26
PZ-90 6378136 298.2578393
OSU86F 6378136.2 298.2572236
OSU91A 6378136.3 298.2572236
GSK-2011 6378136.5 298.2564151
CGCS2000 6378137 298.2572221
GEM 10C 6378137 298.2572236
GRS 1980 6378137 298.2572221
WGS 84 6378137 298.2572236
IAG 1975 6378140 298.257
NWL 9D 6378145 298.25
Australian National Spheroid 6378160 298.25
GRS 1967 Modified 6378160 298.25
GRS 1967 6378160 298.2471674
Indonesian National Spheroid 6378160 298.247
Helmert 1906 6378200 298.3
Clarke 1866 6378206.4 294.9786982
Krassowsky 1940 6378245 298.3
Clarke 1880 (Arc) 6378249.145 293.4663077
Clarke 1880 (RGS) 6378249.145 293.465
Clarke 1880 6378249.145 293.4663077
Clarke 1880 (IGN) 6378249.2 293.4660213
Clarke 1880 (SGA 1922) 6378249.2 293.46598
Hough 1960 6378270 297
Hughes 1980 6378273 298.2794111
Clarke 1858 6378293.645 294.2606764
Struve 1860 6378298.3 294.73
War Office 6378300 296
Clarke 1880 (Benoit) 6378300.789 293.4663155
Clarke 1880 (international foot) 6378306.37 293.4663077
International 1924 6378388 297

本初子午線

 次に紹介するのが、本初子午線だ。我々は「グリニッチ天文台を通る線」として習ったはずだ(世代による)。そもそも子午線(子さんと午さんを結ぶ線、つまり経線)は、緯線とは異なり、どこから始めるかは自然には定められないため、便宜上決めるものとなる。歴史上、様々な本初子午線が使われていた。グリニッチ以外のものは現在は使われていないと思っている(想像)が、どうだろうか。 世界で一番本初子午線への対応が遅れたのは、21世紀の声が聞こえる間近まで「うちの本初子午線よりも9分遅れてる "あの"子午線」のように呼んでいたフランスではないだろうか。(もちろん実務上はグリニッチ子午線を採用していたはずだが)

名称 グリニッチからの経度差
Ferro -17.67777778
Madrid -3.687938889
Bogota -74.08091667
Lisbon -9.131906111
Greenwich 0
Paris RGS 2.596898148
Paris 2.5969213
Brussels 4.367975
Bern 7.439583333
Oslo 10.72291667
Rome 12.45233333
Stockholm 18.05827778
Athens 23.7163375
Jakarta 106.8077194

 ちなみにこれら14種の本書子午線の定義があるが、483件の地理座標系のうち458件がグリニッチを採用している。

角度の単位

 角度の単位には、デグリー(度)とグラードの2種類がある。

unit
degree 0.017453293
grad 0.015707963

角度1度は 1/(180/π) = 0.017453293 ラジアンであり、
グラードは1周を400グラードとする単位なので、1グラードは 1/(200/π) =0.015707963 ラジアンとなる。

ちなみにグラードを使っているSRSは6個あるが、すべて以下のとおりフランスのものである。

SRS_NAME SRS_ID(SRID)
NTF (Paris) 4807
Tananarive (Paris) 4810
Voirol 1875 (Paris) 4811
Carthage (Paris) 4816
Voirol 1879 (Paris) 4821
ATF (Paris) 4901

lat-lon 順序

 MySQLでは、ほぼすべての地理座標系で lat-lon (緯度-経度)順を採る。
しかし7件だけ lon-lat を採るものが含まれていた。すべて元となる lat-lon の定義が存在しているものなので、何らかの事情で別途 SRIDが割り振られたのだろうか。事情を知る人がいれば追加エントリなどで教えてほしい。

SRS_NAME SRS_ID(SRID)
RGTAAF07 7073
RGTAAF07 (lon-lat) 7133
RGSPM06 4463
RGSPM06 (lon-lat) 7035
RGM04 4470
RGM04 (lon-lat) 7039
RGFG95 4624
RGFG95 (lon-lat) 7041
RGR92 4627
RGR92 (lon-lat) 7037
RGAF09 5489
RGAF09 (lon-lat) 7086
RGF93 4171
RGF93 (lon-lat) 7084

TOWGS84

WGS84 への変換のためのパラメタ情報を持つものと持たないものがある。
我らが JGD2011 は持たない、JGD2000は持つ、である。日本測地系(Tokyo 1892)もTOWGS84情報を持たない。

WGS84への変換パラメタを持つものと持たないもの:

持つもの 持たないもの
329 154

TOWGS84は7つのパラメタを持つ。今の座標系からどのように並行移動、拡大縮小、回転をすればWGS84の座標位置になるのかを表しているもので、詳しくは 4年ほどまえに @boiledorange73 さんが説明してくださった記事「JGD2011の座標系にtowgs84が無いとかそもそもtowgs84って何やねん」および、それを読んで私が試してみた記事 「JGD2011からのST_Transform()、JGD2011へのST_Transform() - sakaikの日々雑感~(T)編」があるので参照していただきたい。私自身もすっかり忘れていて、久々に読み返して新鮮な気分になった。なお、MySQLに登録されている TOWGS84値の出典については今でも不明のままである。EPSG Geodetic Parameter Dataset には TOWGS84に関する情報は含まれていない。

まとめ

 以上が、MySQLの ST_SRSテーブルの情報から読み解く「地球の形」だ。 本書子午線やlat-lonや角度の単位など、ほぼ一択のものも多くあり、実質、準拠楕円体の違いが大きな部分を占めていることが分かるだろう。 想像していたよりもシンプルだったのではないだろうか。
 この情報でGISに興味を持った方や、これを見て何らかの刺激を受けてくださった方から、また色々なことを教えていただけるのを楽しみにしている。

An image by Dall-E