Spec-Zone.ru › MySQL 9.2

14.16.6 Функции преобразования форматов геометрии

MySQL поддерживает функции, перечисленные в этом разделе, для преобразования значений геометрии из внутреннего формата геометрии в формат WKT или WKB, или для перестановки порядка координат X и Y.

Также существуют функции для преобразования строки из форматов WKT или WKB во внутренний формат геометрии. См. Раздел 14.16.3, «Функции, создающие значения геометрии из значений WKT» и Раздел 14.16.4, «Функции, создающие значения геометрии из значений WKB».

Функции, такие как ST_GeomFromText(), которые принимают аргументы коллекции геометрии WKT, понимают как синтаксис стандарта OpenGIS 'GEOMETRYCOLLECTION EMPTY', так и нестандартный синтаксис MySQL 'GEOMETRYCOLLECTION()'. Другой способ создания пустой коллекции геометрии — вызов GeometryCollection() без аргументов. Функции, такие как ST_AsWKT(), которые генерируют значения WKT, генерируют 'GEOMETRYCOLLECTION EMPTY' стандартный синтаксис:

mysql> SET @s1 = ST_GeomFromText('GEOMETRYCOLLECTION()');
mysql> SET @s2 = ST_GeomFromText('GEOMETRYCOLLECTION EMPTY');
mysql> SELECT ST_AsWKT(@s1), ST_AsWKT(@s2);
+--------------------------+--------------------------+
| ST_AsWKT(@s1)            | ST_AsWKT(@s2)            |
+--------------------------+--------------------------+
| GEOMETRYCOLLECTION EMPTY | GEOMETRYCOLLECTION EMPTY |
+--------------------------+--------------------------+
mysql> SELECT ST_AsWKT(GeomCollection());
+----------------------------+
| ST_AsWKT(GeomCollection()) |
+----------------------------+
| GEOMETRYCOLLECTION EMPTY   |
+----------------------------+

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

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

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

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

  • По умолчанию географические координаты (широта, долгота) интерпретируются в порядке, указанном системой пространственной привязки аргументов геометрии. Можно указать необязательный аргумент options для переопределения порядка осей по умолчанию. options состоит из списка key=value, разделённых запятыми. Единственное разрешённое значение key — это axis-order, с разрешёнными значениями lat-long, long-lat и srid-defined (по умолчанию).

    Если аргумент options равен NULL, возвращаемое значение является NULL. Если аргумент options некорректен, возникает ошибка с указанием причины.

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

Эти функции доступны для преобразования форматов или перестановки координат:

  • ST_AsBinary(g [, options]), ST_AsWKB(g [, options])

    Преобразует значение во внутреннем формате геометрии в его представление WKB и возвращает двоичный результат.

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

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

    mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)', 4326);
    mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g)));
    +-----------------------------------------+
    | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))) |
    +-----------------------------------------+
    | LINESTRING(5 0,10 5,15 10)              |
    +-----------------------------------------+
    mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat'))) |
    +----------------------------------------------------------------+
    | LINESTRING(0 5,5 10,10 15)                                     |
    +----------------------------------------------------------------+
    mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long'))) |
    +----------------------------------------------------------------+
    | LINESTRING(5 0,10 5,15 10)                                     |
    +----------------------------------------------------------------+
    
  • ST_AsText(g [, options]), ST_AsWKT(g [, options])

    Преобразует значение во внутреннем формате геометрии в его представление WKT и возвращает строковый результат.

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

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

    mysql> SET @g = 'LineString(1 1,2 2,3 3)';
    mysql> SELECT ST_AsText(ST_GeomFromText(@g));
    +--------------------------------+
    | ST_AsText(ST_GeomFromText(@g)) |
    +--------------------------------+
    | LINESTRING(1 1,2 2,3 3)        |
    +--------------------------------+
    

    Вывод для MultiPoint значений включает скобки вокруг каждой точки. Например:

    mysql> SELECT ST_AsText(ST_GeomFromText(@mp));
    +---------------------------------+
    | ST_AsText(ST_GeomFromText(@mp)) |
    +---------------------------------+
    | MULTIPOINT((1 1),(2 2),(3 3))   |
    +---------------------------------+
    
  • ST_SwapXY(g)

    Принимает аргумент во внутреннем формате геометрии, меняет местами значения X и Y каждой пары координат в геометрии и возвращает результат.

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

    mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)');
    mysql> SELECT ST_AsText(@g);
    +----------------------------+
    | ST_AsText(@g)              |
    +----------------------------+
    | LINESTRING(0 5,5 10,10 15) |
    +----------------------------+
    mysql> SELECT ST_AsText(ST_SwapXY(@g));
    +----------------------------+
    | ST_AsText(ST_SwapXY(@g))   |
    +----------------------------+
    | LINESTRING(5 0,10 5,15 10) |
    +----------------------------+
    

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

Spec-Zone.ru

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