.net测试是否为多边形点

时间:2016-06-06 10:15:03

标签: c# .net gps

我开发了一款可从GPS设备接收GPS位置的应用。 这部分还可以。

在我的应用程序中,我得到了一个Polygon列表,我想测试我的位置巫婆多边形中的每个位置。

我的多边形是文本格式:" 30.5,15.6; 25.4,15; ..."

我问巫婆librairie我可以用来确定我的GPS位置是否是多边形。

要做到这一点,我已经添加了对System.Spatial的引用,但我不知道如何创建一个新的GeometryPolygon和我可以使用的方法来确定我的点是否在多边形中。

1 个答案:

答案 0 :(得分:0)

如果在 2D 中工作得足够好,您可以使用GraphicsPath中的System.Drawing.Drawing2D

这是在GraphicsPath应用程序中使用Console的最小示例:

using System.Drawing;
using System.Drawing.Drawing2D;

class Program
{
    static void Main(string[] args)
    {
        List<PointF> points = new List<PointF>();
        points.Add(new PointF(30.5f, 15.6f));
        points.Add(new PointF(25.4f, 5f));
        points.Add(new PointF(0, 20));

        float y = 11f;
        for (int x = 0; x < 30; x++)
        if (IsInPolygon(points, new PointF(x, y))) 
            Console.WriteLine("(" + x + ", y) is inside");
        Console.ReadLine();
    }


    public static bool IsInPolygon(List<PointF> points, PointF location)
    {
        using (GraphicsPath gp = new GraphicsPath())
        {
            gp.AddPolygon(points.ToArray());
            return gp.IsVisible(location);
        }
    }
}

您还需要添加对System.Drawing的引用。