作成した空間情報カラムには、空間データを入力することができます。
値は内部ジオメトリ形式で格納する必要がありますが、Well-Known Text(WKT)または Well-Known Binary(WKB)形式から内部ジオメトリ形式に変換することも可能です。WKT 値を内部ジオメトリ形式に変換してジオメトリ値をテーブルに挿入する方法を、以下の例に示します。
この変換は、INSERT
ステートメントで直接実行することができます。
INSERT INTO geom VALUES (GeomFromText('POINT(1 1)')); SET @g = 'POINT(1 1)'; INSERT INTO geom VALUES (GeomFromText(@g));
INSERT
の前に変換が実行される場合もあります。
SET @g = GeomFromText('POINT(1 1)'); INSERT INTO geom VALUES (@g);
以下の例では、より複雑なジオメトリをテーブルに挿入しています。
SET @g = 'LINESTRING(0 0,1 1,2 2)'; INSERT INTO geom VALUES (GeomFromText(@g)); SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))'; INSERT INTO geom VALUES (GeomFromText(@g)); SET @g = 'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))'; INSERT INTO geom VALUES (GeomFromText(@g));
前述したいずれの例でも、GeomFromText()
を使用してジオメトリ値を作成しています。タイプ固有の関数を使用することもできます。
SET @g = 'POINT(1 1)'; INSERT INTO geom VALUES (PointFromText(@g)); SET @g = 'LINESTRING(0 0,1 1,2 2)'; INSERT INTO geom VALUES (LineStringFromText(@g)); SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))'; INSERT INTO geom VALUES (PolygonFromText(@g)); SET @g = 'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))'; INSERT INTO geom VALUES (GeomCollFromText(@g));
注意: クライアントアプリケーションプログラムは、ジオメトリ値の WKB 表現を使用する場合、正しい形式の WKB をクエリでサーバに送信しなければなりません。この要件を満たすにはいくつかの方法があります。たとえば、以下のようにします。
POINT(1 1)
値を 16
進リテラル構文で挿入する。
mysql>INSERT INTO geom VALUES
->(GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
ODBC アプリケーションは WKB
表現を送信し、それをプレースホルダにバインドすることができる(BLOB
型の引数を使用)。
INSERT INTO geom VALUES (GeomFromWKB(?))
他のプログラミングインタフェースでも、類似したプレースホルダ機構がサポートされている場合がある。
C
プログラムでは、mysql_real_escape_string()
を使用してバイナリ値をエスケープし、サーバに送信されるクエリ文字列に結果を取り込むことができる。
See 項11.1.3.44. 「mysql_real_escape_string()
」。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.