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=valuekey— это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)) | +---------------------------------+ -
Принимает аргумент во внутреннем формате геометрии, меняет местами значения 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.