mysql中point的使用详解

 更新时间:2023年07月28日 09:26:42   作者:Mcband  
MySQL的point函数是一个用于处理空间坐标系的函数,它可以将两个数值作为参数,返回一个Point对象,这篇文章主要介绍了mysql中point的使用,需要的朋友可以参考下

前言

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用,本文主要讲解point类型的简单使用

一.创建带有point类型的表格

CREATE TABLE `test-point` (
	  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
	  `point` point NOT NULL COMMENT '经纬度',
	  `text` varchar(50) DEFAULT NULL COMMENT '描述',
	  PRIMARY KEY (`id`)
	) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;

二.添加数据

INSERT INTO `test-point` ( point,text ) VALUES ( st_GeomFromText ( 'POINT(1 1)' ),'第1个点');
INSERT INTO `test-point` ( point,text ) VALUES ( st_PointFromText  ( 'POINT(2 2)' ),'第2个点');

注意:其中st_GeomFromText ,st_PointFromText 是将字符串转换成point类型的数据,这两个都可以,其中st_GeomFromText 是父级,st_PointFromText 是子级.

三.查询数据

SELECT id,st_x(point) x,st_y(point) y,point,text FROM `test-point`
update `test-point` set point=st_GeomFromText('POINT(6 6)') where id =10;

注意:st_x(point)是获取POINT(1 2)中的1,st_y(point)是获取POINT(1 2)中的2,st_AsText(point)是将point类型转换成字符串.

四.更新数据

update `test-point` set point=st_PointFromText('POINT(5 5)') where id =10;
update `test-point` set point=st_GeomFromText('POINT(6 6)') where id =10;

五.查询一个点与数据库其他点之间的距离

SELECT
	id,
	st_x ( point ) latitude,
	st_y ( point ) longitude,
	round(( ST_DISTANCE_SPHERE ( st_GeomFromText ( 'POINT (1 1)' ), point )), 1 ) AS distance 
FROM
	`test-point`

注意:st_distance_sphere函数是将坐标距离转换成米也可以使用st_distancest_distance_sphere函数的计算结果要比st_distance转换为米的结果更精确。本人测试st_distance函数发现,随着点与点之间的距离增加误差越来越大.

六.查询一个点为圆心,方圆2000米内的数据

SELECT
	id,
	st_x ( point ) latitude,
	st_y ( point ) longitude,
	round(( ST_DISTANCE_SPHERE ( st_GeomFromText ( 'POINT (1 1)' ), point )), 1 ) AS distance 
FROM
	`test-point`
HAVING 
	distance <=2000

注意

  • Mysql5.7版本的语法不需要加"st_"这个前缀
  • POINT(经度,纬度) 经度和纬度不要写反,5.7查询不到结果,8.0版本查询为零,因为经度范围是 -180°-180°,纬度是-90°-90°,如果写反,纬度会超出范围,导致报错
  • POINT类型里面单位是小数,不是度.POINT(12.1 14.6),可以看我以前的文章经纬度度数和小数之间的转化

到此这篇关于mysql中point的使用的文章就介绍到这了,更多相关mysql point使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一条慢SQL语句引发的改造之路

    一条慢SQL语句引发的改造之路

    这篇文章主要给大家介绍了关于一条慢SQL语句引发的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Mysql服务器的启动与停止(一)

    Mysql服务器的启动与停止(一)

    Mysql服务器的启动与停止(一)...
    2006-11-11
  • MySQL索引类型Normal、Unique和Full Text的讲解

    MySQL索引类型Normal、Unique和Full Text的讲解

    今天小编就为大家分享一篇关于MySQL索引类型Normal、Unique和Full Text的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 教你用eclipse连接mysql数据库

    教你用eclipse连接mysql数据库

    这篇文章主要介绍了教你用eclipse连接mysql数据库,文中有非常详细的图文示例,对不会链接mysql的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-04-04
  • mysql下的max_allowed_packet参数设置详解

    mysql下的max_allowed_packet参数设置详解

    本文主要介绍了mysql下的max_allowed_packet参数设置详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • mysql中格式化日期详解

    mysql中格式化日期详解

    最近因为工作需要,要使用mysql查询记录可如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,所以这篇文章就提供mysql格式换时间函数,可以方便的看到格式化后的时间。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • mysql如何统计同一字段不同值的个数

    mysql如何统计同一字段不同值的个数

    这篇文章主要介绍了mysql如何统计同一字段不同值的个数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • mysql设置某字段不能重复问题

    mysql设置某字段不能重复问题

    这篇文章主要介绍了mysql设置某字段不能重复问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql创建删除表的实例详解

    mysql创建删除表的实例详解

    这篇文章主要介绍了mysql创建删除表的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-10-10
  • Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)

    Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)

    这篇文章主要介绍了Redhat7.3安装MySQL8.0.22(二进制安装),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论