人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ポリゴン初心者で申し訳ないのですが
皆様の、お力を貸して下さい。

MYSQL5.1以上で ポリゴン用のテーブルを作成。
CREATE TABLE IF NOT EXISTS test1 (
`id` int(11) DEFAULT NULL,
`gn` geometry DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=ujis;

以下のようにデータを挿入します。
これで、ポリゴンデータは作成できているのでしょうか?

INSERT INTO test1 (id,gn)
VALUES(1,
PolygonFromText('POLYGON((
1 1,
5 1,
5 5,
3 6,
1 5,
3 3,
1 1
))')
);
で、SELECTを実行すると、
SELECT * FROM test1 WHERE MBRContains(gn, GeomFromText('Point(2 6)'));
SELECT * FROM test1 WHERE Contains(gn, GeomFromText('Point(2 6)'));

本当は範囲外にある値なのに、SELECTの結果が返ってきます。

なんで返ってくるのでしょうか?
SELECTが悪いのか、INSERTが悪いのか
わかる方、いたら教えて下さい。

自分的には、多角形になってなくて、常に四角形でデータが
生成されているように思うんですよね・


●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:ENGINE MyISAM point SELECT データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GreenStar
●35ポイント

面白そうだからやってみた! 以下のようにSELECT句に書いてみると判り易いよ!!

CREATE TEMPORARY TABLE test1 (id int(11) DEFAULT NULL, gn geometry DEFAULT NULL);
INSERT INTO test1 (id, gn)
 VALUES(1, GeomFromText('Polygon((1 1, 5 1, 5 5, 3 6, 1 5, 3 3, 1 1))'));
SELECT id, AsText(gn)
 , MBRContains(GeomFromText('Point(2 6)'), gn)
 , MBRWithin(GeomFromText('Point(2 6)'), gn)
FROM test1;

AsText でINSERTしたものが正しく書き込まれているか出力!

MBRContains で引数1が引数2に含まれていれば1 !

MBRWithin は引数1が引数2に含まれていなければ1 !

http://dev.mysql.com/doc/refman/5.1-olh/ja/relations-on-geometry...

Contains ってのはごめん! 見当たらなかった!!

◎質問者からの返答

ありがとうございます。

SELECT id, AsText(gn) , MBRContains(GeomFromText('Point(4 4)'), gn) , MBRWithin(GeomFromText('Point(3 5)'), gn) FROM test1;

とやっても

0と1がselectの結果に返ってきますね・・

予想では、1と0になるのですが・・・

なんだろう・・・


2 ● GreenStar
●35ポイント

質問受付中はコメント欄受け取らない設定なので、回答欄で2回目すみません!!

逆書いちゃいました! 前回と同じURLからですが下手に検証などやらずに、引用だけのほうがよかったかもです! すみません!!

http://dev.mysql.com/doc/refman/5.1-olh/ja/relations-on-geometry...

mysql> SET @g1 = GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');

mysql> SET @g2 = GeomFromText('Point(1 1)');

mysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);

MBRContains(@g1,@g2) MBRContains(@g2,@g1)
1 0
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