检测是否基于纬度/经度的多边形点

时间:2013-03-08 21:24:24

标签: c# .net maps latitude-longitude

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

另外,我知道SQL Server有一些几何函数,例如STIntersects,但为了使用它,我需要运行SQL Server 2008,每次检查都会涉及数据库连接,这是不可取的。

2 个答案:

答案 0 :(得分:1)

由于球体是平面的局部微分形,因此您可以使用在笛卡尔平面上工作的任何算法,例如: this SO question。如果多边形包含一个极点,您只需要完成平移坐标的工作。根据您的使用情况,您可以拒绝这些输入。

答案 1 :(得分:0)

我在互联网上闲逛了一下,发现this link

该示例使用C语言编写,但看起来很容易适应C#和Long / Lat坐标。您需要记住交叉线(NS / EW),并添加代码以在必要时进行补偿,或者在运行函数之前对LatLong值进行十进制转换(West和South用值< 0)。