我尝试了以下代码,其行为与我的预期不同。DbGeometry.FromText 应该从 WKT 创建一个对象。但是, contains 函数似乎只适用于 Polygon WKT,而不适用于圆形或线串(我在示例中绘制了一个菱形)。在这些示例中,所有几何图形都“包含”0,0,但只有多边形实际上会产生我预期的值。知道发生了什么吗?我是在代码中遗漏了什么,还是遗漏了一些关于 DbGeometry 如何工作的理论?
DbGeometry point = DbGeometry.FromText("POINT (0 0)");
DbGeometry circle = DbGeometry.FromText("CIRCULARSTRING(0 -1, 1 0, 0 1, -1 0, 0 -1)");
Console.WriteLine(circle.Contains(point)); // returns false
var diamond = DbGeometry.FromText("LINESTRING(0 -1, 1 0, 0 1, -1 0, 0 -1)");
Console.WriteLine(diamond.Contains(point)); //returns false
var polygon = DbGeometry.FromText("POLYGON((-1 -1, -1 1, 1 1, 1 -1, -1 -1))");
Console.WriteLine(polygon.Contains(point)); //returns true