在C#.Net中的圆形地理围栏

3

我在Bing地图上画了一个圆。现在我需要编写代码来确定一个点(纬度、经度)是在圆内还是圆外?

有没有c#.Net算法代码可用?


可能是测试一个点是否在圆内的方程的重复问题。 - Shai
@Shai 不是重复内容。GPS坐标的距离计算不使用sqrt(x²+y²)公式。 - ken2k
我的错。这个更适合 - Shai
实际上,如果圆的半径小于20公里左右,使用勾股定理不会有太大误差。您必须先将纬度/经度转换为笛卡尔坐标。如果您还没有笛卡尔坐标,Haversine算法通常更快。 - Peter Ritchie
1个回答

5

只需计算圆心与当前坐标之间的距离,并将此距离与圆半径进行比较(距离<=半径表示该坐标在圆内)。

要计算两点之间的距离,请使用Haversine公式

您可以在此处找到C#实现。


在Haversine公式中,我们需要以哪种格式提供经度和纬度?(是十进制还是度分秒) - GSReddy
@GSReddy 在我提供的 C# 示例中,纬度和经度被指定为十进制数(在 C# 中是 double),例如 4.574554(WGS84 系统)。 - ken2k
这个距离返回的是公里还是米? - GSReddy
@GSReddy 在我提供的C#示例中,您可以选择英里或公里。 - ken2k
谢谢。它运行良好。有没有想法如何实现多边形地理围栏。我已经搜索过了。我只找到了凸多边形的算法,而没有凹多边形的。请给我建议。 - GSReddy

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