MySQL 提供完整的 WKB(Well-Known Binary)構造函數族,支援從二進制流或 WKT 表達式創建各類幾何對象。本文彙總所有構造函數語法、參數說明、類型對應關係及未實現的 OpenGIS 擴展函數,供空間數據導入與轉換參考。
| 函數名 | 別名 | 構造類型 | 參數 |
|---|---|---|---|
GeomFromWKB(wkb[, srid]) | GeometryFromWKB | 任意幾何類型 | WKB blob, 可選 SRID |
GeomCollFromWKB(wkb[, srid]) | GeometryCollectionFromWKB | GEOMETRYCOLLECTION | WKB blob, 可選 SRID |
| 函數名 | 別名 | 構造類型 |
|---|---|---|
PointFromWKB(wkb[, srid]) | — | POINT |
LineFromWKB(wkb[, srid]) | LineStringFromWKB | LINESTRING |
PolyFromWKB(wkb[, srid]) | PolygonFromWKB | POLYGON |
| 函數名 | 別名 | 構造類型 |
|---|---|---|
MPointFromWKB(wkb[, srid]) | MultiPointFromWKB | MULTIPOINT |
MLineFromWKB(wkb[, srid]) | MultiLineStringFromWKB | MULTILINESTRING |
MPolyFromWKB(wkb[, srid]) | MultiPolygonFromWKB | MULTIPOLYGON |
wkb:包含幾何對象 WKB 編碼的 BLOB 值。srid:可選的空間參考系統標識符(整數)。若省略,預設為 0。NULL。以下函數基於閉合 LineString 集合構造 Polygon/MultiPolygon,MySQL 目前 不支援:
| 函數名 | 功能描述 |
|---|---|
BdPolyFromWKB(wkb, srid) | 從 MultiLineString WKB 構造 Polygon(允許環相交) |
BdMPolyFromWKB(wkb, srid) | 從 MultiLineString WKB 構造 MultiPolygon(允許環相交) |
替代方案: 使用 PolygonFromWKB / MultiPolygonFromWKB 搭配標準 WKB(需保證環不相交、正確定向)。
-- WKT 文本
SET @wkt = 'POINT(116.39 39.91)';
-- 轉 WKB 再構造(MySQL 內部自動處理 WKT→WKB)
INSERT INTO spatial_table (geom) VALUES (ST_GeomFromText(@wkt, 4326));
-- 或直接用 WKB 十六進制字串
INSERT INTO spatial_table (geom) VALUES (ST_GeomFromWKB(0x0101000020E6100000...));
MySQL WKB 構造函數族完整覆蓋所有空間類型,提供從二進制流高效構建幾何對象的能力。掌握函數命名規律(TypeFromWKB / MTypeFromWKB)、SRID 參數用法及未實現擴展函數的替代方案,可順暢實現空間數據 ETL、跨系統遷移與空間查詢構建。