RDBMS-GISアドヴェントカレンダー 7日目です。
本エントリのタイトルの正式名は「INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS ビューに見る様々な地球」です。長いので省略しました。
MySQLは 8.0 になって初めて「地球が丸い」という事を知りました。これはMySQL的にはどういうことかというと、内部に、地球の形(回転楕円体)のデータを持っているということです。
そもそも地球の形って?
地球は地「球」というくらいだから球形なんでしょ?と言う人は、今の時代ほとんどいないと思いますが、じゃぁどういう形なの?と聞かれてちゃんと応えられる人もまた、それほど多くはないと思います。赤道方向にぷっくらとひしゃげている、というイメージくらいで捉えているのではないでしょうか。
そもそも、地球はとってもデコボコです。そりゃ街の中を歩けば平らなところはないのだから、デコボコしてるのくらい知ってるよ、ですか? いえいえそういう話をしているのではありません。海抜ゼロメートルラインが、すでにでこぼこしているのです。それは地球上はそれぞれの場所ごとに重力が異なり(構成されている物質の違いなどにより密度が異なるから)、地球上における測量は常に「重力方向が、真下」というように重量そのものを拠り所としてきたからです。
そこで、よりシンプルな形に「モデル化」する流れとなります。多くの場合、地球を回転楕円体として取り扱います。概ね赤道半径が6,400km で、 極方向の半径はそれよりもおよそ 298分の1だけ短い、そんなモデルです。
歴史的経緯や、おそらく「決める人の立場」のために、様々な「地球のモデル」が作られてきました。本エントリでは、MySQLの定義における、これらの「いろいろな地球」を紹介していきたいと思います。
MySQLが知っている「地球」の形
MySQLの知っている地球について、MySQLの脳内を覗いてみましょう。大丈夫。ソースコードじゃなくて、データとして定義されています。 INFROMATION_SCHEMA の ST_SPATIAL_REFERENCE_SYSTEMS ビューです。
ここには、地理座標系と呼ばれる、地球を回転楕円体と見なした様々なモデルが 479種類、そのそれぞれに、平面の地図に変換して落として表現するためのモデル4628種類が登録されているのです。
mysql >use information_schema mysql> SELECT SUBSTR(definition, 1, 6) g, COUNT(*) FROM ST_SPATIAL_REFERENCE_SYSTEMS GROUP BY g ORDER BY g; +--------+----------+ | g | COUNT(*) | +--------+----------+ | | 1 | | GEOGCS | 479 | | PROJCS | 4628 | +--------+----------+ 3 rows in set (0.02 sec)
本エントリでは、地理座標系 GEOGCSに焦点を当てて見ていきます。
GEOGCS にはどのような事が記述されているのか
ST_S_R_S から「様々な地球」の情報を読み解くために、まず、ここにはどのような事が記述されているのかを知っておくと良いでしょう。我々日本人がよく使うことになるであろう、"JGD2011"(6668) の定義を見てみます。definition列の値を整形すると、以下のようになります。
GEOGCS[ "JGD2011", DATUM[ "Japanese Geodetic Datum 2011", SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]], AUTHORITY["EPSG","1128"] ], PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.017453292519943278, AUTHORITY["EPSG","9122"]], AXIS["Lat",NORTH], AXIS["Lon",EAST], AUTHORITY["EPSG","6668"] ]
最初に 座標系の名前が記述された後、DATUM, PRIMEM, UNIT, AXIS 等の順に続きます。
JGD2011では、赤道半径 6378137 km 、極半径はそれよりも 1/298.257222101 だけ短い、と定義されていることがわかります。単位(UNIT)は「度(degree)」であり、1度は 0.017453292519943278ラジアンであることも読み取れます。(1/360 * 2PI)
AXISは、出てきた順に、第1軸、第2軸、となるようです。
様々な地球:半径と扁平率
それこそ伊能忠敬も知りたかった「地球の大きさ」。その定義が、ここです。1800年台前半頃から、さまざまな地球の大きさが見積もられてきました。また、楕円のつぶれ度合いにつちては、中には扁平率=0(真球)のものもあったりして、なかなか興味深いです。
JGD2011は、この中で "GRS 1980" という楕円体モデルを採用しています。