EntityFramework和空间搜索:点在多边形内部

3

我有一个名为“商店”的实体,它具有一个名为“位置”的DBGeorgpraphy列。

数据库中的一个样本商店具有一个Position值为POINT (145.034242 -37.825519)。

我正在尝试检索所有位于多边形内的商店。

var polygon = DbGeography.PolygonFromText(@"POLYGON((145.2898592378906 -37.66376896413059,
                                                     145.2898592378906 -37.93504877166811, 
                                                     144.7075838472656 -37.93504877166811, 
                                                     144.7075838472656 -37.66376896413059, 
                                                     145.2898592378906 -37.66376896413059))", 
                                                     4326);

var shops = db.Shops.Where(p => p.Position.Intersects(polygon));

我期望样例商店会出现在结果中,但实际上没有。有人能给我解释一下吗?
1个回答

4

答案是以相反的方向构建多边形,即逆时针方向。

var polygon = DbGeography.PolygonFromText(@"POLYGON((145.2898592378906 -37.66376896413059,
                                                     144.7075838472656 -37.66376896413059,
                                                     144.7075838472656 -37.93504877166811,
                                                     145.2898592378906 -37.93504877166811, 
                                                     145.2898592378906 -37.66376896413059))", 
                                                     4326);

2
这确实起到了作用。在我看来,添加为什么有所不同会极大地改善这个答案。 - Andrew Grothe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接