これは、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に関する情報は含まれていない。