2012-03-16 12 views
0

マップの境界をMySQLデータベースに格納する必要があります。私は地理空間拡張のためにドキュメントに時間を費やしましたが、それは困難で、私の場合はすべての関連情報(WKT、WKBなど)を学ぶ必要はありません 座標の四角形を保存して後で読み戻す方法が必要です。 もちろん、生の座標を浮動体に書き込むこともできますが、複雑ではない場合は、1列にすることをお勧めします。mysqlは地理的境界(長方形)を書き込み、読み取る

したがって、その要件のための最も簡単なSQLコードは何ですか?

PS:既にそのテーブルでPOINT値を使用しているため、拡張機能がインストールされて動作しています。

答えて

0

ポリゴンは、mysql内のジオメトリ列に格納できます。上記を試してみてください

CREATE TABLE `test` (`geo` geometry NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
INSERT INTO test SET geo = GeomFromText('Polygon((0 0,0 3,3 0,0 0))'); 
SELECT asText(geo) FROM `test`; 

http://dev.mysql.com/doc/refman/4.1/en/polygon-property-functions.html

SET @poly = 'Polygon((0 0,0 3,3 0,0 0))'; 
SELECT Area(GeomFromText(@poly)); 

編集 - これは(しかし、あなたが行うような音はありません。必要であれば)、あなたがそれらにいくつかの幾何学的機能を実行できますSQLステートメント。私はジオメトリ列を持つテーブルを作成し、ポリゴンを追加してからデータを選択します。

+0

@は何ですか?私は@を使わずにこれを試していましたが、その後はフィールドはまだヌルでした。 –

+1

@は、ユーザー定義の変数であることを示します。 SETは変数を定義するために使用するもので、その変数はSELECT文で使用されます。 –

+0

http://dev.mysql.com/doc/refman/5.0/en/example-user-variables.html –

0

カラムのポイントの保存と取り出しに興味があるのであれば、ポイントをコンマで区切って、または好きなだけBLOBフィールドにダンプすることをおすすめします。空間解析機能を使用する場合は、Polygon classを参照し、ポイントを使用して座標の各矩形にポリゴンを定義することができます。

1

あなたがしたいものはserializationと呼ばれています/あなたはプログラミング言語サポート/を読むことができます。たとえば、あなたのケースで非常に役立つserialize(php serialize)と呼ばれるphp存在する関数で。それを使用して値を保存し、後でphp unserializeを使用してphpで読むことができます。

私はMyISAMがいくつかの空間的拡張をサポートしていることを知っていますが、私の意見では、それらを使用することは直列化ほど柔軟ではありません。

乾杯!
私はそれが助けてくれることを願っています。 :)

関連する問題