この記事は、『RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2021』の1日目のエントリーです。
2021年のMySQLは、以下の5つのバージョンがリリースされました。
MySQL 8.0.23 (2021/01 リリース)
MySQL 8.0.24 (2021/04 リリース)
MySQL 8.0.25 (2021/05 リリース)
MySQL 8.0.26 (2021/07 リリース)
MySQL 8.0.27 (2021/10 リリース)
全体として、地理情報機能(spatial/GIS)の観点からは、どちらかというと地味な進化の一年だったという印象でした。各バージョンでの進化を以下にまとめます。
MySQL 8.0.23 (2021/01 リリース)
ST_HausdorffDistance() 関数と、ST_FrechetDistance() 関数が追加されました。
それぞれ、ハウスドルフ距離とフレシェ距離を求める関数なのですが、正直なところ私も使い所がよくわかっていません。わからないなりに調べながら、とりあえず挙動を紹介してみたのが、本ブログの以下の記事になります。
https://sakaik.hateblo.jp/entry/20210227/try_mysql_frechetdistance_and_haussdorffdistance
MySQL 8.0.24 (2021/04 リリース)
GIS的には、今年最大の進化となったバージョンです。4つの関数の追加と、既存関数のGISへの拡張が行われました。
追加されたのは以下の4つの関数。
ST_LineInterpolatePoint() ST_LineInterpolatePoints() ST_PointAtDistance() ST_Collect()
最初の3つは、指定した条件に従ってLINESTRING上の経過点を返す関数です。本ブログでは以下の記事で紹介しました。
https://sakaik.hateblo.jp/entry/20210501/mysql_spatial_new_functions_8024_1
ST_Collect() は、POINTなどの単一型を、MULTIPOINTなどのマルチ型へとまとめる集約関数です。以下の記事で紹介しました。
https://sakaik.hateblo.jp/entry/20210512/mysql_spatial_new_functions_8024_3_ST_Collect
さらに、MySQL 8.0.24では、CAST()、CONVERT()の2つの既存関数が、Spatial(GIS)型も扱えるよう拡張されました。この拡張により、POINT/LINESTRING/POLYGON および各マルチ型の各型どうしで変換できるパターンが格段に拡がりました。
詳しくは、本ブログの以下の記事を参照ください。
https://sakaik.hateblo.jp/entry/20210515/mysql_spatial_new_functions_8024_4_CAST_Function
リリースに先立って、リファレンスマニュアルに機能変更の記述が加えられたことを受けての「超先出し(期待記事)」は以下のリンクとなります。
https://sakaik.hateblo.jp/entry/20210123/mysql_spatial_cast_function_in_8_0_24
MySQL 8.0.26 (2021/07 リリース)
いままで平面座標系のみを扱うことができた ST_Buffer()、ST_Difference()、ST_Union() の各関数が、多くのSRSに対応しました。平たく言うと「丸い地球」に対応しました(平たく言ったつもりなのに丸くなっちゃった)。
あと、内部で使っていた関数が開放後のメモリを参照しちゃってた問題が、このバージョンで直されたっぽい。
MySQL 8.0.27 (2021/10 リリース)
いままで平面座標系のみを扱うことができた ST_SymDifference()、ST_Intersection()の両関数が、他のSRSにも対応しました。平たく言..(略)