| 類型 | 說明 | 典型用途 |
| GEOMETRY | 任意幾何值的通用容器 | 列類型不確定、混合存儲 |
| POINT | 單一坐標點 | GPS 定位、POI 標記 |
| LINESTRING | 有序點序列形成的線 | 道路、軌跡、管線 |
| POLYGON | 外環 + 0~N 內環(洞) | 行政區劃、地塊、圍欄 |
多值集合類型
| 類型 | 成員限制 | 典型用途 |
| MULTIPOINT | 僅 POINT | 一組無序坐標點(如門店群) |
| MULTILINESTRING | 僅 LINESTRING | 路網、河流水系 |
| MULTIPOLYGON | 僅 POLYGON | 多塊地塊(如離散行政區) |
| GEOMETRYCOLLECTION | 任意幾何類型混合 | 異構幾何對象聚合 |
關鍵特性
- 所有類型支援 **SRID (Spatial Reference System Identifier)**,預設 0(平面笛卡爾),常用 4326 (WGS84 經緯度)。
- 空間索引(SPATIAL INDEX)僅支援 **MyISAM / InnoDB (5.7.5+)**,需列為
NOT NULL。
- 函數族:
ST_Contains、ST_Distance、ST_Intersection、ST_AsGeoJSON 等 100+ GIS 函數。
建表示例
CREATE TABLE pois (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
location POINT NOT NULL SRID 4326,
area POLYGON SRID 4326,
SPATIAL INDEX idx_location (location)
) ENGINE=InnoDB;
插入與查詢
INSERT INTO pois (name, location)
VALUES ('Taipei 101', ST_GeomFromText('POINT(121.5645 25.0340)', 4326));
SELECT name, ST_AsText(location) FROM pois
WHERE ST_Distance(location, ST_GeomFromText('POINT(121.56 25.03)', 4326)) < 1000;
copyright ©
萬盛學電腦網 all rights reserved