MySQL Workbenchで、Spatial Functionの結果を図で表示する
「できるらしい」という話だけで、誰も触ってなかった?
clubmysql.connpass.com
に参加して、坂井さんからGISにまつわるお話をたっぷり伺ってきました。
で、坂井さんも、「MySQL WorkbenchがGIS対応してるらしいって聞いたことがあるけど、触ったこと無い」とおっしゃってまして。
で、ツイートしたところ、こうなって、
MySQL Workbenchにそんな機能があるとかないとか! (試したことはないですが6.3からあった記憶です)
— yoku0825 (@yoku0825) August 31, 2018
こうなりました。
ありました!AsTextしないでバイナリのまま返ってくるようにST_関数を実行したら、Resultの表示方法選択に「Spatial Viewer」が出ました!
— atsuizo (@atsuizo) September 1, 2018
こんな感じです。
試したのは、MySQL Workbench 8.0.12+MySQL 8.0.12ですが、MySQL Workbenchはもっと前のバージョンから使えるようですね。
投げた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でできるぜ、ってことが確認できたので良かったです。
というわけで
「MySQLでのGIS関連情報はまだ薄い。今が書きどき喋りどき。皆さんも是非今のうちに。」 #mysql_jp
— dupont (@dupont_kedama) August 31, 2018
とりあえず1本書いたぜ!
自分、GIS解らなすぎて、どんな本を推薦していいのかわからない模様。
- 作者: 地理情報システム学会教育委員会
- 出版社/メーカー: 古今書院
- 発売日: 2017/10/18
- メディア: 単行本
- この商品を含むブログを見る
*1:緯度経度のときはY Xだけど、SRID=0の平面座標のときはX Yの順でした