最近在做地图相关面积计算显示工作,百度了很多关于多边形面积计算方面公式和代码,只能说贼费劲,最终完成了把结果展示下
原理:鞋带公式
定义:所述鞋带式或鞋带算法(也称为高斯的面积公式和测量员的式)是一种数学算法,以确定区域一个的简单多边形,其顶点由它们的描述笛卡尔坐标中的平面。用户交叉倍增相应的坐标,找到包含多边形的区域,并从周围的多边形中减去它,以找到其中的多边形区域。它被称为鞋带配方,因为构成多边形的坐标不断交叉倍增,就像绑鞋带一样。它有时也被称为鞋带方法。
公式:
图解:
举例:
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