首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL WKB 函數構建幾何值完整手冊:從 WKT 到 Geometry 對象

     編輯:MySQL 資料庫相關知識

MySQL 提供完整的 WKB(Well-Known Binary)構造函數族,支援從二進制流或 WKT 表達式創建各類幾何對象。本文彙總所有構造函數語法、參數說明、類型對應關係及未實現的 OpenGIS 擴展函數,供空間數據導入與轉換參考。

一、 通用構造函數

二、 單值幾何類型專用構造函數

函數名別名構造類型參數
GeomFromWKB(wkb[, srid])GeometryFromWKB任意幾何類型WKB blob, 可選 SRID
GeomCollFromWKB(wkb[, srid])GeometryCollectionFromWKBGEOMETRYCOLLECTIONWKB blob, 可選 SRID
函數名別名構造類型
PointFromWKB(wkb[, srid])—POINT
LineFromWKB(wkb[, srid])LineStringFromWKBLINESTRING
PolyFromWKB(wkb[, srid])PolygonFromWKBPOLYGON

三、 集合幾何類型專用構造函數

函數名別名構造類型
MPointFromWKB(wkb[, srid])MultiPointFromWKBMULTIPOINT
MLineFromWKB(wkb[, srid])MultiLineStringFromWKBMULTILINESTRING
MPolyFromWKB(wkb[, srid])MultiPolygonFromWKBMULTIPOLYGON

四、 參數與返回值說明

  • wkb:包含幾何對象 WKB 編碼的 BLOB 值。
  • srid:可選的空間參考系統標識符(整數)。若省略,預設為 0。
  • 返回值:對應類型的幾何對象;若 WKB 格式錯誤或類型不匹配,返回 NULL。

五、 OpenGIS 擴展函數(MySQL 未實現)

以下函數基於閉合 LineString 集合構造 Polygon/MultiPolygon,MySQL 目前 不支援:

函數名功能描述
BdPolyFromWKB(wkb, srid)從 MultiLineString WKB 構造 Polygon(允許環相交)
BdMPolyFromWKB(wkb, srid)從 MultiLineString WKB 構造 MultiPolygon(允許環相交)

替代方案: 使用 PolygonFromWKB / MultiPolygonFromWKB 搭配標準 WKB(需保證環不相交、正確定向)。

六、 實戰範例:從 WKT 文本導入

-- 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、跨系統遷移與空間查詢構建。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved