広く世界で考えられている、さまざまな「地球の形」を見てみよう

はじめに
前回までの解説を通して、MySQLの「INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS」テーブルで定義されている情報の読み取り方にも随分慣れてきたところでしょうか。そこで今回は、このテーブルに定義されている面白情報を眺めていきましょう。
基礎知識のおさらい
INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMSテーブルには、地理情報を扱う上で必要となる「地球」に関する様々な情報が定義されています。日本でよく使われる「JGD2011測地系」では、以下のような情報が含まれています(抜粋)。
GEOGCS[
"JGD2011",
DATUM[
"Japanese Geodetic Datum 2011",
SPHEROID[
"GRS 1980",
6378137,298.257222101,
],
],
PRIMEM[
"Greenwich",
0,
],
UNIT[
"degree",
0.017453292519943278,
],
AXIS["Lat",NORTH],
AXIS["Lon",EAST],
AUTHORITY["EPSG","6668"]
]
今回は日本を飛び出して、広く世界が考えている「地球」を見ていきます。
地球の大きさと形~SPHEROIDを見る
前回で確認したように「SPHEROID」には地球の形に関する情報、具体的には回転楕円体の形が定義されています。ST_SPATIAL_REFERENCE_SYSTEMSテーブルからSPEHROIDに関する記述部分だけを抜き出す方法は色々ありますが、今回は以下のようなSQLで実行してみました。
SELECT DISTINCT LEFT(s, LOCATE(']', s)+1) s1
FROM
(SELECT REGEXP_SUBSTR(definition, 'SPHEROID.*\]],') s
FROM st_spatial_reference_systems
WHERE definition like 'GEOGCS%') t;
クエリの結果全体を下図に示します。地理座標系(GEOGCS)は全部で545個ありますが、SPHEROIDの種類は50に留まっていることが分かります。1つの地球に対して決して少なくない数ですが、この50は地球の大きさや形を知りたいという人類の努力の歴史の痕跡でもあります。
この中からいくつかピックアップして見てみましょう。3つのデータ項目が含まれており、前から順に回転楕円体名、長半径(赤道半径)、扁平率となっています。
SPHEROID["Bessel 1841", 6377397.155, 299.1528128 ] SPHEROID["Bessel Modified", 6377492.018, 299.1528128 ] SPHEROID["Bessel Namibia (GLM)", 6377483.865280419, 299.1528128 ] SPHEROID["GRS 1967", 6378160, 298.247167427] SPHEROID["GRS 1967 Modified", 6378160, 298.25 ] SPHEROID["GRS 1980", 6378137, 298.257222101] SPHEROID["GRS 1980 Authalic Sphere",6371007, 0 ] SPHEROID["WGS 84", 6378137, 298.257223563]
Tokyo測地系で使用されていたベッセル楕円体、JGD2000・JGD2011測地系などで使われているGRSそれぞれのバリエーションと、GPSなど世界的に使用されている「WGS84測地系」の楕円体の情報を抜き出してみました。少しずつ大きさ(長半径)や扁平率の異なる地球のモデルが存在していることが分かります。
PRIMEM
次に「PRIMEM」(本初子午線)の情報を見てみましょう。
mysql> SELECT DISTINCT LEFT(s, LOCATE(']', s)+1) s1
-> FROM
-> (SELECT REGEXP_SUBSTR(definition, 'PRIMEM.*\]],') s
-> FROM st_spatial_reference_systems
-> WHERE definition like 'GEOGCS%') t;
+-----------------------------------------------------------------+
| s1 |
+-----------------------------------------------------------------+
| PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]] |
| PRIMEM["Bern",7.439583333333334,AUTHORITY["EPSG","8907"]] |
| PRIMEM["Bogota",-74.08091666666667,AUTHORITY["EPSG","8904"]] |
| PRIMEM["Lisbon",-9.131906111111112,AUTHORITY["EPSG","8902"]] |
| PRIMEM["Jakarta",106.80771944444443,AUTHORITY["EPSG","8908"]] |
| PRIMEM["Ferro",-17.677777777777774,AUTHORITY["EPSG","8909"]] |
| PRIMEM["Rome",12.452333333333332,AUTHORITY["EPSG","8906"]] |
| PRIMEM["Paris",2.5969213,AUTHORITY["EPSG","8903"]] |
| PRIMEM["Brussels",4.3679749999999995,AUTHORITY["EPSG","8910"]] |
| PRIMEM["Stockholm",18.058277777777775,AUTHORITY["EPSG","8911"]] |
| PRIMEM["Athens",23.716337499999998,AUTHORITY["EPSG","8912"]] |
| PRIMEM["Oslo",10.722916666666666,AUTHORITY["EPSG","8913"]] |
| PRIMEM["Paris RGS",2.5968981481481492,AUTHORITY["EPSG","8914"]] |
| PRIMEM["Madrid",-3.6879388888888895,AUTHORITY["EPSG","8905"]] |
+-----------------------------------------------------------------+
14 rows in set (0.005 sec)
14個の本初子午線があることが分かります。現在では、多くの国でグリニッジを通る線を経度ゼロ度としていますが、それまでに様々な子午線が本初子午線として使われていたのです。この歴史は結構面白いものでもあるので、コラム(記事末)で簡単に紹介しました。
UNIT
続いて「UNIT」(単位)を見てみます。角度と言えば「度」や「ラジアン」が浮かぶと思いますが、ST_SPATIAL_REFERENCE_SYSTEMSテーブルを見るとそれ以外の表現があることを知ることができます。また、測地系の定義の中ではラジアン自体は直接は使われていないことも分かります。
mysql> SELECT DISTINCT LEFT(s, LOCATE(']', s)+1) s1
-> FROM
-> (SELECT REGEXP_SUBSTR(definition, 'UNIT.*\]],') s
-> FROM st_spatial_reference_systems
-> WHERE definition like 'GEOGCS%') t;
+--------------------------------------------------------------+
| s1 |
+--------------------------------------------------------------+
| UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]] |
| UNIT["grad",0.01570796326794895,AUTHORITY["EPSG","9105"]] |
+--------------------------------------------------------------+
2 rows in set (0.004 sec)
「degree」は本連載でも紹介したとおり「度」です。1度が約0.01745ラジアンであることが示されています。もう1つ結果に表示されている「grad」というのは、ほとんどの人にとって見慣れない単位だと思います。これは一周を360度ではなく400度として分割する単位です。1周を四分割した1つ(つまり直角)が100度となるので、角度の下2桁を見れば「東西南北からどれくらいの角度ずれているか」がひと目で分かるのが利点だと言われていますが、現在ではほぼ使われていないようです。
AXIS
「AXIS」(軸)については「Lat(Latitude:緯度)がNORTH方向、Lon(Longitude:経度」)がEAST方向をプラスとする」という定義以外には存在しないようです。ここまでの項目で知らない単位や子午線を見てきたので、少しほっとしますね。
mysql> SELECT DISTINCT LEFT(s, LOCATE(']', s)+1) s1
-> FROM
-> (SELECT REGEXP_SUBSTR(definition, 'AXIS.*\],') s
-> FROM st_spatial_reference_systems
-> WHERE definition like 'GEOGCS%') t;
+--------------------+
| s1 |
+--------------------+
| AXIS["Lat",NORTH], |
| AXIS["Lon",EAST], |
+--------------------+
2 rows in set (0.004 sec)
まとめ
今回は、MySQLのST_SPATIAL_REFERENCE_SYSTEMSテーブルから様々な世界の情報を眺めてみる試みを紹介しました。日本国内のデータを扱う際の実務上は、世界で標準的に使われるWGS84測地系、日本で使われるJGD2011(2000)測地系、時々古いデータで使うかもしれないTokyo測地系との3、4個程度を知っていれば困ることはないと思いますが、それ以外にどのようなものがあるのか/あったのかを知ることで、文字通り世界が拡がるものと思います。
なお、今回の検索条件の中に“GEOGCS”を指定していることに気づいた方もいるかもしれません。これは地理座標系(≒丸い地球)のもののみを対象としたかったためです。これ以外には“PROJCS”があり、こちらは「投影座標系」という、位置の表現法としてまた少し違う座標系を持つものです。本連載でいずれ解説できればと考えています。
「本初子午線」と言えば当然のようにグリニッジのことだと思っている人が多いと思いますが、実はそれが「当然」になるまでには様々な歴史があります。
経度(=子午線)とは北極と南極を結んだ線のことで、本質的にどこから始まると言ったものはありません。どの経度もただ北極と南極を結ぶ線の1つです。基準となる線、言い換えると緯度ゼロ度とする線は任意に決めることができ、フランスでは「パリ子午線」を中心としていたし、スペインでは「マドリード子午線」などが使われました。世界的な測地系ではないのでPRIMEMの項で紹介した一覧表には含まれていませんが、日本でも江戸時代には京都を中心(経度ゼロ度)とした地図が作製されています。表を見ると当時は「西の端」と信じられていた「フェロ子午線」(1600年代前半に策定)なども含まれており、その1つ1つについて歴史を調べてみるのも面白いものです。
このように長らく各国でそれぞれの「わが国の本初子午線」を使っていましたが、「世界全体で共通の経度の原点(線)を決めよう」という動きがあり、1884年の国際子午線会議によりイギリスのグリニッジが経度の中心であることが決定されました。


