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

SQL Server Geography类型:为何两个独立多边形判定相交?

问题原因分析

你遇到的问题核心在于SQL Server的geography类型对多边形的环绕方向有严格要求,错误的方向会导致多边形被解析为“地球的剩余区域”(反多边形),从而出现看似不相交却返回相交的结果。

关键细节:

  • SQL Server的geography类型遵循右手定则:对于北半球的多边形,需要使用逆时针的坐标环绕方向;如果使用顺时针方向,该多边形会被系统识别为“整个地球除当前定义区域外的所有部分”的反多边形。
  • 你的@orderBounds2变量的WKT坐标顺序是顺时针的:
    POLYGON ((-32.4564 -23.97, 114.338 -23.97, 114.338 38.4001, -32.4564 38.4001, -32.4564 -23.97))
    
    坐标走向为西南→东南→东北→西北→西南,属于顺时针方向。系统会将其解析为除了这个矩形(南纬23.97至北纬38.4001、西经32.4564至东经114.338)之外的整个地球区域,自然包含了@geo所在的北纬69.2至71.10853的区域,因此STIntersects()返回1。

验证与解决方法:

  1. 用STIsValid()检查多边形有效性:
    SELECT @orderBounds2.STIsValid()
    
    方向错误的多边形会返回0,可通过STValidDetail()查看具体错误原因。
  2. 反转坐标顺序(使用STReverse())后再调用STIntersects(),此时多边形会被正确解析为定义的矩形区域,与@geo无重叠,返回0:
    SELECT @orderBounds2.STReverse().STIntersects(@geo)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:55:21