なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

MySQL Workbenchで、Spatial Functionの結果を図で表示する

「できるらしい」という話だけで、誰も触ってなかった?

clubmysql.connpass.com
に参加して、坂井さんからGISにまつわるお話をたっぷり伺ってきました。

で、坂井さんも、「MySQL WorkbenchがGIS対応してるらしいって聞いたことがあるけど、触ったこと無い」とおっしゃってまして。

で、ツイートしたところ、こうなって、

こうなりました。



こんな感じです。

試したのは、MySQL Workbench 8.0.12+MySQL 8.0.12ですが、MySQL Workbenchはもっと前のバージョンから使えるようですね。

f:id:atsuizo:20180901154041p:plain

投げたSQL

SELECT ST_GeomFromText('LINESTRING(1 1, 2 2, 3 1, 4 3, 3 5, 2 4, 1 1)') len;

で、「Y座標 X座標」「X座標 Y座標」*1を「,」で区切った7か所を頂点としてつないだ線を地理情報に変換する関数を実行しているのですが、バイナリで返ってくるので、最初は「BLOB」って表示されます。
厳密にはBLOBじゃない、Spatial専用のデータ型らしいですが。


そこで、結果表示の右下に、表示形式を選べるところがあって、画像右下の赤丸をつけたところの「Spatial view」を選択すると、上記のキャプチャのように表示されます。


なお、「LINESTRING」を使っていますが、出発点に戻ってきているので、

SELECT ST_GeomFromText('POLYGON((1 1, 2 2, 3 1, 4 3, 3 5, 2 4, 1 1))') pol;

にすると、面として認識されて、線で囲まれた内側が色塗られて表示されます。


Spatial Viewは、Spatial Viewで表示できる結果のときでないと、選択肢として表示されないようですね。


なお、
https://mysqlworkbench.org/2014/09/mysql-workbench-6-2-spatial-data/
によると、緯度経度の情報とSRIDを指定すると、さらにかっこよく表示されるようですが、そこは確認できませんでした。
Form Viewの中にも表示されるっぽいけど、これも未確認。。。


とりあえず、頭の中で描いたり、手書きで座標系を確認しながら、じゃなくてもMySQL Workbenchでできるぜ、ってことが確認できたので良かったです。

というわけで


とりあえず1本書いたぜ!



自分、GIS解らなすぎて、どんな本を推薦していいのかわからない模様。

地理空間情報を活かす授業のためのGIS教材

地理空間情報を活かす授業のためのGIS教材

*1:緯度経度のときはY Xだけど、SRID=0の平面座標のときはX Yの順でした