定义
ST_GeomFromWKB 以熟知二进制 (WKB) 表示和空间参考 ID 作为输入参数,返回几何对象。
语法
Oracle
sde.st_geomfromwkb (wkb blob, srid integer)
sde.st_geomfromwkb (wkb blob)
如果您未指定 SRID,则空间参考默认为 4326。
PostgreSQL
sde.st_geomfromwkb (wkb, srid integer)
sde.st_geomfromwkb (esri_shape bytea, srid integer)
SQLite
st_geomfromwkb (wkb blob, srid int32)
st_geomfromwkb (wkb blob)
如果您未指定 SRID,则空间参考默认为 4326。
返回类型
Oracle 和 PostgreSQL
ST_Geometry
SQLite
Geometryblob
示例
在以下示例中,对结果行进行了重新格式化,以增强可读性。结果中的间距将根据在线显示而有所不同。以下代码说明了如何使用 ST_GeomFromWKB 函数由 WKB 线表示来创建和插入线。以下示例通过 WKB 表示的空间参考系统 4326 中的 ID 和几何将记录插入到 sample_gs 表中。
Oracle
CREATE TABLE sample_gs (
id integer,
geometry sde.st_geometry,
wkb blob
);
INSERT INTO sample_gs (id, geometry) VALUES (
1901,
sde.st_geomfromtext ('point (1 2)', 4326)
);
INSERT INTO sample_gs (id, geometry) VALUES (
1902,
sde.st_geomfromtext ('linestring (33 2, 34 3, 35 6)', 4326)
);
INSERT INTO sample_gs (id, geometry) VALUES (
1903,
sde.st_geomfromtext ('polygon ((3 3, 4 6, 5 3, 3 3))', 4326)
);
UPDATE sample_gs
SET wkb = sde.st_asbinary (geometry)
WHERE id = 1901;
UPDATE sample_gs
SET wkb = sde.st_asbinary (geometry)
WHERE id = 1902;
UPDATE sample_gs
SET wkb = sde.st_asbinary (geometry)
WHERE id = 1903;
SELECT id, sde.st_astext (sde.st_geomfromwkb (wkb, 4326))
FROM sample_gs;
ID GEOMETRY
1901 POINT (1.00000000 2.00000000)
1902 LINESTRING (33.00000000 2.00000000, 34.00000000 3.00000000, 35.00000000 6.00000000)
1903 POLYGON ((3.00000000 3.00000000, 5.00000000 3.00000000, 4.00000000 6.00000000, 3.00000000 3.00000000))
PostgreSQL
CREATE TABLE sample_gs (
id integer,
geometry sde.st_geometry,
wkb bytea);
INSERT INTO sample_gs (id, geometry) VALUES (
1901,
sde.st_geometry ('point (1 2)', 4326)
);
INSERT INTO sample_gs (id, geometry) VALUES (
1902,
sde.st_geometry ('linestring (33 2, 34 3, 35 6)', 4326)
);
INSERT INTO sample_gs (id, geometry) VALUES (
1903,
sde.st_geometry ('polygon ((3 3, 4 6, 5 3, 3 3))', 4326)
);
UPDATE sample_gs
SET wkb = sde.st_asshape (geometry)
WHERE id = 1901;
UPDATE sample_gs
SET wkb = sde.st_asshape (geometry)
WHERE id = 1902;
UPDATE sample_gs
SET wkb = sde.st_asshape (geometry)
WHERE id = 1903;
SELECT id, sde.st_astext (sde.st_geomfromshape (wkb, 4326))
FROM sample_gs;
id st_astext
1901 POINT (1 2)
1902 LINESTRING (33 2, 34 3, 35 6)
1903 POLYGON ((3 3, 5 3, 4 6, 3 3))
SQLite
CREATE TABLE sample_gs (
id integer primary key autoincrement not null,
wkb blob
);
SELECT AddGeometryColumn (
NULL,
'sample_gs',
'geometry',
4326,
'geometry',
'xy',
'null'
);
INSERT INTO sample_gs (geometry) VALUES (
st_geomfromtext ('point (1 2)', 4326)
);
INSERT INTO sample_gs (geometry) VALUES (
st_geomfromtext ('linestring (33 2, 34 3, 35 6)', 4326)
);
INSERT INTO sample_gs (geometry) VALUES (
st_geomfromtext ('polygon ((3 3, 4 6, 5 3, 3 3))', 4326)
);
--Replace IDs with actual values.
UPDATE sample_gs
SET wkb = st_asbinary (geometry)
WHERE id = 1;
UPDATE sample_gs
SET wkb = st_asbinary (geometry)
WHERE id = 2;
UPDATE sample_gs
SET wkb = st_asbinary (geometry)
WHERE id = 3;
SELECT id, st_astext (st_geomfromwkb (wkb, 4326))
FROM sample_gs;
ID GEOMETRY
1 POINT (1.00000000 2.00000000)
2 LINESTRING (33.00000000 2.00000000, 34.00000000 3.00000000, 35.00000000 6.00000000)
3 POLYGON ((3.00000000 3.00000000, 5.00000000 3.00000000, 4.00000000 6.00000000, 3.00000000 3.00000000))