问题描述
在MySQL v.8.0中学习SPATIAL数据期间,在page上的文档中发现错误。 此查询:
SET @json = '{ "type": "Point","coordinates": [102.0,0.0]}';
SELECT ST_AsText(ST_GeomFromGeoJSON(@json));
应按以下轴顺序返回WKT:
POINT(102 0)
但是,它返回此顺序:
POINT(0 102)
也许我在等待您的帮助时犯了一个错误。
提琴https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b5a9de67da72e55cc43c6752920616f4。
解决方法
显示问题与ST_GeomFromGeoJSON()
的 srid 可选参数有关,该参数的 默认 值为 4326 (代表 EPSG:4326 坐标系“ WGS84,未投影” )。它以纬度,经度的顺序显示。
通常,数据存储在 EPSG:4326 中,并显示在 EPSG:3857 (伪墨卡托,球形墨卡托或 Web Mercator ),其中组件(纬度,经度)的顺序相反。
因此,您需要使用这种方式
SELECT ST_AsText(ST_GeomFromGeoJSON(@JSON,1,3857));
以按经度,纬度顺序显示。