空間カラムを作成し終わったら、それらのカラムに空間データを設定できます。
値は内部幾何形式で格納すべきですが、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 をクエリーに含めてサーバーに送信するのは、そのプログラムの責任となります。ただし、この要件を満たす方法はいくつか存在します。例 :
次のように、16 進リテラルの構文を使って
POINT(1 1)
値を挿入します。
mysql>INSERT INTO geom VALUES
->(GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
ODBC
アプリケーションは、BLOB
型の引数を使って WKB
表現をプレースホルダにバインドし、WKB
表現を送信できます。
INSERT INTO geom VALUES (GeomFromWKB(?))
ほかのプログラミングインタフェースも似たようなプレースホルダ機構をサポートしている可能性があります。
C
プログラムでは、mysql_real_escape_string()
を使ってバイナリ値をエスケープし、その結果をクエリー文字列に含めてサーバーに送信することができます。mysql_real_escape_string()
を参照してください。