定义
ST_GeomFromText 以熟知文本表示和空间参考 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)))