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

MySQL ST_Within判断点在多边形内返回0,Python验证为True,求问题原因

问题根源:坐标顺序完全写反了
  • MySQL的ST_GeomFromText遵循WKT标准,坐标格式要求为经度(X) 纬度(Y),但你在定义POLYGON时,把每个顶点的纬度和经度顺序搞反了,导致多边形的实际位置和你在Google Maps中绘制的完全不符——原本的多边形应该在高纬度区域(纬度54-62,经度2-24),但错误的坐标顺序让它跑到了低纬度区域(经度54-62,纬度2-23),和目标POINT的位置完全不重叠,所以返回0是合理的。
  • 你的Python代码是正确的:将每个顶点的第二个值作为经度、第一个值作为纬度,组合成(经度, 纬度)的格式传入Polygon,因此能正确判断点是否在多边形内。

修正后的MySQL查询语句

SELECT ST_Within(
    ST_GeomFromText('POINT(8.34047 54.91320)', 4326),
    ST_GeomFromText('POLYGON((10.486242310988 62.144619879597, 2.3124141859883 54.622536815923, 23.977453248488 55.403637023919, 10.486242310988 62.144619879597))', 4326)
) AS is_point_within_polygon;

该查询会返回1(true),因为现在POLYGON的坐标顺序与Python代码、Google Maps中的绘制一致,多边形位置正确,包含目标POINT。

内容的提问来源于stack exchange,提问作者quick-brown-fox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:57:30