ST_GeomFromWKB

Definition

Mit ST_GeomFromWKB wird anhand eines Well-Known Binary-Formats (WKB) und einer Raumbezugs-ID ein Geometrieobjekt zurückgegeben.

Syntax

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)

Rückgabetyp

Oracle und PostgreSQL

ST_Geometry

SQLite

Geometryblob

Beispiel

Im folgenden Beispiel wurden die Zeilen der Ergebnisse zur besseren Lesbarkeit neu formatiert. Die Abstände der Ihnen angezeigten Ergebnisse können abhängig von Ihrer Online-Darstellung variieren. Mit dem folgenden Code wird verdeutlicht, wie die ST_GeomFromWKB-Funktion verwendet werden kann, um eine Linie aus einer WKB-Linien-Repräsentation zu erstellen und einzufügen. Im folgenden Beispiel wird ein Datensatz in die Tabelle "sample_gs" mit einer ID und einer Geometrie im Raumbezugssystem 4326 in einem WKB-Format eingefügt.

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

Verwandte Themen

5/10/2014