我不想将我的地理数据转换为几何数据,只是为了在STIntersect中返回true。
以下是SQL代码:
DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(1, 1, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
以下代码返回 false (0),但是如果我使用以下代码:DECLARE @point GEOMETRY = GEOMETRY::Point(1, 1, 4326)
DECLARE @polygon GEOMETRY = GEOMETRY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
它返回true,我有什么遗漏的吗?我知道的是地理是3D平面,而几何是一个平面地图,但我正在使用地球来计算点是否在多边形内。
PS:使用STContains、STWithin、STOverlaps也不起作用。
使用Microsoft SQL Server 2012