我遇到了无法解释的 MSSQL 地理问题。假设我受到数学挑战,但似乎以下点不应与以下多边形相交:
DECLARE @t_point geography;
DECLARE @t_polygon geography;
set @t_polygon = geography::STPolyFromText('POLYGON((1 1, 5 5, 5 0, 1 1))', 4326);
set @t_point = geography::Point(0, 0, 4326);
select
@t_polygon.STAsText(),
@t_point.STAsText(),
@t_point.STIntersects(@t_polygon),
@t_polygon.STIntersects(@t_point);
但是,当我执行此操作时,我得到以下结果:
POLYGON ((1 1, 5 5, 5 0, 1 1)) POINT (0 0) 1 1
最后两列都是 1,我期望 0。空间中 0,0 的点如何与不接触或不包含 0,0 的多边形相交?
-1, -1 与 100, 100 具有相同的行为。
即使我将点更改为完全不同空间中的多边形,MSSQL 也会说它们相交。
set @t_polygon = geography::STPolyFromText('POLYGON((10 10, 50 50, 50 10, 10 10))', 4326);
set @t_point = geography::STPolyFromText('POLYGON((1 1, 5 5, 5 0, 1 1))', 4326);
我也试过 STGeomFromText()。
我确定我一定做错了什么,但我无法想象那可能是什么。