【问题标题】:Invalid MySQL axis-order on official doc site官方文档网站上的 MySQL 轴顺序无效
【发布时间】:2020-12-01 23:33:52
【问题描述】:

在 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.

【问题讨论】:

  • 空间坐标在 WKT 中按(latitude, longitude) 的顺序编码(我只在用户手册中找到间接参考 - 但我搜索时疏忽了),但在 GeoJSON 中按倒序编码 (tools.ietf.org/html/rfc7946#section-3.1.1)。跨度>

标签: mysql sql spatial


【解决方案1】:

显示问题与ST_GeomFromGeoJSON()srid可选参数有关,该参数的值默认值为4326(代表EPSG:4326坐标系“WGS84,未投影”)。它以latitudelongitude的顺序显示。

大多数情况下,数据存储在 EPSG:4326 并显示在 EPSG:3857Pseudo-MercatorSpherical Mercator Web Mercator),其中的组件(latitudelongitude)是相反的。

所以,你需要使用这样的方式

SELECT ST_AsText(ST_GeomFromGeoJSON(@JSON,1,3857));

为了按经度纬度顺序显示。

Demo

【讨论】:

  • 好的,但是 mysql 文档示例中有什么问题,为什么我不能复制结果?
  • @TarasPinchuk 页面底部的顺序应该是错误的 (POINT(102 0))。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 2017-05-15
  • 2023-03-24
  • 1970-01-01
  • 2018-11-09
  • 2018-10-22
相关资源
最近更新 更多