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:).srid4 Добавить URN CRS в полном формате ( urn:ogc:def:crs:EPSG::). Этот флаг переопределяет флаг 2. Например, значения опций 5 и 7 означают то же самое (добавить прямоугольник ограничивающей рамки и URN CRS в полном формате).sridmysql>
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. Значения
options2, 3 и 4 в настоящее время производят одинаковый эффект. Если в будущем будут поддерживаться геометрии с размерностью координат выше 2, ожидается, что эти значения будут производить различные эффекты.Аргумент
srid, если задан, должен быть 32-битным беззнаковым целым числом. Если не задан, возвращаемое значение геометрии имеет SRID 4326.Объекты геометрии, функции и набора функций GeoJSON могут иметь свойство
crs. Функция парсинга парсит именованные URN CRS в пространствах имёнurn:ogc:def:crs:EPSG::иsridEPSG:, но не CRS, заданные как объекты ссылок. Такжеsridurn: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.