在MySQL中,有两种常用的空间数据类型:GEOMETRY
和POLYGON
,它们用于存储不同类型的几何对象。
GEOMETRY
类型:
GEOMETRY
是一种通用的几何类型,可以用来存储点、线、多边形等各种几何对象。-
使用
GEOMETRY
类型时,需要在创建表时指定具体的几何对象类型,例如POINT
、LINESTRING
、POLYGON
等。 -
优点是可以存储不同类型的几何对象,但缺点是在查询时需要额外的处理来区分不同类型的几何对象。
CREATE TABLE spatial_data (
id INT PRIMARY KEY,
geom GEOMETRY
);
INSERT INTO spatial_data (id, geom) VALUES
(1, POINT(1, 1)),
(2, LINESTRING(0, 0, 1, 1, 2, 2)),
(3, POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)));
批量插入经纬度坐标
INSERT INTO points (id,geom)
SELECT id,ST_GeomFromText(CONCAT('POINT(', X, ' ', Y, ')'))
FROM your_existing_points_table;
POLYGON
类型:
POLYGON
是一种特定的几何类型,用于存储封闭的多边形。- 使用
POLYGON
类型时,存储的几何对象必须是多边形,不能存储其他类型的几何对象。 - 优点是更具体地表示了存储的几何对象类型,且在查询时不需要额外的处理来区分几何对象类型。
CREATE TABLE polygons (
id INT PRIMARY KEY,
polygon_geom POLYGON
);
INSERT INTO polygons (id, polygon_geom) VALUES
(1, POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))),
(2, POLYGON((0 0, 0 5, 5 5, 5 0, 0 0)));
1、转 换为多边形对象
SELECT ST_AsText(ST_PolygonFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'));
2、点转换为wtk
SELECT ST_AsText(ST_PointFromText('POINT(10 20)'));
3、空间孤岛报错
边界坐标首尾相连MultiPolygon多图形