Spec-Zone.ru › MySQL 9.2

14.16.7.2 Функции свойств точки

Объект Point состоит из координат X и Y, которые можно получить, используя функции ST_X() и ST_Y() соответственно. Эти функции также допускают необязательный второй аргумент, который задаёт значение координаты X или Y. В этом случае результатом функции является объект Point из первого аргумента с соответствующей координатой, изменённой на значение второго аргумента.

Для объектов Point, имеющих географическую систему координат (СК), долготу и широту можно получить, используя функции ST_Longitude() и ST_Latitude() соответственно. Эти функции также допускают необязательный второй аргумент, который задаёт значение долготы или широты. В этом случае результатом функции является объект Point из первого аргумента с изменённой долготой или широтой на значение второго аргумента.

За исключением случаев, когда указано иначе, функции в этом разделе обрабатывают свои геометрические аргументы следующим образом:

  • Если любой аргумент является NULL, возвращаемое значение равно NULL.

  • Если любой геометрический аргумент является корректной геометрией, но не объектом Point, возникает ошибка.

  • Если любой геометрический аргумент не является синтаксически корректной геометрией, возникает ошибка.

  • Если любой геометрический аргумент является синтаксически корректной геометрией в неопределённой системе координат (СК), возникает ошибка.

  • Если предоставлен аргумент координаты X или Y и значение является -inf, +inf или NaN, возникает ошибка.

  • Если значение долготы или широты выходит за пределы диапазона, возникает ошибка:

    • Если значение долготы не находится в диапазоне (−180, 180], возникает ошибка.

    • Если значение широты не находится в диапазоне [−90, 90], возникает ошибка.

    Указанные диапазоны в градусах. Точные пределы диапазона немного отличаются из-за арифметики с плавающей запятой.

  • В противном случае возвращаемое значение не является NULL.

Эти функции доступны для получения свойств точки:

  • ST_Latitude(p [, new_latitude_val])

    При использовании одного аргумента, представляющего корректный объект Point p, имеющий географическую систему координат (СК), функция ST_Latitude() возвращает значение широты p как число с двойной точностью.

    При использовании необязательного второго аргумента, представляющего корректное значение широты, функция ST_Latitude() возвращает объект Point, подобный первому аргументу, с широтой, равной второму аргументу.

    Функция ST_Latitude() обрабатывает свои аргументы, как описано в начале этого раздела, с добавлением того, что если объект Point является корректным, но не имеет географической СК, возникает ошибка.

    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)                    |
    +---------------------------------+
    
  • ST_Longitude(p [, new_longitude_val])

    При использовании одного аргумента, представляющего корректный объект Point p, имеющий географическую систему координат (СК), функция ST_Longitude() возвращает значение долготы p как число с двойной точностью.

    При использовании необязательного второго аргумента, представляющего корректное значение долготы, функция ST_Longitude() возвращает объект Point, подобный первому аргументу, с долготой, равной второму аргументу.

    Функция ST_Longitude() обрабатывает свои аргументы, как описано в начале этого раздела, с добавлением того, что если объект Point является корректным, но не имеет географической СК, возникает ошибка.

    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)                     |
    +----------------------------------+
    
  • ST_X(p [, new_x_val])

    При использовании одного аргумента, представляющего корректный объект Point p, функция ST_X() возвращает значение координаты X p как число с двойной точностью. Координата X рассматривается как ось, которая появляется первой в определении системы координат (СК) Point.

    При использовании необязательного второго аргумента, функция ST_X() возвращает объект Point, подобный первому аргументу, с координатой X, равной второму аргументу. Если объект Point имеет географическую СК, второй аргумент должен находиться в допустимом диапазоне для значений долготы или широты.

    Функция 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])

    При использовании одного аргумента, представляющего корректный объект Point p, функция ST_Y() возвращает значение координаты Y p как число с двойной точностью. Координата Y рассматривается как ось, которая появляется второй в определении системы координат (СК) Point.

    При использовании необязательного второго аргумента, функция ST_Y() возвращает объект Point, подобный первому аргументу, с координатой Y, равной второму аргументу. Если объект Point имеет географическую СК, второй аргумент должен находиться в допустимом диапазоне для значений долготы или широты.

    Функция 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)                          |
    +-------------------------------------------+
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/gis-point-property-functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API