检查地图(lat,lon)上的地理GPS点是否在定义的矩形内

问题描述 投票:2回答:3

我在地图上定义了一个有4个节点的矩形。

每个节点都是一对(X,Y)

X:纬度

Y:经度

X,Y:地理坐标(带双值)

我想检查点(X,Y)是否在该矩形内。

那一点将是用户的当前位置(当前位置来自移动设备的GPS输出)

那是否有特定的数学公式?如何找到特定点是否属于矩形?

因为我想在C#中实现它。

c# coordinates point rectangles
3个回答
4
投票

根据这个

http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate(v=vs.110).aspx

经度可以从-180.0180.0;所以你必须准确-180/180,因为-180 logitude等于180 one;想象一个矩形

  (15, 178, 25, -178)

点qazxsw poi应该在矩形内,而qazxsw poi应该不是;这就是(20, 179)在某些情况下可能不正确的原因;

(20, 177)

4
投票

您可以为这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等方法。它们对空间项目非常有用。


1
投票

由于矩形的边与X轴和Y轴不平行,我认为最好是寻找PIP(多边形点)问题,更常见的是矩形。

所以,我测试了以下帖子中的代码,它似乎适用于具有地理WGS84坐标的多边形。

RectangleF.Contains Method (PointF)

谢谢你以前的答案

© www.soinside.com 2019 - 2024. All rights reserved.