mysql 5.7.28 空间地理位置计算
1. 创建测试表
2. 插入数据
3. 计算两个坐标点之间的距离
4. 计算指定的坐标点是否位于多边形(面)中
4.1 第一种方式
4.2 第二种方式
5. 计算两个多边形(面)是否相交 (st_intersects )
6. 计算两个多边形(面)是否包含(st_contains )
7. 计算一个多边形(面)是否在另一个多边形(面)内(st_within)
8. 遇到的异常
1. MySQL: Invalid GIS data provided to function st_geometryfromtext
1. 创建测试表
创建polygon表,该表用于存储多边形(面)数据:
CREATE TABLE `polygon` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`polygongeo` polygon NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
创建spots表,该表用于存储坐标点数据:
CREATE TABLE `spots` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL COMMENT '地点名称',
`spot` point DEFAULT NULL COMMENT '经纬度点',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 插入数据
polygon表:
INSERT INTO polygon ( polygongeo, NAME )
VALUES( POLYGONFROMTEXT ( 'POLYGON((36.6882