Polygon area calculation using Latitude and Longitude generated from Cartesian space and a world file

后端 未结 7 1901
孤街浪徒
孤街浪徒 2020-11-27 22:16

Given a series of GPS coordinate pairs, I need to calculate the area of a polygon (n-gon). This is relatively small (not larger than 50,000 sqft). The geocodes are created

7条回答
  •  迷失自我
    2020-11-27 22:43

    I checked on internet for various polygon area formulas(or code) but did not find any one good or easy to implement.

    Now I have written the code snippet to calculate area of a polygon drawn on earth surface. The polygon can have n vertices with each vertex has having its own latitude longitude.

    Few Important Points

    1. The array input to this function will have "n + 1" elements. The last element will have same values as that of first one.
    2. I have written very basic C# code, so that guys can also adapt it in other language.
    3. 6378137 is the value of earth radius in metres.
    4. The output area will have unit of square metres

      private static double CalculatePolygonArea(IList coordinates)
      {
          double area = 0;
      
          if (coordinates.Count > 2)
          {
              for (var i = 0; i < coordinates.Count - 1; i++)
              {
                  MapPoint p1 = coordinates[i];
                  MapPoint p2 = coordinates[i + 1];
                  area += ConvertToRadian(p2.Longitude - p1.Longitude) * (2 + Math.Sin(ConvertToRadian(p1.Latitude)) + Math.Sin(ConvertToRadian(p2.Latitude)));
              }
      
              area = area * 6378137 * 6378137 / 2;
          }
      
          return Math.Abs(area);
      }
      
      private static double ConvertToRadian(double input)
      {
          return input * Math.PI / 180;
      }
      

提交回复
热议问题