Mysql 计算地理位置信息

2023-12-14 17:09:04

mysql 处理空间关系

MySQL提供了一系列的函数来帮助我们处理空间对象之间的关系,如 ST_Intersects、ST_Contains 等。这些函数可以帮助我们判断空间对象之间的位置关系,并在此基础上执行相应的查询。

多边形查询

在实际应用中,需要查询某个区域(多边形)内的所有的点。可以使用ST_CONTAINS 函数来实现这个需求

CREATE TABLE `spots` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
  `lat` decimal(24,6) NOT NULL COMMENT '纬度',
  `lon` decimal(24,6) NOT NULL COMMENT '经度',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO wg_for_test.spots (id, name, lat, `long`) VALUES(1, '111', 36.83704214, 117.15803146);
INSERT INTO wg_for_test.spots (id, name, lat, `long`) VALUES(2, '222', 36.6718611, 117.13391304);

SELECT
	*
FROM
	spots s
WHERE
	ST_CONTAINS(ST_GeomFromText('POLYGON((36.8588150600 117.0421600300, 36.8565487700 117.2181129500, 36.7488396900 117.1599519300, 36.7642261500 117.0372676800, 36.8588150600 117.0421600300))'),
	POINT(s.lat,
	s.lon));

在这里插入图片描述

https://blog.51cto.com/u_16213716/7209198

文章来源:https://blog.csdn.net/wg22222222/article/details/134994967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。