Spec-Zone.ru › MySQL 9.2

14.16.7.1 Функции свойств общей геометрии

Функции, перечисленные в этом разделе, не ограничивают свои аргументы и принимают значение геометрии любого типа.

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

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

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

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

  • Если какой-либо аргумент SRID не находится в диапазоне 32-битного беззнакового целого числа, возникает ошибка.

  • Если какой-либо аргумент SRID ссылается на неопределённую SRS, возникает ошибка.

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

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

  • ST_Dimension(g)

    Возвращает внутреннюю размерность значения геометрии g. Размерность может быть −1, 0, 1 или 2. Значение этих значений приведено в разделе 13.4.2.2 «Класс геометрии».

    ST_Dimension() обрабатывает свои аргументы, как описано во введении к этому разделу.

    mysql> SELECT ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)'));
    +------------------------------------------------------+
    | ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')) |
    +------------------------------------------------------+
    |                                                    1 |
    +------------------------------------------------------+
    
  • ST_Envelope(g)

    Возвращает минимальный ограничивающий прямоугольник (MBR) для значения геометрии g. Результат возвращается как значение Polygon, которое определяется угловыми точками ограничивающей рамки:

    POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
    
    mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))) |
    +----------------------------------------------------------------+
    | POLYGON((1 1,2 1,2 2,1 2,1 1))                                 |
    +----------------------------------------------------------------+
    

    Если аргументом является точка или вертикальный или горизонтальный отрезок прямой, ST_Envelope() возвращает точку или отрезок прямой в качестве MBR, а не недействительный многоугольник:

    mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))) |
    +----------------------------------------------------------------+
    | LINESTRING(1 1,1 2)                                            |
    +----------------------------------------------------------------+
    

    ST_Envelope() обрабатывает свои аргументы, как описано во введении к этому разделу, с этим исключением:

    • Если геометрия имеет значение SRID для географической системы пространственной привязки (SRS), возникает ошибка.

  • ST_GeometryType(g)

    Возвращает двоичную строку, указывающую имя типа геометрии, к которому относится экземпляр геометрии g. Имя соответствует одному из подклассов Geometry, подлежащих экземпляризации.

    ST_GeometryType() обрабатывает свои аргументы, как описано во введении к этому разделу.

    mysql> SELECT ST_GeometryType(ST_GeomFromText('POINT(1 1)'));
    +------------------------------------------------+
    | ST_GeometryType(ST_GeomFromText('POINT(1 1)')) |
    +------------------------------------------------+
    | POINT                                          |
    +------------------------------------------------+
    
  • ST_IsEmpty(g)

    Эта функция является заглушкой, которая возвращает 1 для пустого значения коллекции геометрии или 0 в противном случае.

    Единственная допустимая пустая геометрия представлена в виде пустого значения коллекции геометрии. MySQL не поддерживает значения GIS EMPTY, такие как POINT EMPTY.

    ST_IsEmpty() обрабатывает свои аргументы, как описано во введении к этому разделу.

  • ST_IsSimple(g)

    Возвращает 1, если значение геометрии g является простым в соответствии со стандартом ISO SQL/MM Part 3: Spatial. ST_IsSimple() возвращает 0, если аргумент не является простым.

    Описание экземпляризуемых геометрических классов, приведённое в разделе 13.4.2 «Модель геометрии OpenGIS», включает конкретные условия, приводящие к классификации экземпляров классов как не простых.

    ST_IsSimple() обрабатывает свои аргументы, как описано во введении к этому разделу, с этим исключением:

    • Если геометрия имеет географическую SRS с долготой или широтой, выходящей за пределы диапазона, возникает ошибка:

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

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

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

  • ST_SRID(g [, srid])

    С единственным аргументом, представляющим допустимый объект геометрии g, ST_SRID() возвращает целое число, обозначающее идентификатор системы пространственной привязки (SRS), связанной с g.

    С необязательным вторым аргументом, представляющим допустимое значение SRID, ST_SRID() возвращает объект того же типа, что и его первый аргумент, со значением SRID, равным второму аргументу. Это только устанавливает значение SRID объекта; никакая трансформация координатных значений не выполняется.

    ST_SRID() обрабатывает свои аргументы, как описано во введении к этому разделу, с этим исключением:

    • Для синтаксиса с одним аргументом ST_SRID() возвращает SRID геометрии, даже если он ссылается на неопределённую SRS. Ошибка не возникает.

    ST_SRID(g, target_srid) и ST_Transform(g, target_srid) различаются следующим образом:

    • ST_SRID() изменяет значение SRID геометрии без преобразования её координат.

    • ST_Transform() преобразует координаты геометрии дополнительно к изменению её значения SRID.

    mysql> SET @g = ST_GeomFromText('LineString(1 1,2 2)', 0);
    mysql> SELECT ST_SRID(@g);
    +-------------+
    | ST_SRID(@g) |
    +-------------+
    |           0 |
    +-------------+
    mysql> SET @g = ST_SRID(@g, 4326);
    mysql> SELECT ST_SRID(@g);
    +-------------+
    | ST_SRID(@g) |
    +-------------+
    |        4326 |
    +-------------+
    

    Возможно создать геометрию в определённом SRID, передав в ST_SRID() результат одной из функций MySQL для создания пространственных значений вместе со значением SRID. Например:

    SET @g1 = ST_SRID(Point(1, 1), 4326);
    

    Однако этот метод создаёт геометрию в SRID 0, затем преобразует её в SRID 4326 (WGS 84). Предпочтительный вариант — создание геометрии с правильной системой пространственной привязки с самого начала. Например:

    SET @g1 = ST_PointFromText('POINT(1 1)', 4326);
    SET @g1 = ST_GeomFromText('POINT(1 1)', 4326);
    

    Двухаргументный вариант ST_SRID() полезен для задач, таких как исправление или изменение SRS геометрий, имеющих неправильный SRID.

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

Spec-Zone.ru

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