-1

私はNUTITEQGoogleApiに尋ねます。これをで実行する方法は知っていますcomputeArea()が、 には何も見つかりませんでしたNutiteq sdk/snapshot

前もって感謝します。

ps面積を計算する多くの方法を知っていますが、独自のものを呼び出したいですNutiteq

編集

組み込みのメソッドはありません。Jaak の迅速な回答に感謝します。そのため、2 つのメソッドを調査して見つけました。どちらも WSG84 Projection の下にあります。両方を比較する小さなプログラムを開発し、ポリゴンの面積を計算する KML ツールと比較しました。

地理座標から面積を測定する方法

地理的フレームワークへのリンク

そして、ニューハンプシャー大学のkmlツールでの結果

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

正確な使用にはあまり適していないことがわかりました (はい、0.5% 未満のエラーは多くの環境で不正確かもしれません) が、不規則なポリゴンの面積を計算する方法を学ぶのに役立ちます.

4

1 に答える 1