Функции GIS в 5.3.3
Основная информация о существующих пространственных объектах находится в разделе Географические объекты базы знаний. Страница Пространственные расширения в руководстве MySQL также применима к MariaDB.
Выпуск MariaDB 5.3.3 содержит код, улучшающий пространственные возможности в MariaDB.
MySQL работает с пространственными данными на основе стандартов OpenGIS, в частности OpenGIS SFS (Простой доступ к функциям, вариант SQL).
Первоначальная поддержка была основана на версии 05-134 стандарта. MariaDB реализует подмножество среды «SQL с типами геометрии», предложенной OGC. И среда SQL была расширена набором типов геометрии.
MariaDB поддерживает пространственные расширения для работы с пространственными объектами. Эти функции доступны для таблиц Aria, MyISAM, InnoDB, NDB и ARCHIVE.
Для пространственных столбцов Aria и MyISAM поддерживают как SPATIAL, так и не-SPATIAL индексы. Другие движки хранения поддерживают не-SPATIAL индексы.
Последние изменения в коде направлены на удовлетворение требований OpenGIS. Одной из недоработок предыдущих версий было то, что функции, проверяющие пространственные отношения, не учитывали фактическую форму объекта, а вместо этого работали только с их ограничивающими прямоугольниками. Эти устаревшие функции оставлены без изменений, а новые, правильно работающие функции имеют префикс «ST_», в соответствии с последними требованиями OpenGIS. Также были добавлены операции над геометрическими объектами.
Список новых функций:
Пространственные операторы. Они производят новые геометрии.
| Имя | Описание |
|---|---|
| ST_UNION(A, B) | объединение A и B |
| ST_INTERSECTION(A, B) | пересечение A и B |
| ST_SYMDIFFERENCE(A, B) | симметричная разность, непересекающиеся части A и B |
| ST_BUFFER(A, radius) | возвращает форму области, находящейся на расстоянии 'radius' от формы A. |
Предикаты, возвращают булевый результат отношения
| Имя | Описание |
|---|---|
| ST_INTERSECTS(A, B) | если A и B имеют пересечение |
| ST_CROSSES(A, B) | если A и B пересекаются |
| ST_EQUALS(A, B) | если A и B равны |
| ST_WITHIN(A, B) | если A лежит внутри B |
| ST_CONTAINS(A,B) | если B лежит внутри A |
| ST_DISJOINT(A,B) | если A и B не имеют пересечения |
| ST_TOUCHES(A,B) | если A касается B |
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/gis-features-in-533/