-1

I ask IN NUTITEQ, I know the way to perform this with GoogleApi with computeArea() but I have not found anything in Nutiteq sdk/snapshot.

Thanks in advance.

p.s. I know many methods to compute the area but I want to call something own of Nutiteq

EDIT:

There are no built-in Method, thanks for the fast answer Jaak, so I researched and found 2 Methods, both of them under WSG84 Projection. I developed a little programm to compare both of them and then I compared to a KML Tool, which computes area of a Polygon.

how-can-i-measure-area-from-geographic-coordinates

A-link-to-a-Geographic-Framework

And the results with a kml tool of University of New Hampshire

12197.38184

import java.lang.Math.*;
import net.sf.geographiclib.*;

public class ComputeAreaTest {

  private static double[][] moorwiese_coords = {{12.925634f,48.427168f}, 
                                                {12.926825f,48.427217f},                                          
                                                {12.926788f,48.428385f}, 
                                                {12.926069f,48.428374f},
                                                {12.925431f,48.42825f}, 
                                                {12.925624f,48.427192f},                                                 
                                                {12.925634f,48.427168f}};

  protected static double computeArea() {
      double area=0.0;
      double earthRadius = 6378137.0f;

      int size = moorwiese_coords.length;     

      if (size > 2) {
          double[] p1 = new double[2];
          double[] p2 = new double[2];

          for (int i=0; i<size-1; i++) {
              p1 = moorwiese_coords[i];
              p2 = moorwiese_coords[i+1];
              area += Math.toRadians(p2[0] - p1[0]) * (2 +  
              Math.sin(Math.toRadians(p1[1]) ) + Math.sin(Math.toRadians(p2[1])) );
          }

          area = area * earthRadius * earthRadius / 2.0;
      }   

      return area;  
  }

  protected static double computeAreaWithGeographicLib() {

    int size = moorwiese_coords.length;
    PolygonArea p = new PolygonArea(Geodesic.WGS84, false);

    try {

        for (int i=0;i<size;i++) {
            p.AddPoint(moorwiese_coords[i][4], moorwiese_coords[i][0]);
        }   
    }
    catch (Exception e) {}
    PolygonResult r = p.Compute();

    return r.area;        
  }

  public static void main(String[] args) {


  double areaGeoLib = computeAreaWithGeographicLib();  

  double area = computeArea();  

      System.out.println("Area: " + (-1)*area + "\nArea(GeoLib): "+areaGeoLib);
  }
}

Output Area: 12245.282587113787 Area(GeoLib): 12254.95547034964

I found not very suitable for accurate use ( Yes, under 0.5% Error may be unaccurate for many environments) but useful to learn how to compute the area of a irregular Polygon.

Community
  • 1
  • 1
  • 2
    Nutiteq has no built-in method for this. Like with distance - different methods give different results, depending on accuracy and projection. If you have good method, you can post it here as answer and I can add it to Utils. – JaakL Jun 12 '14 at 09:39
  • 1
    Thanks for the code and answers. Btw, you could add them as Answer (yes, you can answer your own questions) and accept this, so the question is not left open. – JaakL Jun 17 '14 at 07:12

1 Answers1

0

Thx, Jaak, I had not seen this freen Symbol to click "Right Answer", now I have seen, I must explicitly. So, an "answer" is in initial post.