ST_GeomFromWKB

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)

PostgreSQL

sde.st_geomfromwkb (wkb, srid integer)
sde.st_geomfromwkb (esri_shape bytea, srid integer)

SQLite

st_geomfromwkb (wkb blob, srid int32)

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))

Temas relacionados

5/10/2014