geometry
(地理ではない)列と他の「標準」列を持つSQL Server 2008 R2テーブルがあります。現在、テスト用にテーブルに 1 つの行があり、そのレコードのジオメトリ列には次の境界を持つ多角形があり、多角形を挿入したときの 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
今、私は夢中になる可能性があります (私はしばらくこのコードを見てきました)、しかし、私は常に空のリストを返し (カウント = 0)、ポイントはポリゴンの境界内にあると信じています.
だから、私が言ったように、どんなポインタも高く評価されますが、私だけかもしれません:-)
ドミニク