MySQL空间函数ST_Distance_Sphere()的使用

参考: https://blog.csdn.net/qq_19674263/article/details/104405987#:~:text=MySQL空间函数ST_Distance_Sphere (g1%2C g2 ,%20radius%5D%29%20%EF%BC%9A%E8%BF%94%E5%9B%9E%E7%90%83%E4%BD%93%E4%B8%8A%E4%B8%A4%E4%B8%AA%E7%82%B9%E5%92%8C%2F%E6%88%96%E5%A4%9A%E7%82%B9%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E5%B0%8F%E7%90%83%E9%9D%A2%E8%B7%9D%E7%A6%BB%EF%BC%88%E4%BB%A5%E7%B1%B3%E4%B8%BA%E5%8D%95%E4%BD%8D%EF%BC%89%20%E5%AE%98%E7%BD%91%EF%BC%88https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.7%2Fen%2Fspatial-convenience-functions.html%EF%BC%89

MySQL空间函数ST_Distance_Sphere(g1, g2 [, radius]) :返回球体上两个点和/或多点之间的最小球面距离(以米为单位)

官网( https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200220102450292.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5Njc0MjYz,size_16,color_FFFFFF,t_70)

测试

表结构如下:

`create table t_geo_test
(
    ID    int auto_increment
        primary key,
    NAME  varchar(64) not null,
    SHAPE geometry    not null
)
    engine = InnoDB
    charset = utf8;` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9


测试数据:(插入坐标时,以下两种写法都可以)

`INSERT INTO t_geo_test VALUES (1, '测试', POINT(121.590347, 31.388094));
INSERT INTO t_geo_test VALUES (2, 'somewhere', ST_GeomFromText('POINT(121.366961 31.190049)'));` 

*   1
*   2


计算距离:

`SELECT st_distance_sphere(POINT(121.590347, 31.388094),SHAPE) AS distant FROM t_geo_test;` 

*   1


查询到某点的距离小于一个值的所有数据:

`SELECT *, ST_Distance_Sphere(POINT(121.590347, 31.388094),SHAPE) AS distant FROM t_geo_test WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),SHAPE) < 1000 ORDER BY distant;` 

*   1


注意:
坐标不能随意写测试数据,注意官网中的说的条件:

几何参数应由指定(经度,纬度)坐标值的点组成:
经度和纬度分别是该点的第一和第二坐标。
两个坐标均以度为单位。
经度值必须在(-180,180]范围内。正值位于本初子午线以东。
纬度值必须在[-90,90]范围内。正值位于赤道以北。

否则则会报错:

`[HY000][1210] Incorrect arguments to st_distance_sphere` 

*   1


https://www.cnblogs.com/changge333/p/15378276.html
三、Geometry的常用函数
1.构造函数
构造函数会获取一种几何类型或几何的文本说明,然后创建一个几何

ST_Point:文本格式转Point格式(例如存表的时候)
ST_PointFromText:Point格式转文本格式(例如查询的时候)
ST_Polygon:文本格式转Polygon格式
ST_PolygonFromText:Polygon格式转文本格式
ST_PointFromWKB:以熟知二进制 (WKB) 表示和空间参考 ID 作为输入参数返回 ST_Point 类型的对象
2.存取器函数
函数都采用一个或多个几何作为输入,并返回关于几何的特定信息

获取线/面对象四至:st_xmin(geometry)、st_ymin(geometry)、st_xmax(geometry)、st_ymax(geometry)
ST_AsText:获取一个几何类型,然后返回其可识别的文本表示
ST_AsGeoJSON:将Geometry格式转为JSON格式
ST_Centroid:以面或多面为参数输入,然后返回位于几何的包络矩形中心的点
ST_Length:用于返回线串或多线串的长度
ST_MaxX:以几何为参数,返回最大的 X 坐标
ST_SRID:以几何对象作为输入参数,并返回其空间参考 ID
ST_X:返回点坐标的 X 坐标
ST_Y:返回点坐标的 Y 坐标
posted @ 2022-11-11 16:34  狂客  阅读(1025)  评论(0)    收藏  举报