本节介绍用于在地理杂志文档和空间值之间转换的函数。Geojson是一种用于编码几何/地理特征的开放标准。有关更多信息,请参阅GydF4y2Bahttp://geojson.org.GydF4y2Ba。此处讨论的功能遵循Geojson规范修订版1.0。GydF4y2Ba
Geojson支持MySQL支持的相同几何/地理数据类型。除了从它们中提取几何对象之外,不支持特征和特派团对象。CRS支持仅限于识别SRID的值。GydF4y2Ba
MySQL还支持一个本地人GydF4y2Ba杰森GydF4y2Ba
数据类型和一组SQL函数以启用JSON值的操作。有关更多信息,请参阅GydF4y2Ba第11.5节“JSON数据类型”GydF4y2Ba, 和GydF4y2Ba第12.18节“JSON函数”GydF4y2Ba。GydF4y2Ba
从几何体生成地理杂志对象GydF4y2Ba
GGydF4y2Ba
。对象字符串具有连接字符集和排序规则。GydF4y2Ba如果有任何参数是GydF4y2Ba
空值GydF4y2Ba
,返回值是GydF4y2Ba空值GydF4y2Ba
。如果有任何非GydF4y2Ba空值GydF4y2Ba
参数无效,发生错误。GydF4y2Bamax_dec_digits.GydF4y2Ba
(如果指定),则限制坐标的十进制数字的数量,并导致输出的舍入。如果未指定,则此参数默认为其最大值2GydF4y2Ba32.GydF4y2Ba- 1.最小值为0。GydF4y2Ba选项GydF4y2Ba
如果已指定,则是位掩码。下表显示了允许的标志值。如果几何参数具有0的SRID,则即使对于请求一个的标志值,也没有生成CRS对象。GydF4y2Ba标志价值GydF4y2Ba 意义GydF4y2Ba 0.GydF4y2Ba 没有选择。这是默认情况下的GydF4y2Ba 选项GydF4y2Ba
未指定。GydF4y2Ba1GydF4y2Ba 将边界框添加到输出。GydF4y2Ba 2GydF4y2Ba 向输出添加短格式CRS URN。默认格式是短格式(GydF4y2Ba epsg:GydF4y2Ba
)。GydF4y2Ba萨里德GydF4y2Ba
4.GydF4y2Ba 添加一个长格式CRS URN(GydF4y2Ba URN:OGC:DEF:CRS:EPSG ::GydF4y2Ba
)。此标志覆盖标志2.例如,选项值为5和7表示相同(添加边界框和长格式CRS URN)。GydF4y2Ba萨里德GydF4y2Ba
MySQL> Select ST_ASGEOJSON(ST_GEOMFROMTEXT('POINT(11.11111 12.2222222),2);+ ------------------------------------------------------ + |st_asgeojson(st_geom fromtext('point(11.11111 12.222222),2)|+ ------------------------------------------------------ + |{“类型”:“点”,“坐标”:[11.11,12.22]} |+ ------------------------------------------------------ +GydF4y2Ba
st_geomfromgeojson(GydF4y2Ba
str.GydF4y2Ba
[,GydF4y2Ba选项GydF4y2Ba
[,GydF4y2Ba萨里德GydF4y2Ba
]])GydF4y2Ba解析一个字符串GydF4y2Ba
str.GydF4y2Ba
表示Geojson对象并返回几何图形。GydF4y2Ba如果有任何参数是GydF4y2Ba
空值GydF4y2Ba
,返回值是GydF4y2Ba空值GydF4y2Ba
。如果有任何非GydF4y2Ba空值GydF4y2Ba
参数无效,发生错误。GydF4y2Ba选项GydF4y2Ba
如果给定,则介绍如何处理包含高于2的坐标尺寸的几何形状的地理杂志文档。下表显示了允许的GydF4y2Ba选项GydF4y2Ba
价值观。GydF4y2Ba选项值GydF4y2Ba 意义GydF4y2Ba 1GydF4y2Ba 拒绝文档并产生错误。这是默认情况下的GydF4y2Ba 选项GydF4y2Ba
未指定。GydF4y2Ba2,3,4GydF4y2Ba 接受文档并剥离坐标以获得更高的坐标尺寸。GydF4y2Ba 选项GydF4y2Ba
目前2,3和4的值产生相同的效果。如果将来支持具有高于2的坐标尺寸的几何形状,则可以期望这些值产生不同的效果。GydF4y2Ba这GydF4y2Ba
萨里德GydF4y2Ba
参数,如果给定,则必须是32位无符号整数。如果没有给出,几何返回值具有4326的SRID。GydF4y2Ba如果GydF4y2Ba
萨里德GydF4y2Ba
指未定义的空间参考系统(SRS),一个GydF4y2Baer_srs_not_found.GydF4y2Ba
发生错误。GydF4y2Ba对于地理SRS几何参数,如果任何参数具有超出范围的经度或纬度,则会发生错误:GydF4y2Ba
如果经度值不在范围内(-180,180],则GydF4y2Ba
er_longitude_out_of_range.GydF4y2Ba
发生错误。GydF4y2Ba如果纬度值不在范围内[-90,90],则GydF4y2Ba
er_latitude_out_Of_Range.GydF4y2Ba
发生错误。GydF4y2Ba
所示的范围是度数。如果SRS使用另一个单元,则该范围使用其单元中的相应值。由于浮点算术,确切范围限制略微偏离。GydF4y2Ba
Geojson几何,功能和功能集合对象可能有一个GydF4y2Ba
CRS.GydF4y2Ba
财产。解析函数解析名为CRS URNS的解析GydF4y2BaURN:OGC:DEF:CRS:EPSG ::GydF4y2Ba
和GydF4y2Ba萨里德GydF4y2Ba
epsg:GydF4y2Ba
命名空间,但不是CRSS作为链接对象给出。还,GydF4y2Ba萨里德GydF4y2Ba
URN:OGC:DEF:CRS:OGC:1.3:CRS84GydF4y2Ba
被识别为SRID 4326.如果对象具有不明白的CRS,则发生错误,除了可选的情况下GydF4y2Ba萨里德GydF4y2Ba
参数给出,即使它无效,也会忽略任何CR。GydF4y2Ba如果一个GydF4y2Ba
CRS.GydF4y2Ba
指定与顶级对象SRID不同的SRID的成员,在Geojson文档的较低级别中找到了一个GydF4y2Baer_invalid_geojson_crs_not_top_level.GydF4y2Ba
发生错误。GydF4y2Ba如Geojson规范中所述,解析为区分大小写GydF4y2Ba
类型GydF4y2Ba
地质json输入的成员(GydF4y2Ba观点GydF4y2Ba
那GydF4y2BaLinestring.GydF4y2Ba
等等)。该规范对于其他解析的情况沉默是关于其他解析的敏感性,在MySQL中不区分大小写。GydF4y2Ba此示例显示了简单的Geojson对象的解析结果。观察坐标的顺序取决于所使用的SRID。GydF4y2Ba
MySQL> SET @JSON ='{“类型”:“点”,“坐标”:[102.0,0.0]}';mysql>选择st_astext(st_geomfromgeojson(@json));+ -------------------------------------------------st_astext(st_geomfromgeojson(@json))|+ -------------------------------------------------点(0 102)|+ ------------------------------------ + mysql> select st_srid(st_geomfromgeojson(@json));+ -------------------------------- + |st_srid(st_geomfromgeojson(@json))|+ -------------------------------- + | 4326 | +------------------------------------+ mysql> SELECT ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0)); +-------------------------------------------------+ | ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0)) | +-------------------------------------------------+ | POINT(102 0) | +-------------------------------------------------+