我在地图上定义了一个有4个节点的矩形。
每个节点都是一对(X,Y)
X:纬度
Y:经度
X,Y:地理坐标(带双值)
我想检查点(X,Y)是否在该矩形内。
那一点将是用户的当前位置(当前位置来自移动设备的GPS输出)
那是否有特定的数学公式?如何找到特定点是否属于矩形?
因为我想在C#中实现它。
根据这个
http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate(v=vs.110).aspx
经度可以从-180.0
到180.0
;所以你必须准确-180/180
,因为-180
logitude等于180
one;想象一个矩形
(15, 178, 25, -178)
点qazxsw poi应该在矩形内,而qazxsw poi应该不是;这就是(20, 179)
在某些情况下可能不正确的原因;
(20, 177)
您可以为这4个点创建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;
}
检查矩形中是否存在该点。
对于浮点使用Rectangle及其Rectangle.Contains Method (Point)
我还建议你看看RectangleF这是一个GIS应用程序的开源项目。它有Point,Line,Polygon,BoundingBox等类,所有这些类都有Intersect,GetBoundingBox,ToWKT等方法。它们对空间项目非常有用。
由于矩形的边与X轴和Y轴不平行,我认为最好是寻找PIP(多边形点)问题,更常见的是矩形。
所以,我测试了以下帖子中的代码,它似乎适用于具有地理WGS84坐标的多边形。
RectangleF.Contains Method (PointF)
谢谢你以前的答案