MySQL 8.0.27中ST_Intersection不支持地理SRS参数问题咨询
你不存在操作遗漏,该问题是官方文档表述不够精确导致的误解,MySQL 8.0对地理SRS下ST_Intersection函数的支持是分几何类型、逐步迭代完善的,你使用的8.0.27版本确实不支持地理SRS下两个POLYGON类型的求交运算。
官方文档中描述的「ST_Intersection支持笛卡尔或地理SRS类型的参数」是函数的整体能力说明,并不代表所有8.0小版本、所有几何类型组合都支持该能力。8.0.27版本仅实现了地理SRS下部分简单几何类型的ST_Intersection运算,尚未覆盖POLYGON与POLYGON的组合场景,所以触发了对应的报错;而SRID 0属于笛卡尔平面SRS,该场景的运算早已实现完成,所以可以正常执行。
可选解决方法如下:
- 升级MySQL实例到8.0.32及以上的稳定版本,该版本已完善了地理SRS下更多几何类型组合的ST_Intersection支持,可正常运行你提交的示例语句
- 若暂时无法升级实例版本,可先将4326坐标系的几何对象投影到适配你业务区域的平面坐标系,使用笛卡尔SRS完成求交运算后,再将结果投影回4326坐标系即可,注意提前评估坐标系转换带来的精度损耗是否符合业务要求
- 若你的运算范围极小、精度要求不高,也可临时使用SRID 0的笛卡尔模式做近似计算
内容的提问来源于stack exchange,提问作者Jinbo
相关产品推荐
相关产品推荐

