mysql:14456
From: "KIMURA, Meiji" <"KIMURA, Meiji" <kimura804@xxxxxxxxxx>>
Date: Wed, 23 Apr 2008 06:20:01 +0900 (JST)
Subject: [mysql 14456] Re: Spatial Extentions について
おはようございます。木村明治です。 --- trad-ex <trad-ex@xxxxxxxxxx> wrote: > 高木といいます。 > > 現在、あるエリア情報をDBに突っ込んで、与えられた点がどのエリアに属するか > を試験しているのですが、どうもうまくいきません。 > > 環境:CentOS4.4 MySQL5.0.45と5.0.24 > > サーバにssh後、mysqlクライアントで以下を発行 > > SELECT id FROM test > WHERE MBRContains(geom, GeomFromText('Point(503011177 128470894)')); > > テーブル定義は > CREATE TABLE `test` ( > `id` varchar(16) NOT NULL, > `geom` polygon NOT NULL, > SPATIAL KEY `geom` (`geom`) > ) ENGINE=MyISAM DEFAULT CHARSET=sjis; > > testテーブルのデータは添付のinsert.sqlです。 > また、グラフソフトで囲まれているエリア、指定された点を描画したものが添付 > したimg.gifになります。 > 赤線がPolygonで囲まれたエリア、青の線が指定された点になります。 > グラフ上、明らかに囲まれていないのに、上記クエリだとヒットしてしまってい > ます。 > MBRContains(g1,g2)とは、g1がg2を包含するときにTRUEを返す、と思っていたの > ですが、違いますでしょうか? > どなたか、この現象に遭遇した方、いらっしゃいますか? > ちなみに、PolygonをLineStringに変更しても、状況は変わりませんでした。 MBRはその名のとおり、最小外接矩形なので、 http://dev.mysql.com/doc/refman/4.1/ja/relations-on-geometry-mbr.html イメージとしては、添付ファイルのようになり、含まれてしまいます。 POLYGONの中かどうかを確認するためにはContainsを利用する必要があります。 ただ、下記にもありますように通常のMySQLでは、Containsはまだ実装されてないようです。 http://dev.mysql.com/doc/refman/4.1/ja/functions-that-test-spatial-relationships-between-geometries.html # 手元の5.0.51では、MBRContainsと同様の動作をします。 現在MySQL Forgeのほうで、GISの実装がされたMySQLのBetaが出ています。 http://forge.mysql.com/wiki/GIS_Functions こちらのほうでは、ちゃんとContainsも動作しますので、こちらのほうを利用されてみてはいかがでしょうか? mysql> SELECT id FROM test WHERE Contains(geom, GeomFromText('Point(503011177 128470894)')); Empty set (0.01 sec) mysql> SELECT id FROM test WHERE MBRContains(geom, GeomFromText('Point(503011177 128470894)')); +------+ | id | +------+ | test | +------+ 1 row in set (0.00 sec) mysql> select version(); +-----------------------------------+ | version() | +-----------------------------------+ | 5.1.23-beta-GIS-community-GIS-log | +-----------------------------------+ -- キムラデービー代表 木村明治(KIMURA, Meiji) http://kimuradb.com [News] 4/18(金) Sun Business .Next 2008(東京ミッドタウン)セミナーやります http://jp.sun.com/next/program3.html
@ 14455 2008-04-23 03:20 [trad-ex <trad-ex@xxx] Spatial Extentions について -> @ 14456 2008-04-23 06:20 ┗["KIMURA, Meiji" <kim] 14457 2008-04-23 12:01 ┗[trad-ex <trad-ex@xxx]