MySQLに挑戦してみるが複数のリングがあぁ

とりあえず、portsからmysql51-serverを入れてみる。特に問題なし。例によって、/usr/local/etc/rc.d/mysql-server をとりあえず除いて、rc.confに入れるべき変数を調べる。入れたのはこんなかんじ。

mysql_enable="YES"
mysql_args="--default-character-set=utf8"

なお、charcter-setは、/usr/local/share/mysql/charsets/Index.xml に一覧があります。
とりあえずテーブルを作ったり何なりをしてみる。googleさんに聞いたら、入門用のドキュメントはかなりありました。

mysql
create database test;
use test;
create table t_test( the_geom POLYGON NOT NULL, SPATIAL INDEX(the_geom));

のっけから「そっち」かよ:-)
空間インデクスは、INDEXの前に"SPATIAL"というキーワードを入れると良いそうな。
で、ひとつデータを入れてみる。

insert into t_test select geometryfromtext('POLYGON( (0 0, 100 0, 100 100, 0 100, 0 0), (10 10, 20 20, 20 10, 10 10) )');

ちゃんと入ったっぽい。

select * from t_test;
                                                                                                                                                                                                                                                                                                                                                • +
the_geom
                                                                                                                                                                                                                                                                                                                                                • +
Y@ Y@ Y@ Y@ $@ $@ 4@ 4@ 4@ $@ $@ $@
                                                                                                                                                                                                                                                                                                                                                • +

何書いてるかわかんねー。

select astext(the_geom) from t_test;
                                                                                                                                      • +
astext(the_geom)
                                                                                                                                      • +
POLYGON((0 0,100 0,100 100,0 100,0 0),(10 10,20 20,20 10,10 10))
                                                                                                                                      • +

あ、ちゃんと出た。
ていうか、"ST_"の接頭辞が付かないみたいです。これは注意しておかにゃいかん。
で、WithInをためしてみる。

select within(geometryfromtext('POINT( 1 1)'),the_geom) as foo from t_test;
              • +
foo
              • +
1
              • +

うむうむ、直感的にOK。

select within(geometryfromtext('POINT(15 12)'),the_geom) as foo from t_test;
              • +
foo
              • +
1
              • +

…、あれ?
図にするとこんなかんじ。

(PostGISでは同じポリゴンに対しては false を返します)