我在地图上使用 4个节点定义了一个矩形。
每个节点都是一对(X,Y)
X:纬度
Y:经度
X,Y :地理坐标(带双值)
我想检查该矩形内的点 (X,Y)是否。
这一点将成为用户的当前位置 (当前位置来自移动设备的GPS输出)
是否有特定的数学公式? 如何找到特定点是否属于矩形?
因为我想在C#中实现它。
答案 0 :(得分:4)
您可以为这4个点创建Rectangle结构,然后使用Rectangle.Contains Method (Point)检查矩形中是否存在该点。
对于浮点使用RectangleF及其RectangleF.Contains Method (PointF)
我还建议您查看SharpMap这是一个GIS应用程序的开源项目。它有Point,Line,Polygon,BoundingBox等类,所有这些类都有Intersect,GetBoundingBox,ToWKT等方法。它们对空间项目非常有用。
答案 1 :(得分:4)
根据这个
http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate(v=vs.110).aspx
经度可以从-180.0
到180.0
;所以必须准确与-180/180
,因为-180
\ ncontritude 等于 180
一个;想象一个矩形
(15, 178, 25, -178)
点(20, 179)
应该在矩形内,而(20, 177)
应该不是;这就是RectangleF.Contains()
在某些情况下可能不正确的原因;
// Just to show the idea with 180 lattitude;
// First 4 parameters could be crammed into RectagleF
// And last 2 parameters into PointF
public static Boolean WithinRectangle(Double lattitudeNorth,
Double longitudeWest,
Double lattitudeSouth,
Double longitudeEast,
Double lattitude,
Double longitude) {
if (lattitude > lattitudeNorth)
return false;
else if (lattitude < lattitudeSouth)
return false;
if (longitudeEast >= longitudeWest)
return ((longitude >= longitudeWest) && (longitude <= longitudeEast))
else
return (longitude >= longitudeWest);
return false;
}
答案 2 :(得分:1)
由于矩形的边与X轴和Y轴不平行, 我认为最好找PIP(Point in Polygon)问题, 更普遍的一个矩形。
所以,我测试了以下帖子中的代码,它似乎有效 对于具有地理WGS84坐标的多边形。
https://stackoverflow.com/a/7739297/805660
感谢您之前的回答