今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、MySQLのST_Transformにまつわる用語を理解してみたの日。

目次

はじめに

このエントリは、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2022 の12日目です。

年に一回このAdvent CalendarがあるおかげでGISを触ってみたい気分になります。

ただ、ネタが思いつかなかったので以下記事で気になったST_Transform()について、調べてみましたが出てくる用語が全く理解できなかったです.....。

そこで、ST_Transformに出てくるGIS用語について色々と調べてみた内容です。

普段まったく、GISについては触れなくて詳しくないので生暖かい目で見てください。

(MySQLのアップデートや毎年あるアドベントカレンダーでちょっと見る程度の知識レベル)

もし、間違っている部分があればご指摘ください。

今回調べていくのは MySQLのST_Transform関数

今回調べていくST_Transformについて軽く記述します。

ST_Transform(*`g`*, *`target_srid`*)

ジオメトリをある空間参照システム (SRS) から別の空間参照システムに変換します。 戻り値は、すべての座標がターゲット SRID (target_srid) に変換された入力ジオメトリと同じタイプのジオメトリです。 ジオメトリ引数の SRID がターゲット SRID 値と同じでないかぎり、変換のサポートは地理的 SRS に制限されます。この場合、戻り値は有効な SRS の入力ジオメトリです。

  • 地理 SRS の SRID 値を持つジオメトリ引数では、エラーは発生しません。
  • ジオメトリまたはターゲット SRID 引数に、未定義の空間参照システム (SRS) を参照する SRID 値がある場合、ER_SRS_NOT_FOUND エラーが発生します。
  • ジオメトリが ST_Transform() で変換できない SRS 内にある場合は、ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED エラーが発生します。
  • ターゲット SRID が ST_Transform() が変換できない SRS 内にある場合は、ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED エラーが発生します。
  • ジオメトリが WGS 84 以外の SRS にあり、TOWGS84 句がない場合は、ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84 エラーが発生します。
  • ターゲット SRID が WGS 84 以外の SRS にあり、TOWGS84 句がない場合は、ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84 エラーが発生します。

MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.17.8 空間演算子関数

現時点で理解できていること。

  • 変換してくれる関数であること
  • 変換できないSRSが存在する

普段GISに触れないのであまりイメージができてないです。

MySQL のドキュメントに書いてあることが概ね理解できるように調べて記述していきます。

理解する用語

ドキュメントを見ててもあまりわからないので、ST_Transformで色々調べて出てきたsakaikさんの以下記事を参考として使わせてもらいます。

MySQL 8.0.13 の ST_Transform()を試す - sakaikの日々雑感~(T)編

上記の記事では、ST_Transformを実際に試しているのでここに出てくる用語がわかるようになればある程度ST_Transformの理解は深まると考えました!

これらが理解できればST_Transformについてわかりそうな用語リスト

  • 測地系
  • 地理座標系
  • JGD2000/2011
  • 平面直角座標系
  • SRID
  • WGS84
  • SRID:4269
  • NAD83
  • TOWGS84

上記用語が理解できる方は、sakaikさんの記事をぜひ見てみてください。

測地系

測地系測地基準系)は、地図作成や測量などにおいて共通的に使用できる経緯度や標高を定義するための基準です。測地系の定義は、地球の形や大きさ、座標原点などから構成されますが、この定義は国ごとに異なり、さらに同じ国においても時代とともに変遷しています。

測地系 | ESRIジャパン座標系/空間参照 | GIS 基礎解説 | ESRIジャパン

日本測地系世界測地系

測地系は、「日本測地系」と「世界測地系」に分かれているみたいです。

2001年以前の測量成果(経度、緯度)は、経緯度原点の座標を天文観測によってベッセル楕円体面に定めていた旧日本測地系で表現されていました。一方、現在の測量成果は「測地成果2011」と呼ばれ、世界測地系に基づく日本測地系2011(JGD2011)としてITRF(国際地球基準座標系)によりGRS80楕円体面に表現しています。

日本の測地系 | 国土地理院

