https://qiita.com/onunu/items/59ef2c050b35773ced0d

More than 3 years have passed since last update.

こんにちは。@onunuです。本記事はMySQL casual AdventCalendar 17日目の記事です。

本記事ではMySQL8で大幅に強化されたGISデータ周りのtipsについて触れたいと思います。ある程度尽くされた話題ではありますが、主にアップデートされた機能について言及していこうと思います。みなさまの快適なMySQLライフの一助になれば幸いです。

なお、各所にある例や参考のクエリは以下の環境で確認しています。

また記事の内容に誤りがございましたら、コメント欄かTwitterなどのDMにてご教示いただけますと幸いです。

GISデータとMySQL

MySQLにおけるGISデータ

GIS(Geographic Information System)とは地理情報や空間に関するデータをコンピュータ上で取り扱うためのシステムをさします。MySQLはOGC(Open Geospatial Consortium)の策定する仕様に準拠していていて、具体的には以下のようなデータを取り扱うことができます。

上記3つのいずれにも対応するGEOMETRY型も存在し、これは3つのクラスの親クラスのように振る舞います。 また、本記事では取り扱いませんが、それぞれのコレクションを保存するための、MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION といったデータも存在します。

これらGISデータはMySQLにおいてはバイナリで保存されており、CLIから人間にわかる形では表示されません。後述する適切な関数を用いることで必要なデータを抽出する必要があります。

ざっくりとした対応の歴史