12.16.11 空间 GeoJSON 函数

本节介绍在 GeoJSON 文档和空间值之间转换的函数。 GeoJSON 是用于编码几何/地理 Feature 的开放标准。有关更多信息,请参见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]])

从几何* g *生成一个 GeoJSON 对象。对象字符串具有连接字符集和排序规则。

如果任何参数为NULL,则返回值为NULL。如果任何非NULL参数无效,则会发生错误。

Flag Value Meaning
0 没有选择。如果未指定* options *,则为默认设置。
1 在输出中添加一个边界框。
2 将简短格式的 CRS URN 添加到输出中。默认格式是短格式(EPSG:srid)。
4 添加长格式的 CRS URN(urn:ogc:def:crs:EPSG::srid)。该标志覆盖标志 2.例如,选项值 5 和 7table 示相同(添加边界框和长格式 CRS URN)。
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]])

解析代 tableGeoJSON 对象的字符串* str *并返回几何。

如果任何参数为NULL,则返回值为NULL。如果任何非NULL参数无效,则会发生错误。

Option Value Meaning
1 拒绝文档并产生错误。如果未指定* options *,则为默认设置。
2, 3, 4 接受文档并去除坐标以获取更高的坐标尺寸。

GeoJSON 几何,要素和要素集合对象可能具有crs属性。解析函数解析urn:ogc:def:crs:EPSG::sridEPSG:srid名称空间中的命名 CRS URN,但不解析作为链接对象给出的 CRS。另外,urn:ogc:def:crs:OGC:1.3:CRS84被识别为 SRID4326.如果对象具有不被理解的 CRS,则会发生错误,但如果给出了可选的* srid *参数,则任何 CRS 都将被忽略,即使它无效。

根据 GeoJSON 规范中的规定,对于 GeoJSONImporting 的type成员(PointLineString等),解析是区分大小写的。该规范没有提及其他解析的大小写敏感性,而在 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)                         |
+--------------------------------------+
首页