创建一个描述矩形的DbGeography对象

3
我有两个点描述一个矩形:
一个东北角的纬度/经度和一个西南角的纬度/经度。
生成一个简单的矩形实体以存储在DbGeography字段中,正确而有效的方法是什么?
请注意,以后我想使用该字段确定一个点是否在这个矩形内。
我意识到我应该使用DbGeography.FromText(...)方法,但我不确定如何操作。
2个回答

8
FromText 方法需要一个WKT表示,这里是一个多边形的示例:
这样的内容应该可以解决问题:
DbGeography box = DbGeography.FromText(
    string.Format("POLYGON(({0} {1}, {0} {2}, {3} {2}, {3} {1}, {0} {1}))",
                         nwLongitude, 
                         nwLatitude,
                         seLatitude,
                         seLongitude), 4326);

如果你已经传递给 string.Format(),那么你真的需要调用 ToString() 吗? - canon
1
问题基于东北/西南,而答案是西北/东南,这会有影响吗?值的顺序保持不变吗?当我尝试时,盒子的方向是横向和倒置的。 - simbolo

0
如果您有东北和西南坐标,可以使用以下代码:
DbGeography box = DbGeography.FromText(
        string.Format("POLYGON(({0} {1}, {0} {2}, {3} {2}, {3} {1}, {0} {1}))",
                             swLongitude,  //nwLongitude, 
                             neLatitude, //nwLatitude,
                             swLatitude, //seLatitude,
                             neLongitude, //seLongitude
    ), 4326);

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