找出矩形中的长/纬度

时间:2011-03-31 11:52:13

标签: c# maps coordinates geospatial

给定一个左上角的长/纬线和一个右下角的长/纬线,如何判断给定的长/纬线是否落在矩形内?

理想情况下,我会看到像

这样的东西
bool IsWithinArea(float topLeftLat,float topLeftLong,
   float bottomRightLat,float bottomRightLong,float testLat,float testLong)

更新

一个问题是从长/纬线创建的矩形可能来自旋转的地图,因此右下角并不总是大于左上角......

4 个答案:

答案 0 :(得分:5)

我们可以使它比琐碎的检查更有趣:

return new Rect(topLeftLat, topLeftLong, bottomRightLat - topLeftLat, bottomRightLong - topLeftLong)
      .Contains(testLat, testLong);

P.S。:Rect.Contains(...) method

答案 1 :(得分:2)

不确定我是否想要简单

bool IsWithinArea(float topLeftLat, float topLeftLong, float bottomRightLat, float bottomRightLong, float testLat, float testLong)
{
    return (testLat >= topLeftLat && testLat <= bottomRightLat && testLong >= topLeftLong && testLong <= bottomRightLong);
}

答案 2 :(得分:1)

假设Lat是x坐标,而long是y坐标,并假设坐标系的原点位于左上角:

public bool IsWithinArea(float topLeftLat,float topLeftLong,
       float bottomRightLat,float bottomRightLong,float testLat,float testLong) {

          return (testLat >= topLeftLat && testLat <= bottomRightLat && testLong >= topLeftLong && testLong <= bottomRightLong);

    }

答案 3 :(得分:1)

一种方法是将long / lat对标准化为简单的x / y坐标。然后它应该是一个简单的excersize来确定一个点是否落在矩形内。

long / lat to x / y转换可在此处找到:Convert Lat/Longs to X/Y Co-ordinates