暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的函数和运算符 - 空间分析函数 - 几何属性函数 - 点属性函数

数据库杂货铺 2021-08-09
653
点属性函数
一个 Point X Y 坐标组成,可以分别使用 ST_X() ST_Y() 函数获得。这些函数还允许指定 X Y 坐标值的可选第二参数,在这种情况下,函数结果是第一个参数的 Point 对象,其适当的坐标修改为第二个参数指定的值。
 
对于具有地理空间参照系统(SRS)Point 对象,经度和纬度可以分别使用 ST_Longitude() ST_Latitude() 函数获得。这些函数还允许使用可选第二参数,指定经度或纬度值,在这种情况下,函数结果是来自第一个参数的 Point 对象,其经度或纬度修改为第二个参数指定的值。
 
除非另有说明,本部分中的函数处理几何参数的方式如下:
 
● 如果任何参数为 NULL,则返回值为 NULL
 
● 如果几何参数是有效的几何值,但不是 Point 对象,则会发生 ER_UNEXPECTED_GEOMETRY_TYPE 错误。
 
● 如果几何参数不是语法良好的几何值,就会发生 ER_GIS_INVALID_DATA 错误。
 
● 如果几何参数是语法良好的几何值,但处于未定义的空间参照系统(SRS),就会发生 ER_SRS_NOT_FOUND 错误。
 
● 如果提供了 X Y 坐标参数,且值为 -inf+inf NaN,会发生 ER_DATA_OUT_OF_RANGE 错误。
 
● 如果经度或纬度值超出范围,则发生错误:
 
■ 如果经度值不在 (180, 180] 范围内,则会出现 ER_LONGITUDE_OUT_OF_RANGE 错误。
 
■ 如果纬度值不在 [90, 90] 范围内,则发生 ER_LATITUDE_OUT_OF_RANGE 错误。
 
● 所示范围以度数表示。由于浮点运算,精确的范围限制略有偏差。
 
● 否则,返回值是非 NULL
 
这些函数可用于获取点属性:
 
● ST_Latitude(p [, new_latitude_val])
 
使用一个具有地理空间参照系统(SRS)的有效 Point 对象 p 的参数,ST_Latitude() p 的纬度值作为双精度数字返回。
 
可选的第二个参数表示有效的纬度值,使用此参数,ST_Latitude() 返回一个 Point 对象,类似于第一个参数,但其纬度值改为第二个参数指定的值。
 
ST_Latitude() 按照本部分介绍的方法处理其参数,但如果 Point 对象是有效的,却没有地理 SRS,则会发生 ER_SRS_NOT_GEOGRAPHIC 错误。
 
    mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326);
    mysql> SELECT ST_Latitude(@pt);
    +------------------+
    | ST_Latitude(@pt) |
    +------------------+
    | 45 |
    +------------------+
    mysql> SELECT ST_AsText(ST_Latitude(@pt, 10));
    +---------------------------------+
    | ST_AsText(ST_Latitude(@pt, 10)) |
    +---------------------------------+
    | POINT(10 90) |
    +---------------------------------+
    这个函数是在 MySQL 8.0.12 中添加的。
     
    ● ST_Longitude(p [, new_longitude_val])
     
    使用一个具有地理空间参照系统(SRS)的有效 Point 对象 p 参数,ST_Longitude() p 的经度值以双精度数值返回。
     
    可选的第二个参数表示有效的经度值,使用此参数,ST_Longitude() 返回一个 Point 对象,类似于第一个参数,其经度等于第二个参数。
     
    ST_Longitude() 按照本部分的介绍处理其参数,如果 Point 对象是有效的,但没有地理 SRS,则会发生 ER_SRS_NOT_GEOGRAPHIC 错误。
     
      mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326);
      mysql> SELECT ST_Longitude(@pt);
      +-------------------+
      | ST_Longitude(@pt) |
      +-------------------+
      | 90 |
      +-------------------+
      mysql> SELECT ST_AsText(ST_Longitude(@pt, 10));
      +----------------------------------+
      | ST_AsText(ST_Longitude(@pt, 10)) |
      +----------------------------------+
      | POINT(45 10) |
      +----------------------------------+
       
      这个函数是在 MySQL 8.0.12 中添加的。
       
      ● ST_X(p [, new_x_val])
       
      ST_X() 使用一个表示有效 Point 对象的 p 参数,以双精度数值返回 p  X 坐标值。从 MySQL 8.0.12 开始,X 坐标被认为是指在点空间参照系统(SRS)定义中最先出现的轴。
       
      使用可选的第二个参数,ST_X() 返回一个 Point 对象,类似于第一个参数,但其 X 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果 Point 对象具有地理 SRS,则第二个参数必须在经度或纬度值的正确范围内。
       
      ST_X() 按照本节介绍中描述的方式处理其参数。
       
        mysql> SELECT ST_X(Point(56.7, 53.34));
        +--------------------------+
        | ST_X(Point(56.7, 53.34)) |
        +--------------------------+
        | 56.7 |
        +--------------------------+
        mysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5));
        +-------------------------------------------+
        | ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) |
        +-------------------------------------------+
        | POINT(10.5 53.34) |
        +-------------------------------------------+
         
        ● ST_Y(p [, new_y_val])
         
        ST_Y() 使用一个表示有效 Point 对象 p 的参数,以双精度数值返回 p  Y 坐标值。从 MySQL 8.0.12 开始,Y 坐标被认为是指在 Point 空间参照系统(SRS)定义中出现的第二个轴。
         
        使用可选的第二个参数,ST_Y() 返回一个 Point 对象,类似于第一个参数,但其 Y 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果 Point 对象具有地理 SRS,则第二个参数必须在经度或纬度值的适当范围内。
         
        ST_Y() 按照本部分介绍中描述的方式处理其参数。
         
          mysql> SELECT ST_Y(Point(56.7, 53.34));
          +--------------------------+
          | ST_Y(Point(56.7, 53.34)) |
          +--------------------------+
          | 53.34 |
          +--------------------------+
          mysql> SELECT ST_AsText(ST_Y(Point(56.7, 53.34), 10.5));
          +-------------------------------------------+
          | ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)) |
          +-------------------------------------------+
          | POINT(56.7 10.5) |
          +-------------------------------------------+
           
           
           
           
          官方网址:
          https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html
          文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论