Ce face ST_PointFromWKB() și celelalte funcții WKB pe tip
Aceste funcții verifică tipul geometriei din WKB: dacă octeții descriu alt tip, primești eroarea „WKB value is a geometry of unexpected type”. Sunt utile când știi sigur ce tip trebuie să conțină datele importate.
Sinonime: ST_LineStringFromWKB(), ST_PolygonFromWKB(), ST_MultiPointFromWKB(), ST_MultiLineStringFromWKB(), ST_MultiPolygonFromWKB() și ST_GeometryCollectionFromWKB(). Ca la ST_GeomFromWKB(), din MySQL 8.4 argumentul trebuie să fie WKB, nu o geometrie.
Parametri
| Parametru | Descriere |
|---|---|
wkb |
Șirul binar WKB. |
srid |
Opțional: sistemul de coordonate. |
optiuni |
Opțional: ordinea axelor. |
Ce returnează
Geometria de tipul cerut.
Exemple
Exemplul 1: Funcțiile simple: punct, linie, poligon
SET @p = ST_AsWKB(Point(2, 6));
SET @l = ST_AsWKB(ST_GeomFromText('LINESTRING(0 0,3 0,3 4)'));
SET @poli = ST_AsWKB(ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))'));
SELECT ST_AsText(ST_PointFromWKB(@p)) AS punct,
ST_Length(ST_LineFromWKB(@l)) AS lungime,
ST_Length(ST_LineStringFromWKB(@l)) AS lungime_sinonim,
ST_Area(ST_PolyFromWKB(@poli)) AS arie,
ST_Area(ST_PolygonFromWKB(@poli)) AS arie_sinonim;
Rezultat
+------------+---------+-----------------+------+--------------+
| punct | lungime | lungime_sinonim | arie | arie_sinonim |
+------------+---------+-----------------+------+--------------+
| POINT(2 6) | 7 | 7 | 16 | 16 |
+------------+---------+-----------------+------+--------------+
Exemplul 2: Geometriile compuse
SET @mp = ST_AsWKB(ST_GeomFromText('MULTIPOINT(1 1,2 6,5 3)'));
SET @ml = ST_AsWKB(ST_GeomFromText('MULTILINESTRING((0 0,3 0),(3 4,6 4))'));
SET @mpo = ST_AsWKB(ST_GeomFromText('MULTIPOLYGON(((0 0,4 0,4 4,0 0)),((10 0,12 0,12 2,10 0)))'));
SET @gc = ST_AsWKB(ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,5 3))'));
SELECT ST_AsText(ST_MPointFromWKB(@mp)) AS mpoint,
ST_NumGeometries(ST_MultiPointFromWKB(@mp)) AS nr_puncte,
ST_Length(ST_MLineFromWKB(@ml)) AS lungime,
ST_Length(ST_MultiLineStringFromWKB(@ml)) AS lungime2;
SELECT ST_Area(ST_MPolyFromWKB(@mpo)) AS arie,
ST_Area(ST_MultiPolygonFromWKB(@mpo)) AS arie2,
ST_AsText(ST_GeomCollFromWKB(@gc)) AS colectie,
ST_NumGeometries(ST_GeometryCollectionFromWKB(@gc)) AS elemente;
Rezultat
+-------------------------------+-----------+---------+----------+
| mpoint | nr_puncte | lungime | lungime2 |
+-------------------------------+-----------+---------+----------+
| MULTIPOINT((1 1),(2 6),(5 3)) | 3 | 6 | 6 |
+-------------------------------+-----------+---------+----------+
+------+-------+----------------------------------------------------+----------+
| arie | arie2 | colectie | elemente |
+------+-------+----------------------------------------------------+----------+
| 10 | 10 | GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,5 3)) | 2 |
+------+-------+----------------------------------------------------+----------+
Greșeli frecvente
- Folosești
ST_LineFromWKB()pe un punct. Interogarea se oprește cu eroare; dacă nu știi tipul, foloseșteST_GeomFromWKB()și verifică apoi cuST_GeometryType().
Comenzi înrudite
ST_GeomFromWKB(): Creează o geometrie de orice tip din reprezentarea ei binară WKB, opțional cu SRID.ST_AsBinary(): Transformă o geometrie în formatul binar standard WKB („Well-Known Binary”), folosit la schimbul de date.ST_PointFromText(), ST_LineFromText(), ST_PolyFromText(): Creează un punct, o linie sau un poligon din text WKT și verifică totodată că textul are tipul cerut.