Definition
ST_GeomFromWKB takes a well-known binary (WKB) representation and a spatial reference ID to return a geometry object.
Syntax
Oracle
sde.st_geomfromwkb (wkb blob, srid integer)
sde.st_geomfromwkb (wkb blob)
If you do not specify an SRID, the spatial reference defaults to 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)
If you do not specify an SRID, the spatial reference defaults to 4326.
Return type
Oracle and PostgreSQL
ST_Geometry
SQLite
Geometryblob
Example
In the following example, the lines of results have been reformatted for readability. The spacing in your results will vary according to your online display. The following code illustrates how the ST_GeomFromWKB function can be used to create and insert a line from a WKB line representation. The following example inserts a record into the sample_gs table with an ID and a geometry in spatial reference system 4326 in a WKB representation.
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))