予想とは異なる動作をする次のコードを試しました。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