You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中GeoJSON/WKT转换时经纬度反转问题求助

问题分析:MySQL中GeoJSON与WKT经纬度反转的原因

结论

是的,你在存储数据时确实将经纬度的顺序反转了。

具体原因

  1. EPSG:4326的坐标定义
    EPSG:4326(WGS84)规范中,坐标的X轴对应经度,Y轴对应纬度。MySQL对SRID 4326的几何数据,内部遵循X-Y的存储顺序,也就是经度在前,纬度在后。

  2. 你的数据存储异常点
    从查询结果看:

  • WKT输出POINT(-0.5064713 51.2329694)符合WKT的X-Y(经度-纬度)规范,因此验证正确;
  • 但GeoJSON输出的坐标是[51.233, -0.5065],这是纬度在前、经度在后,完全违反了GeoJSON要求的经度-纬度顺序。

这说明你在插入数据时,错误地将纬度值放在了X(经度)的位置,经度值放在了Y(纬度)的位置。

验证方法

执行以下查询查看存储的原始坐标值:

SELECT ST_X(geometry) AS stored_x, ST_Y(geometry) AS stored_y FROM lookup_geometries WHERE name = "Newlands Corner";

你会发现:

  • stored_x返回51.2329694(实际应为经度-0.5064713)
  • stored_y返回-0.5064713(实际应为纬度51.2329694)
    这直接证实了存储时的顺序错误。

修复方案

如果需要修正现有数据,可以通过交换X和Y坐标来更新:

UPDATE lookup_geometries 
SET geometry = ST_SetSRID(ST_Point(ST_Y(geometry), ST_X(geometry)), 4326)
WHERE name = "Newlands Corner";

后续插入数据时,务必遵循经度在前,纬度在后的顺序,比如:

INSERT INTO lookup_geometries (name, geometry)
VALUES ("Newlands Corner", ST_GeomFromText('POINT(-0.5064713 51.2329694)', 4326));

内容的提问来源于stack exchange,提问作者James C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:35:01