最近在做地圖相關面積計算顯示工作,百度了很多關於多邊形面積計算方面公式和代碼,只能說賊費勁,最終完成了把結果展示下
原理:鞋帶公式
定義:所述鞋帶式或鞋帶算法(也稱為高斯的面積公式和測量員的式)是一種數學算法,以確定區域一個的簡單多邊形,其頂點由它們的描述笛卡爾坐標中的平面。用戶交叉倍增相應的坐標,找到包含多邊形的區域,並從周圍的多邊形中減去它,以找到其中的多邊形區域。它被稱為鞋帶配方,因為構成多邊形的坐標不斷交叉倍增,就像綁鞋帶一樣。它有時也被稱為鞋帶方法。
公式:
圖解:
舉例:
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