Definición
ST_GeomFromWKB toma una representación binaria conocida (WKB) y un Id. de referencia espacial para devolver un objeto de geometría.
Sintaxis
Oracle
sde.st_geomfromwkb (wkb blob, srid integer)
sde.st_geomfromwkb (wkb blob)
Si no especifica ningún SRID, la referencia espacial tiene de forma predeterminada el valor 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)
Si no especifica ningún SRID, la referencia espacial tiene de forma predeterminada el valor 4326.
Tipo de devolución
Oracle y PostgreSQL
ST_Geometry
SQLite
Geometryblob
Ejemplo
En el siguiente ejemplo, las líneas de los resultados se han reformateado para su legibilidad. El espaciado en sus resultados variará según su visualización en línea. El siguiente código ilustra cómo la función ST_GeomFromWKB se puede utilizar para crear e insertar una línea desde una representación de línea WKB. En el siguiente ejemplo, se introduce un registro en la tabla sample_gs con un Id. y una geometría en el sistema de referencia espacial 4326 en una representación WKB.
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))