定義
ST_GeomFromText は、WKT 表現と空間参照 ID を入力として、ジオメトリ オブジェクトを返します。
構文
Oracle
sde.st_geomfromtext (wkt clob, srid integer)
sde.st_geomfromtext (wkt clob)
SRID を指定しない場合、空間参照がデフォルトで 4326 に設定されます。
SQLite
st_geomfromtext (wkt text, srid int32)
st_geomfromtext (wkt text)
SRID を指定しない場合、空間参照がデフォルトで 4326 に設定されます。
戻り値のタイプ
Oracle
ST_Geometry
SQLite
Geometryblob
例
geometry_test テーブルは、各行を一意に識別する整数の gid 列と、ジオメトリを格納する g1 列を含みます。
各 INSERT ステートメントで、データを geometry_test テーブルの gid 列および g1 列に挿入します。ST_GeomFromText 関数は、各ジオメトリのテキスト表現を対応するインスタンス化可能なサブクラスに変換します。最後の SELECT ステートメントで、データが g1 列に挿入されたことを確認します。
Oracle
CREATE TABLE geometry_test (
gid smallint unique,
g1 sde.st_geometry
);
INSERT INTO GEOMETRY_TEST VALUES (
1,
sde.st_geomfromtext ('point (10.02 20.01)', 4326)
);
INSERT INTO GEOMETRY_TEST VALUES (
2,
sde.st_geomfromtext('linestring (10.01 20.01, 10.01 30.01, 10.01 40.01)', 4326)
);
INSERT INTO GEOMETRY_TEST VALUES (
3,
sde.st_geomfromtext('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15,
19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO GEOMETRY_TEST VALUES (
4,
sde.st_geomfromtext('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO GEOMETRY_TEST VALUES (
5,
sde.st_geomfromtext ('multilinestring ((10.02 20.01, 10.32 23.98,
11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);
INSERT INTO GEOMETRY_TEST VALUES (
6,
sde.st_geomfromtext ('multipolygon (((10.02 20.01, 11.92 35.64,
25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04,
71.52 32.87, 52.43 31.90, 51.71 21.73)))', 4326)
);
SELECT sde.st_astext(g1)
FROM GEOMETRY_TEST;
POINT ( 10.02000000 20.01000000)
LINESTRING ( 10.01000000 20.01000000, 10.01000000 30.01000000, 10.01000000 40.01000000)
POLYGON (( 10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
MULTIPOINT ( 10.02000000 20.01000000, 10.32000000 23.98000000, 11.92000000 25.64000000)
MULTILINESTRING (( 10.02000000 20.01000000, 10.32000000 23.98000000, 11.92000000 25.64000000),( 9.55000000 23.75000000, 15.36000000 30.11000000))
MULTIPOLYGON ((( 51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000, 51.71000000 21.73000000)),(( 10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000)))
SQLite
CREATE TABLE geometry_test (
gid integer primary key autoincrement not null
);
SELECT AddGeometryColumn (
NULL,
'geometry_test',
'g1',
4326,
'geometry',
'xy',
'null'
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext ('point (10.02 20.01)', 4326)
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext('linestring (10.01 20.01, 10.01 30.01, 10.01 40.01)', 4326)
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15,
19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext ('multilinestring ((10.02 20.01, 10.32 23.98,
11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);
INSERT INTO GEOMETRY_TEST (g1) VALUES (
st_geomfromtext ('multipolygon (((10.02 20.01, 11.92 35.64,
25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04,
71.52 32.87, 52.43 31.90, 51.71 21.73)))', 4326)
);
SELECT st_astext(g1)
FROM geometry_test;
POINT ( 10.02000000 20.01000000)
LINESTRING ( 10.01000000 20.01000000, 10.01000000 30.01000000, 10.01000000 40.01000000)
POLYGON (( 10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
MULTIPOINT ( 10.02000000 20.01000000, 10.32000000 23.98000000, 11.92000000 25.64000000)
MULTILINESTRING (( 10.02000000 20.01000000, 10.32000000 23.98000000, 11.92000000 25.64000000),( 9.55000000 23.75000000, 15.36000000 30.11000000))
MULTIPOLYGON ((( 51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000, 51.71000000 21.73000000)),(( 10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000)))