我有一个 SQL Server 2008 R2 表,它有一个geometry
(不是地理)列,以及一些其他“标准”列。我目前在表中有一行用于测试,并且该记录中的几何列具有具有以下边界的多边形,并且插入多边形时的 SRID 为 0(零):
POLYGON ((380 220, 380 575, 585 575, 380 575, 380 220))
我现在想使用 EF5 检查某个点是否在该多边形中。首先我创建点:
DbGeometry testPoint = DbGeometry.PointFromText("POINT(400 240)", 0);
List<LocationArea> tResults = (from s in db.LocationAreas
where testPoint .Intersects(SqlSpatialFunctions.MakeValid(s.AreaBounds))
select s).ToList();
SqlSpatialFunctions.MakeValid
在添加方法之前,我遇到的第一个错误是s.AreaBounds
结果不是“有效的”,而在代码中创建的点是。借助这篇出色的帖子修复了该问题-> query-dbgeometry-for-specific-latlng-value
现在,我可能会发疯(我一直在看这段代码),但是我总是返回一个空列表(count = 0),我相信这个点在多边形范围内。
所以,任何指针都会受到赞赏,就像我说的那样,可能只是我:-)
多米尼克