世界測地系とは、VLBIや人工衛星を用いた観測によって明らかとなった地球の正確な形状と大きさに基づき、世界的な整合性を持たせて構築された経度・緯度の測定の基準で、国際的に定められている測地基準系をいいます。

3 日本測地系と世界測地系 | 国土地理院

地理座標系

地理座標系は、3 次元である地球上の位置を緯度と経度で表現する座標系です。

地理座標系では、地球の重心を原点とし、座標の単位は角度です。「原点」、「赤道の面」、「目標物の位置」の関係を角度で表したものが緯度であり(図中の北緯 40 度)、「原点」、「本初子午線の面」、「目標物の経線の面」の関係を角度で表したものが経度です(図中の東経 50 度)。

座標系とは? | GIS基礎解説 | ESRIジャパン座標系/空間参照 | GIS 基礎解説 | ESRIジャパン

JGD2000/2011(測地成果)

日本の現行の測地基準系測地系、データム)のことをいいます。

日本測地系2011(JGD2011)とは|座標値補正・WKT・EPSGコード - 空間情報クラブ|インフォマティクス運営のメディアサイト

2000と2011ではバージョン?が違うみたいです。

2001年の測量法改正により、日本測地系(旧測地系)から日本測地系2000(JGD2000)に移行し、さらに2012年の測量法改正により日本測地系2011(JGD2011)に移行しました。

測地系とは|日本測地系・世界測地系 - 空間情報クラブ|インフォマティクス運営のメディアサイト

平面直角座標系

日本の公共測量で採用されている座標系で、国土地理院刊行の「1/2,500 国土基本図」や「1/5,000 国土基本図」、「1/10,000 地形図」など、大縮尺地図で利用されています。投影法はガウス クリューゲル図法(「横メルカトル図法」とも呼ばれる)を採用し、楕円体面を平面に投影することによる歪みを小さくするために、日本全国を 19 の地域に分割してそれぞれに座標原点を設けています。座標原点から東西 130km が各座標系の適用範囲です。

日本で使用される座標系 | ESRIジャパン座標系/空間参照 | GIS 基礎解説 | ESRIジャパン

SRID

システムとかで分類するためのIDっぽい。

空間参照 ID (SRID) は、特定の座標系、許容値、および解像度に関連付けられた一意の ID です

SRID とは—ヘルプ | ArcGIS Desktop

WGS84

地理座標系の一種みたい。

[geodesy] World Geodetic System 1984 の略語。 現在最も広く使われている地球を中心とした測地基準の地理座標系です。米国国防省が WGS72 に代わって策定しました。 GPS 計測には WGS84 が使われています。

WGS84 の定義 | GIS 用語集

測地系 - Wikipedia

SRID:4269

NAD83に割り当てられたSRIDの番号。

NAD83 - EPSG:4269

NAD83

アメリカの測地系

米国の現在の測地系は北アメリ測地系1983年NAD83である。

米国の測地系NAD83について

TOWGS84

towgs84は、WGS84以外の測地系からWGS84に変換するためのパラメータです。3次元直交空間を想定して、平行移動、拡大縮小、回転を行い、Tokyoデータム等からWGS84に無理やり当てはめます。

JGD2011の座標系にtowgs84が無いとかそもそもtowgs84って何やねん

改めて理解

ある程度用語について調べたので、再度ST_Transformの理解についてまとめてみます。

  • 座標系はいろいろな表し方が存在する
  • それらを変換するためにST_Transformが存在する
  • ただ変換は複雑なのでできるものとできないものが存在する
  • SRIDはたくさんある(5152行あった)

変換ができるのは便利ですが、規格の内容が異なるので全てに対応するのは大変そうだなと思いました。

色々と調べてある程度わかるようになりましたが、改めてGIS分野って難しいなと思いました。

sakaikさんの記事をとても参考にさせていただきました、ありがとうございます。

参考記事

MySQL8.0の「地理情報」を理解しよう入門~いまからはじめるGIS

MySQLのGIS機能2022 - sakaikの日々雑感~(T)編

MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.17.8 空間演算子関数

MySQL 8.0.13 の ST_Transform()を試す - sakaikの日々雑感~(T)編