查询中带有EF Core Net拓扑套件的SQL Server未返回正确结果

时间:2019-05-10 17:33:40

标签: c# sql sql-server ef-core-2.2 nettopologysuite

我有一个要获取范围的Google Map,并将其发送到服务器以获取标记列表。

这是传递的一组示例参数:

neLat   60.11131083608817
neLng   -74.22879847513246
swLat   47.2231665957533
swLng   -157.85672816263252

为了进行健全性检查,我将它们放在这里,并且包装盒是我期望的:

http://bboxfinder.com/#47.223167,-157.856728,60.111311,-74.228798

这是我在查询中使用它们的方式:

var points = new[]
{
    new Coordinate(neLng.Value, neLat.Value), // TR
    new Coordinate(neLng.Value, swLat.Value), // BR
    new Coordinate(swLng.Value, swLat.Value), // BL
    new Coordinate(swLng.Value, neLat.Value), // TL
    new Coordinate(neLng.Value, neLat.Value), // TR
};

var fact = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326);
var poly = fact.CreatePolygon(points).Normalized().Reverse();
query = query.Where(x => x.Location.Within(poly));

这不会返回任何结果(尽管应该显示多个位置),但是如果我放大,它会返回结果,这没有任何意义。如果我将平移框略微移开,它们也会重新出现。

标记在地图上时,它们位于正确的位置。

几乎就像SQL Server的多边形在中心向上移动一样-当我向下移动边界框时,我仍然可以看到它们仍在结果中返回。

0 个答案:

没有答案