0

我正在尝试从我的表中选择位于特定多边形中的点。
这里我的表 test1 有几何类型的 data4 列,它包含:

2,3  
5,6  
7,10  

当我尝试以下查询时,它返回空行。请帮我解决错误。

DECLARE @g geometry;   
SET @g = geometry::STGeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))', 0);  
SELECT        *  
FROM            test1  
WHERE data4.STIntersects(@g) = 1;  

我也试过:

WHERE @g.STContains(geometry::STGeomFromText(test1.data4, 0))='True'   

这也没有奏效。

4

1 回答 1

1

如果您在标记问题时真的在谈论 MySQL,那么您使用的是完全错误的方法。STGeomFromText 是一个 SQL Server 函数。

做你想做的事的MySQL 查询很简单:

SELECT * 
FROM test1 
WHERE MBRContains(GeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))'), data4)

用于测试的 SQLfiddle

作为奖励,这里是如何为 SQL Server 编写它;

SELECT * 
FROM test1 
WHERE geometry::STGeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))',0)
          .STContains(data4) = 1

另一个 SQLfiddle

于 2013-03-01T18:49:10.523 回答