Spec-Zone.ru › MySQL 5.7

12.16.11 Функции GeoJSON для пространственных данных

В этом разделе описываются функции для преобразования между документами GeoJSON и пространственными значениями. GeoJSON — это открытый стандарт кодирования геометрических/географических объектов. Дополнительную информацию можно найти на сайте http://geojson.org. Здесь рассматриваются функции, соответствующие спецификации GeoJSON версии 1.0.

GeoJSON поддерживает те же типы геометрических/географических данных, что и MySQL. Объекты Feature и FeatureCollection не поддерживаются, за исключением извлечения геометрических объектов из них. Поддержка CRS ограничена значениями, идентифицирующими SRID.

MySQL также поддерживает собственный тип данных JSON и набор функций SQL для работы со значениями JSON. Дополнительную информацию см. в разделе Раздел 11.5, «Тип данных JSON» и Раздел 12.17, «Функции JSON».

  • ST_AsGeoJSON(g [, max_dec_digits [, options]])

    Генерирует объект GeoJSON из геометрии g. Строка объекта имеет кодировку и сортировку соединения.

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

    max_dec_digits, если указан, ограничивает количество десятичных знаков для координат и округляет результат. Если не указан, по умолчанию это максимальное значение 232 − 1. Минимальное значение — 0.

    options, если указан, представляет собой битовую маску. Следующая таблица показывает допустимые значения флагов. Если у аргумента geometry есть SRID 0, объект CRS не создаётся, даже если флаговые значения требуют его.

    Значение флага Значение
    0 Нет опций. Это значение по умолчанию, если options не указано.
    1 Добавить прямоугольник ограничивающей рамки в вывод.
    2 Добавить URN CRS в сокращённом формате в вывод. Формат по умолчанию — сокращённый формат (EPSG:srid).
    4 Добавить URN CRS в полном формате (urn:ogc:def:crs:EPSG::srid). Этот флаг переопределяет флаг 2. Например, значения опций 5 и 7 означают то же самое (добавить прямоугольник ограничивающей рамки и URN CRS в полном формате).
    mysql> SELECT ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2);
    +-------------------------------------------------------------+
    | ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2) |
    +-------------------------------------------------------------+
    | {"type": "Point", "coordinates": [11.11, 12.22]}            |
    +-------------------------------------------------------------+
    
  • ST_GeomFromGeoJSON(str [, options [, srid]])

    Парсит строку str, представляющую объект GeoJSON, и возвращает геометрию.

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

    options, если задано, описывает, как обрабатывать документы GeoJSON, содержащие геометрии с размерностью координат выше 2. Следующая таблица показывает допустимые значения options.

    Значение опции Значение
    1 Отклонить документ и вывести ошибку. Это значение по умолчанию, если options не указано.
    2, 3, 4 Принять документ и удалить координаты для размерностей координат выше 2.

    Значения options 2, 3 и 4 в настоящее время производят одинаковый эффект. Если в будущем будут поддерживаться геометрии с размерностью координат выше 2, ожидается, что эти значения будут производить различные эффекты.

    Аргумент srid, если задан, должен быть 32-битным беззнаковым целым числом. Если не задан, возвращаемое значение геометрии имеет SRID 4326.

    Объекты геометрии, функции и набора функций GeoJSON могут иметь свойство crs. Функция парсинга парсит именованные URN CRS в пространствах имён urn:ogc:def:crs:EPSG::srid и EPSG:srid, но не CRS, заданные как объекты ссылок. Также urn:ogc:def:crs:OGC:1.3:CRS84 распознаётся как SRID 4326. Если объект имеет нераспознанный CRS, возникает ошибка, за исключением случая, когда задан необязательный аргумент srid; в этом случае любой CRS игнорируется, даже если он некорректен.

    Как указано в спецификации GeoJSON, парсинг чувствителен к регистру для члена type входных данных GeoJSON (Point, LineString и так далее). Спецификация не содержит информации о чувствительности к регистру при других операциях парсинга, который в MySQL нечувствителен к регистру.

    Этот пример показывает результат парсинга для простого объекта GeoJSON:

    mysql> SET @json = '{ "type": "Point", "coordinates": [102.0, 0.0]}';
    mysql> SELECT ST_AsText(ST_GeomFromGeoJSON(@json));
    +--------------------------------------+
    | ST_AsText(ST_GeomFromGeoJSON(@json)) |
    +--------------------------------------+
    | POINT(102 0)                         |
    +--------------------------------------+
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/spatial-geojson-functions.html

Spec-Zone.ru

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