C# 多邊形面積計算公式


  最近在做地圖相關面積計算顯示工作,百度了很多關於多邊形面積計算方面公式和代碼,只能說賊費勁,最終完成了把結果展示下

      原理:鞋帶公式

   定義:所述鞋帶式鞋帶算法(也稱為高斯的面積公式測量員的式是一種數學算法,以確定區域一個的簡單多邊形,其頂點由它們的描述笛卡爾坐標中的平面。用戶交叉倍增相應的坐標,找到包含多邊形的區域,並從周圍的多邊形中減去它,以找到其中的多邊形區域。它被稱為鞋帶配方,因為構成多邊形的坐標不斷交叉倍增,就像綁鞋帶一樣。它有時也被稱為鞋帶方法

     公式:{\ 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM