MySQLに Spatial(GIS)関数を大量に追加するプロジェクトをやっています。現在、標準のMySQLが持つSpatial関数に加え、新たに60個以上の関数を使用できるところまで進めて参りました。 https://github.com/sakaik/mysql-spatial-plugin/tree/mainみなさんにぜひ動作を試してもらいたいのですが、動作環境作るのとか大変そうな気がして尻込みしちゃうんですよね。 実際は soファイル置いて INSTALL PLUGIN コマンドを叩くだけなので実質 2ステップなのですが、なかなかみなさん試してくださいません。 (実は動作環境が非常に狭…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_RemoveRepeatedPoints(geom [, tol]) 連続する重複頂点を除去する関数。 動作紹介 点が重複するLINESTRINGから重複部分を除去 mysql> SET @g=ST_GeomFromText('LINESTRING(0 0, 0 0, 1 1, 1 1, 2 2)'); mysql>…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_HexGrid(size, geom) 与えられたgeomのバウンディングボックスを覆うように、与えられた一辺のサイズの六角形を生成し、マルチポリゴンとして返す。ポリゴンそのものではなく、それを覆う矩形を覆うように、というところが気持ち悪さを感じるが、PostGISの ST_HexagonGrid()でもそのような動…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_SquareGrid(size, geom) 指定されたgeomを覆うような矩形グリッドを MULTIPOLYGONで返す。矩形は、第1引数で与えられた長さが一辺となるように組み立てられる。原点(0,0)を基準としたグリッドになるように位置調整される。 動作紹介 一辺10のPOLYGON全体を覆うような、一辺4の矩形…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_MinimumBoundingCircle(geom [, segs]) 最小外接円を求めて、Polygon として返す関数。 動作紹介 正方形の最小外接円。大量のPOINTにより擬似的に円を表現していることがわかる mysql> SET @g=ST_GeomFromText('POLYGON((0 0, 10 0,…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_GeneratePoints(geom, n [, seed]) 与えられたPOLYGON内に、与えられた個数(n個)のPOINTを生成し、MULTIPOINT型として返す。 動作紹介 mysql> SET @g=ST_GeomFromText('POLYGON((1 1, 5 1, 5 5, 1 5, 1 1))'…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_MakePolygon(ring [, inner_rings]) LINESTRINGを与えてPOLYGONを生成する。 MULTILINESTRINGを与えると、2つめ以降の部分はくりぬきとして扱われる。 LINESTRINGは始点と終点が一致している(閉じている)必要がある。 動作紹介 LINESTRINGを与…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_Makeline(p1, p2) / STX_Makeline(multipoint) 与えられた複数のポイント群からLINESTRINGを生成する関数です。 動作紹介 2つのPOINTを与えてLINESTRINGにする例 mysql> SET @g1=ST_GeomFromText('POINT(1 1)'); m…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_Points(geom) 与えられたジオメトリを構成する点をすべてPOINTにし、MULTIPOINT型として返す。LINESTRINGであればその構成点を、POLYGONの場合も同様に構成点を返します。POLYGONの場合は始点と終点が同じ点になりますが、結果にはそれぞれ(つまり同じ点が2つ)含まれます。 動作紹介…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_PointonSurface(geom) 与えられたジオメトリ内にあることが保証されている点をひとつ返す。POINTでもLINESTRINGでも動作するが、おそらくPOLYGONで使うことが多そう。 「ポリゴンの内側にその点がある」というだけであり、点の位置そのものには意味はない(ようなシーンで使う)。 動作紹介 P…