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(Geographic Information System)とは地理情報や空間に関するデータをコンピュータ上で取り扱うためのシステムをさします。MySQLはOGC(Open Geospatial Consortium)の策定する仕様に準拠していていて、具体的には以下のようなデータを取り扱うことができます。
POINT)LINESTRING)POLYGON)上記3つのいずれにも対応するGEOMETRY型も存在し、これは3つのクラスの親クラスのように振る舞います。
また、本記事では取り扱いませんが、それぞれのコレクションを保存するための、MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION といったデータも存在します。
これらGISデータはMySQLにおいてはバイナリで保存されており、CLIから人間にわかる形では表示されません。後述する適切な関数を用いることで必要なデータを抽出する必要があります。
CONTAINS())などの非推奨化ST_X(geom, x)ST_SRID(geom, srid)