最近在做地图相关面积计算显示工作,百度了很多关于多边形面积计算方面公式和代码,只能说贼费劲,最终完成了把结果展示下

      原理:鞋带公式

   定义:所述鞋带式鞋带算法(也称为高斯的面积公式测量员的式是一种数学算法,以确定区域一个的简单多边形,其顶点由它们的描述笛卡尔坐标中的平面。用户交叉倍增相应的坐标,找到包含多边形的区域,并从周围的多边形中减去它,以找到其中的多边形区域。它被称为鞋带配方,因为构成多边形的坐标不断交叉倍增,就像绑鞋带一样。它有时也被称为鞋带方法

     公式:{\ mathbf {A}} _ {{\ text {quad。}}} = {1 \ over 2} | x_ {1} y_ {2} + x_ {2} y_ {3} + x_ {3} y_ { 4} + X_ {4} Y_ {1} -x_ {2} Y_ {1} -x_ {3} Y_ {2} -x_ {4} Y_ {3} -x_ {1} Y_ {4} |

     图解:

      

    举例:

 

    C#代码:

 double CalculateArea(List<Point> points)
        {
            var count = points.Count;
            double area0 = 0;
            double area1 = 0;
            for (int i = 0; i < count; i++)
            {
                var x= points[i].X;
                var y= i + 1 < count ? points[i + 1].Y: points[0].Y;
                area0 += x* y;

                lat = points[i].Y;
                lon = i + 1 < count ? points[i + 1].X: points[0].X;
                area1 += x* y;
            }
            return Math.Round(Math.Abs(0.5 * (area0 - area1) ), 2);
        }

      附:如果XY是经纬度,请在上述结果上乘 9101160000.085981

 

posted on 2018-12-18 10:45  Khandasas  阅读(4599)  评论(1编辑  收藏  举报