检测如果点在纬度/经度基于多边形

本文关键字:经度 多边形 纬度 如果 检测 | 更新日期: 2023-09-27 18:03:15

我想检测,仅在服务器端使用c#,基于经纬度的坐标是否在由经纬度点组成的区域(多边形)内。我相信这样做的正确方法是光线投射,但也许已经有一个c#实现在那里,因为它不是微不足道的?

另外,我知道SQL Server有一些几何功能,如STIntersects,但为了使用,我需要SQL Server 2008运行和每次检查都涉及数据库连接,这是不希望的。

检测如果点在纬度/经度基于多边形

因为球面是平面的局部微分同构,你可以使用在笛卡尔平面上工作的任何算法,例如这个SO问题。你只需要做平移坐标的工作如果你的多边形包含一个极点。根据您的用例,也许您可以拒绝这些输入。

我在网上找了一下,找到了这个链接。

这个例子是用C写的,但是看起来它可以很容易地适应c#和Long/Lat坐标。您需要记住交叉线(NS/EW),并添加代码以在必要时进行补偿,或者在运行函数之前对LatLong值进行十进制转换(西部和南部用值<0) .