在 SQL 服务器中处理空间数据时出现意外结果
Unexpected Results When Working With Spatial Data In SQL Server
考虑以下 SQL:
DECLARE @g1 AS GEOGRAPHY;
DECLARE @g2 AS GEOGRAPHY;
DECLARE @g3 AS GEOGRAPHY;
SET @g1 = GEOGRAPHY::STGeomFromText('POLYGON ((-97.5 33.0, -97.5 34.0, -96.5 34.0, -96.5 33.0, -97.5 33.0))', 4326);
SET @g2 = GEOGRAPHY::STGeomFromText('POINT (-97.5 33.5)', 4326);
SET @g3 = GEOGRAPHY::STGeomFromText('POINT (-98.0 35.0)', 4326);
SELECT @g1.STIntersects(@g2);
SELECT @g1.STIntersects(@g3);
我希望第一个结果是 1(真),因为点 (@g2) 在矩形的线上。但是,我希望第二个结果为 0(假),因为点 (@p3) 离区域 (@p1) 很远。然而,这两个结果都是 1(真)。
我觉得好像我从根本上缺少了一些东西。如果有人能解释一下,我将不胜感激。
由于没有收到对此问题的任何回复,我们 post 在 Reddit 上编辑了问题并收到了解释该问题的回复。这个post可以查看here.
考虑以下 SQL:
DECLARE @g1 AS GEOGRAPHY;
DECLARE @g2 AS GEOGRAPHY;
DECLARE @g3 AS GEOGRAPHY;
SET @g1 = GEOGRAPHY::STGeomFromText('POLYGON ((-97.5 33.0, -97.5 34.0, -96.5 34.0, -96.5 33.0, -97.5 33.0))', 4326);
SET @g2 = GEOGRAPHY::STGeomFromText('POINT (-97.5 33.5)', 4326);
SET @g3 = GEOGRAPHY::STGeomFromText('POINT (-98.0 35.0)', 4326);
SELECT @g1.STIntersects(@g2);
SELECT @g1.STIntersects(@g3);
我希望第一个结果是 1(真),因为点 (@g2) 在矩形的线上。但是,我希望第二个结果为 0(假),因为点 (@p3) 离区域 (@p1) 很远。然而,这两个结果都是 1(真)。
我觉得好像我从根本上缺少了一些东西。如果有人能解释一下,我将不胜感激。
由于没有收到对此问题的任何回复,我们 post 在 Reddit 上编辑了问题并收到了解释该问题的回复。这个post可以查看here.